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

#ifndef __javax_xml_transform_sax_SAXResult__
#define __javax_xml_transform_sax_SAXResult__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace javax
  {
    namespace xml
    {
      namespace transform
      {
        namespace sax
        {
            class SAXResult;
        }
      }
    }
  }
  namespace org
  {
    namespace xml
    {
      namespace sax
      {
          class ContentHandler;
        namespace ext
        {
            class LexicalHandler;
        }
      }
    }
  }
}

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

public:
  SAXResult();
  SAXResult(::org::xml::sax::ContentHandler *);
  virtual void setHandler(::org::xml::sax::ContentHandler *);
  virtual ::org::xml::sax::ContentHandler * getHandler();
  virtual void setLexicalHandler(::org::xml::sax::ext::LexicalHandler *);
  virtual ::org::xml::sax::ext::LexicalHandler * getLexicalHandler();
  virtual void setSystemId(::java::lang::String *);
  virtual ::java::lang::String * getSystemId();
  static ::java::lang::String * FEATURE;
private:
  ::org::xml::sax::ContentHandler * __attribute__((aligned(__alignof__( ::java::lang::Object)))) handler;
  ::org::xml::sax::ext::LexicalHandler * lexicalHandler;
  ::java::lang::String * systemId;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_xml_transform_sax_SAXResult__
