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

#ifndef __gnu_xml_dom_DomEntity__
#define __gnu_xml_dom_DomEntity__

#pragma interface

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

class gnu::xml::dom::DomEntity : public ::gnu::xml::dom::DomExtern
{

public: // actually protected
  DomEntity(::gnu::xml::dom::DomDocument *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *);
public:
  virtual ::java::lang::String * getNotationName();
  virtual ::java::lang::String * getInputEncoding();
  virtual ::java::lang::String * getXmlEncoding();
  virtual ::java::lang::String * getXmlVersion();
  virtual ::java::lang::String * getBaseURI();
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::xml::dom::DomExtern)))) notation;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_dom_DomEntity__
