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

#ifndef __gnu_xml_transform_Key__
#define __gnu_xml_transform_Key__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace transform
      {
          class Key;
          class Stylesheet;
      }
      namespace xpath
      {
          class Expr;
          class Pattern;
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace namespace$
      {
          class QName;
      }
    }
  }
}

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

public: // actually package-private
  Key(::javax::xml::namespace$::QName *, ::gnu::xml::xpath::Pattern *, ::gnu::xml::xpath::Expr *);
  virtual ::gnu::xml::transform::Key * clone(::gnu::xml::transform::Stylesheet *);
  ::javax::xml::namespace$::QName * __attribute__((aligned(__alignof__( ::java::lang::Object)))) name;
  ::gnu::xml::xpath::Pattern * match;
  ::gnu::xml::xpath::Expr * use;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_transform_Key__
