
// 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__
