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

#ifndef __gnu_xml_dom_DomNsNode__
#define __gnu_xml_dom_DomNsNode__

#pragma interface

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

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

public: // actually package-private
  DomNsNode(jshort, ::gnu::xml::dom::DomDocument *, ::java::lang::String *, ::java::lang::String *);
  DomNsNode(jshort, ::gnu::xml::dom::DomDocument *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *);
public:
  virtual ::java::lang::String * getNodeName();
public: // actually package-private
  virtual void setNodeName(::java::lang::String *);
public:
  virtual ::java::lang::String * getNamespaceURI();
public: // actually package-private
  virtual void setNamespaceURI(::java::lang::String *);
public:
  virtual ::java::lang::String * getPrefix();
  virtual void setPrefix(::java::lang::String *);
  virtual ::java::lang::String * getLocalName();
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::xml::dom::DomNode)))) name;
  ::java::lang::String * namespace$;
  ::java::lang::String * prefix;
  ::java::lang::String * localName;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_dom_DomNsNode__
