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

#ifndef __gnu_xml_transform_TransformerOutputProperties__
#define __gnu_xml_transform_TransformerOutputProperties__

#pragma interface

#include <java/util/Properties.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace transform
      {
          class Stylesheet;
          class TransformerOutputProperties;
      }
    }
  }
}

class gnu::xml::transform::TransformerOutputProperties : public ::java::util::Properties
{

public: // actually package-private
  TransformerOutputProperties(::gnu::xml::transform::Stylesheet *);
public:
  virtual ::java::lang::String * getProperty(::java::lang::String *);
  virtual ::java::lang::Object * put(::java::lang::Object *, ::java::lang::Object *);
  virtual void clear();
public: // actually package-private
  virtual void apply();
  ::java::util::Properties * __attribute__((aligned(__alignof__( ::java::util::Properties)))) defaultProperties;
  ::gnu::xml::transform::Stylesheet * stylesheet;
  jboolean dirty;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_transform_TransformerOutputProperties__
