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

#ifndef __org_xml_sax_InputSource__
#define __org_xml_sax_InputSource__

#pragma interface

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

class org::xml::sax::InputSource : public ::java::lang::Object
{

public:
  InputSource();
  InputSource(::java::lang::String *);
  InputSource(::java::io::InputStream *);
  InputSource(::java::io::Reader *);
  virtual void setPublicId(::java::lang::String *);
  virtual ::java::lang::String * getPublicId();
  virtual void setSystemId(::java::lang::String *);
  virtual ::java::lang::String * getSystemId();
  virtual void setByteStream(::java::io::InputStream *);
  virtual ::java::io::InputStream * getByteStream();
  virtual void setEncoding(::java::lang::String *);
  virtual ::java::lang::String * getEncoding();
  virtual void setCharacterStream(::java::io::Reader *);
  virtual ::java::io::Reader * getCharacterStream();
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::java::lang::Object)))) publicId;
  ::java::lang::String * systemId;
  ::java::io::InputStream * byteStream;
  ::java::lang::String * encoding;
  ::java::io::Reader * characterStream;
public:
  static ::java::lang::Class class$;
};

#endif // __org_xml_sax_InputSource__
