
// 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__
