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

#ifndef __javax_xml_stream_XMLStreamReader__
#define __javax_xml_stream_XMLStreamReader__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace xml
    {
      namespace namespace$
      {
          class NamespaceContext;
          class QName;
      }
      namespace stream
      {
          class Location;
          class XMLStreamReader;
      }
    }
  }
}

class javax::xml::stream::XMLStreamReader : public ::java::lang::Object
{

public:
  virtual ::java::lang::Object * getProperty(::java::lang::String *) = 0;
  virtual jint next() = 0;
  virtual void require(jint, ::java::lang::String *, ::java::lang::String *) = 0;
  virtual ::java::lang::String * getElementText() = 0;
  virtual jint nextTag() = 0;
  virtual jboolean hasNext() = 0;
  virtual void close() = 0;
  virtual ::java::lang::String * getNamespaceURI(::java::lang::String *) = 0;
  virtual jboolean isStartElement() = 0;
  virtual jboolean isEndElement() = 0;
  virtual jboolean isCharacters() = 0;
  virtual jboolean isWhiteSpace() = 0;
  virtual ::java::lang::String * getAttributeValue(::java::lang::String *, ::java::lang::String *) = 0;
  virtual jint getAttributeCount() = 0;
  virtual ::javax::xml::namespace$::QName * getAttributeName(jint) = 0;
  virtual ::java::lang::String * getAttributeNamespace(jint) = 0;
  virtual ::java::lang::String * getAttributeLocalName(jint) = 0;
  virtual ::java::lang::String * getAttributePrefix(jint) = 0;
  virtual ::java::lang::String * getAttributeType(jint) = 0;
  virtual ::java::lang::String * getAttributeValue(jint) = 0;
  virtual jboolean isAttributeSpecified(jint) = 0;
  virtual jint getNamespaceCount() = 0;
  virtual ::java::lang::String * getNamespacePrefix(jint) = 0;
  virtual ::java::lang::String * getNamespaceURI(jint) = 0;
  virtual ::javax::xml::namespace$::NamespaceContext * getNamespaceContext() = 0;
  virtual jint getEventType() = 0;
  virtual ::java::lang::String * getText() = 0;
  virtual JArray< jchar > * getTextCharacters() = 0;
  virtual jint getTextCharacters(jint, JArray< jchar > *, jint, jint) = 0;
  virtual jint getTextStart() = 0;
  virtual jint getTextLength() = 0;
  virtual ::java::lang::String * getEncoding() = 0;
  virtual jboolean hasText() = 0;
  virtual ::javax::xml::stream::Location * getLocation() = 0;
  virtual ::javax::xml::namespace$::QName * getName() = 0;
  virtual ::java::lang::String * getLocalName() = 0;
  virtual jboolean hasName() = 0;
  virtual ::java::lang::String * getNamespaceURI() = 0;
  virtual ::java::lang::String * getPrefix() = 0;
  virtual ::java::lang::String * getVersion() = 0;
  virtual jboolean isStandalone() = 0;
  virtual jboolean standaloneSet() = 0;
  virtual ::java::lang::String * getCharacterEncodingScheme() = 0;
  virtual ::java::lang::String * getPITarget() = 0;
  virtual ::java::lang::String * getPIData() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_xml_stream_XMLStreamReader__
