
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_xml_dom_DomProcessingInstruction__
#define __gnu_xml_dom_DomProcessingInstruction__

#pragma interface

#include <gnu/xml/dom/DomNode.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace dom
      {
          class DomDocument;
          class DomProcessingInstruction;
      }
    }
  }
}

class gnu::xml::dom::DomProcessingInstruction : public ::gnu::xml::dom::DomNode
{

public: // actually protected
  DomProcessingInstruction(::gnu::xml::dom::DomDocument *, ::java::lang::String *, ::java::lang::String *);
public:
  virtual ::java::lang::String * getTarget();
  virtual ::java::lang::String * getNodeName();
  virtual ::java::lang::String * getData();
  virtual ::java::lang::String * getNodeValue();
  virtual void setData(::java::lang::String *);
  virtual void setNodeValue(::java::lang::String *);
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::xml::dom::DomNode)))) target;
  ::java::lang::String * data;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_dom_DomProcessingInstruction__
