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

#ifndef __gnu_xml_transform_ElementNode__
#define __gnu_xml_transform_ElementNode__

#pragma interface

#include <gnu/xml/transform/TemplateNode.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace transform
      {
          class ElementNode;
          class Stylesheet;
          class TemplateNode;
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace namespace
      {
          class QName;
      }
    }
  }
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class Node;
      }
    }
  }
}

class gnu::xml::transform::ElementNode : public ::gnu::xml::transform::TemplateNode
{

public: // actually package-private
  ElementNode(::gnu::xml::transform::TemplateNode *, ::gnu::xml::transform::TemplateNode *, ::java::lang::String *, ::org::w3c::dom::Node *);
  ::gnu::xml::transform::TemplateNode * clone(::gnu::xml::transform::Stylesheet *);
  void doApply(::gnu::xml::transform::Stylesheet *, ::javax::xml::namespace::QName *, ::org::w3c::dom::Node *, jint, jint, ::org::w3c::dom::Node *, ::org::w3c::dom::Node *);
  ::java::lang::String * getPrefix(::java::lang::String *);
  void addAttributeSet(::gnu::xml::transform::Stylesheet *, ::javax::xml::namespace::QName *, ::org::w3c::dom::Node *, jint, jint, ::org::w3c::dom::Node *, ::org::w3c::dom::Node *, ::java::lang::String *);
public:
  jboolean references(::javax::xml::namespace::QName *);
  ::java::lang::String * toString();
public: // actually package-private
  ::gnu::xml::transform::TemplateNode * __attribute__((aligned(__alignof__( ::gnu::xml::transform::TemplateNode)))) name;
  ::gnu::xml::transform::TemplateNode * namespace$;
  ::java::lang::String * uas;
  ::org::w3c::dom::Node * source;
  ::java::util::Collection * elementExcludeResultPrefixes;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_transform_ElementNode__
