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

#ifndef __gnu_xml_util_SAXNullTransformerFactory$NullHandler__
#define __gnu_xml_util_SAXNullTransformerFactory$NullHandler__

#pragma interface

#include <gnu/xml/pipeline/EventFilter.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace util
      {
          class SAXNullTransformerFactory$NullHandler;
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace transform
      {
          class Result;
          class Transformer;
      }
    }
  }
}

class gnu::xml::util::SAXNullTransformerFactory$NullHandler : public ::gnu::xml::pipeline::EventFilter
{

public: // actually package-private
  SAXNullTransformerFactory$NullHandler(::javax::xml::transform::Transformer *);
public:
  virtual ::javax::xml::transform::Transformer * getTransformer();
  virtual ::java::lang::String * getSystemId();
  virtual void setSystemId(::java::lang::String *);
  virtual void setResult(::javax::xml::transform::Result *);
private:
  ::java::lang::String * __attribute__((aligned(__alignof__( ::gnu::xml::pipeline::EventFilter)))) systemId;
  ::javax::xml::transform::Transformer * transformer;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_util_SAXNullTransformerFactory$NullHandler__
