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

#ifndef __gnu_xml_stream_ProcessingInstructionImpl__
#define __gnu_xml_stream_ProcessingInstructionImpl__

#pragma interface

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

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

public: // actually protected
  ProcessingInstructionImpl(::javax::xml::stream::Location *, ::java::lang::String *, ::java::lang::String *);
public:
  virtual jint getEventType();
  virtual ::java::lang::String * getTarget();
  virtual ::java::lang::String * getData();
  virtual void writeAsEncodedUnicode(::java::io::Writer *);
public: // actually protected
  ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::xml::stream::XMLEventImpl)))) target;
  ::java::lang::String * data;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_stream_ProcessingInstructionImpl__
