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

#ifndef __javax_xml_stream_XMLStreamWriter__
#define __javax_xml_stream_XMLStreamWriter__

#pragma interface

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

extern "Java"
{
  namespace javax
  {
    namespace xml
    {
      namespace namespace$
      {
          class NamespaceContext;
      }
      namespace stream
      {
          class XMLStreamWriter;
      }
    }
  }
}

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

public:
  virtual void writeStartElement(::java::lang::String *) = 0;
  virtual void writeStartElement(::java::lang::String *, ::java::lang::String *) = 0;
  virtual void writeStartElement(::java::lang::String *, ::java::lang::String *, ::java::lang::String *) = 0;
  virtual void writeEmptyElement(::java::lang::String *, ::java::lang::String *) = 0;
  virtual void writeEmptyElement(::java::lang::String *, ::java::lang::String *, ::java::lang::String *) = 0;
  virtual void writeEmptyElement(::java::lang::String *) = 0;
  virtual void writeEndElement() = 0;
  virtual void writeEndDocument() = 0;
  virtual void close() = 0;
  virtual void flush() = 0;
  virtual void writeAttribute(::java::lang::String *, ::java::lang::String *) = 0;
  virtual void writeAttribute(::java::lang::String *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *) = 0;
  virtual void writeAttribute(::java::lang::String *, ::java::lang::String *, ::java::lang::String *) = 0;
  virtual void writeNamespace(::java::lang::String *, ::java::lang::String *) = 0;
  virtual void writeDefaultNamespace(::java::lang::String *) = 0;
  virtual void writeComment(::java::lang::String *) = 0;
  virtual void writeProcessingInstruction(::java::lang::String *) = 0;
  virtual void writeProcessingInstruction(::java::lang::String *, ::java::lang::String *) = 0;
  virtual void writeCData(::java::lang::String *) = 0;
  virtual void writeDTD(::java::lang::String *) = 0;
  virtual void writeEntityRef(::java::lang::String *) = 0;
  virtual void writeStartDocument() = 0;
  virtual void writeStartDocument(::java::lang::String *) = 0;
  virtual void writeStartDocument(::java::lang::String *, ::java::lang::String *) = 0;
  virtual void writeCharacters(::java::lang::String *) = 0;
  virtual void writeCharacters(JArray< jchar > *, jint, jint) = 0;
  virtual ::java::lang::String * getPrefix(::java::lang::String *) = 0;
  virtual void setPrefix(::java::lang::String *, ::java::lang::String *) = 0;
  virtual void setDefaultNamespace(::java::lang::String *) = 0;
  virtual void setNamespaceContext(::javax::xml::namespace$::NamespaceContext *) = 0;
  virtual ::javax::xml::namespace$::NamespaceContext * getNamespaceContext() = 0;
  virtual ::java::lang::Object * getProperty(::java::lang::String *) = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __javax_xml_stream_XMLStreamWriter__
