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

#ifndef __javax_xml_transform_sax_SAXSource__
#define __javax_xml_transform_sax_SAXSource__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace xml
    {
      namespace transform
      {
          class Source;
        namespace sax
        {
            class SAXSource;
        }
      }
    }
  }
  namespace org
  {
    namespace xml
    {
      namespace sax
      {
          class InputSource;
          class XMLReader;
      }
    }
  }
}

class javax::xml::transform::sax::SAXSource : public ::java::lang::Object
{

public:
  SAXSource();
  SAXSource(::org::xml::sax::XMLReader *, ::org::xml::sax::InputSource *);
  SAXSource(::org::xml::sax::InputSource *);
  virtual void setXMLReader(::org::xml::sax::XMLReader *);
  virtual ::org::xml::sax::XMLReader * getXMLReader();
  virtual void setInputSource(::org::xml::sax::InputSource *);
  virtual ::org::xml::sax::InputSource * getInputSource();
  virtual void setSystemId(::java::lang::String *);
  virtual ::java::lang::String * getSystemId();
  static ::org::xml::sax::InputSource * sourceToInputSource(::javax::xml::transform::Source *);
  static ::java::lang::String * FEATURE;
private:
  ::org::xml::sax::XMLReader * __attribute__((aligned(__alignof__( ::java::lang::Object)))) xmlReader;
  ::org::xml::sax::InputSource * inputSource;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_xml_transform_sax_SAXSource__
