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

#ifndef __gnu_xml_stream_XMLEventAllocatorImpl__
#define __gnu_xml_stream_XMLEventAllocatorImpl__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace stream
      {
          class XMLEventAllocatorImpl;
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace stream
      {
          class XMLStreamReader;
        namespace events
        {
            class XMLEvent;
        }
        namespace util
        {
            class XMLEventAllocator;
            class XMLEventConsumer;
        }
      }
    }
  }
}

class gnu::xml::stream::XMLEventAllocatorImpl : public ::java::lang::Object
{

public: // actually protected
  XMLEventAllocatorImpl();
public:
  virtual ::javax::xml::stream::events::XMLEvent * allocate(::javax::xml::stream::XMLStreamReader *);
  virtual void allocate(::javax::xml::stream::XMLStreamReader *, ::javax::xml::stream::util::XMLEventConsumer *);
  virtual ::javax::xml::stream::util::XMLEventAllocator * newInstance();
public: // actually protected
  virtual jboolean isWhitespace(::java::lang::String *);
  ::java::util::Map * __attribute__((aligned(__alignof__( ::java::lang::Object)))) entityDeclarations;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_stream_XMLEventAllocatorImpl__
