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

#ifndef __javax_xml_stream_XMLOutputFactory__
#define __javax_xml_stream_XMLOutputFactory__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace xml
    {
      namespace stream
      {
          class XMLEventWriter;
          class XMLOutputFactory;
          class XMLStreamWriter;
      }
      namespace transform
      {
          class Result;
      }
    }
  }
}

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

public: // actually protected
  XMLOutputFactory();
public:
  static ::javax::xml::stream::XMLOutputFactory * newInstance();
  static ::javax::xml::stream::XMLOutputFactory * newInstance(::java::lang::String *, ::java::lang::ClassLoader *);
private:
  static ::java::lang::String * getFactoryClassName(::java::lang::ClassLoader *, jint);
public:
  virtual ::javax::xml::stream::XMLStreamWriter * createXMLStreamWriter(::java::io::Writer *) = 0;
  virtual ::javax::xml::stream::XMLStreamWriter * createXMLStreamWriter(::java::io::OutputStream *) = 0;
  virtual ::javax::xml::stream::XMLStreamWriter * createXMLStreamWriter(::java::io::OutputStream *, ::java::lang::String *) = 0;
  virtual ::javax::xml::stream::XMLStreamWriter * createXMLStreamWriter(::javax::xml::transform::Result *) = 0;
  virtual ::javax::xml::stream::XMLEventWriter * createXMLEventWriter(::javax::xml::transform::Result *) = 0;
  virtual ::javax::xml::stream::XMLEventWriter * createXMLEventWriter(::java::io::OutputStream *) = 0;
  virtual ::javax::xml::stream::XMLEventWriter * createXMLEventWriter(::java::io::OutputStream *, ::java::lang::String *) = 0;
  virtual ::javax::xml::stream::XMLEventWriter * createXMLEventWriter(::java::io::Writer *) = 0;
  virtual void setProperty(::java::lang::String *, ::java::lang::Object *) = 0;
  virtual ::java::lang::Object * getProperty(::java::lang::String *) = 0;
  virtual jboolean isPropertySupported(::java::lang::String *) = 0;
  static ::java::lang::String * IS_REPAIRING_NAMESPACES;
  static ::java::lang::Class class$;
};

#endif // __javax_xml_stream_XMLOutputFactory__
