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

#ifndef __gnu_xml_transform_StrippingInstruction__
#define __gnu_xml_transform_StrippingInstruction__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace transform
      {
          class StrippingInstruction;
      }
      namespace xpath
      {
          class NameTest;
      }
    }
  }
}

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

public: // actually package-private
  StrippingInstruction(::gnu::xml::xpath::NameTest *, jint);
  virtual jfloat getPriority();
  ::gnu::xml::xpath::NameTest * __attribute__((aligned(__alignof__( ::java::lang::Object)))) element;
  jint precedence;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_transform_StrippingInstruction__
