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

#ifndef __gnu_xml_stream_NotationDeclarationImpl__
#define __gnu_xml_stream_NotationDeclarationImpl__

#pragma interface

#include <gnu/xml/stream/XMLEventImpl.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace stream
      {
          class NotationDeclarationImpl;
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace stream
      {
          class Location;
      }
    }
  }
}

class gnu::xml::stream::NotationDeclarationImpl : public ::gnu::xml::stream::XMLEventImpl
{

public: // actually protected
  NotationDeclarationImpl(::javax::xml::stream::Location *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *);
public:
  virtual jint getEventType();
  virtual ::java::lang::String * getName();
  virtual ::java::lang::String * getPublicId();
  virtual ::java::lang::String * getSystemId();
  virtual void writeAsEncodedUnicode(::java::io::Writer *);
public: // actually protected
  ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::xml::stream::XMLEventImpl)))) name;
  ::java::lang::String * publicId;
  ::java::lang::String * systemId;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_stream_NotationDeclarationImpl__
