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

#ifndef __gnu_xml_transform_TemplatesImpl__
#define __gnu_xml_transform_TemplatesImpl__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace transform
      {
          class Stylesheet;
          class TemplatesImpl;
          class TransformerFactoryImpl;
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace transform
      {
          class Transformer;
      }
    }
  }
}

class gnu::xml::transform::TemplatesImpl : public ::java::lang::Object
{

public: // actually package-private
  TemplatesImpl(::gnu::xml::transform::TransformerFactoryImpl *, ::gnu::xml::transform::Stylesheet *);
public:
  virtual ::javax::xml::transform::Transformer * newTransformer();
  virtual ::java::util::Properties * getOutputProperties();
  virtual ::java::lang::String * toString();
public: // actually package-private
  ::gnu::xml::transform::TransformerFactoryImpl * __attribute__((aligned(__alignof__( ::java::lang::Object)))) factory;
  ::gnu::xml::transform::Stylesheet * stylesheet;
  ::java::util::Properties * outputProperties;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_transform_TemplatesImpl__
