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

#ifndef __gnu_xml_stream_CharactersImpl__
#define __gnu_xml_stream_CharactersImpl__

#pragma interface

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

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

public: // actually protected
  CharactersImpl(::javax::xml::stream::Location *, ::java::lang::String *, jboolean, jboolean, jboolean);
public:
  virtual jint getEventType();
  virtual ::java::lang::String * getData();
  virtual jboolean isWhiteSpace();
  virtual jboolean isCData();
  virtual jboolean isIgnorableWhiteSpace();
  virtual void writeAsEncodedUnicode(::java::io::Writer *);
public: // actually protected
  ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::xml::stream::XMLEventImpl)))) data;
  jboolean whitespace;
  jboolean cdata;
  jboolean ignorableWhitespace;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_stream_CharactersImpl__
