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

#ifndef __gnu_xml_validation_xmlschema_AttributeDeclaration__
#define __gnu_xml_validation_xmlschema_AttributeDeclaration__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace validation
      {
        namespace datatype
        {
            class Annotation;
            class SimpleType;
        }
        namespace xmlschema
        {
            class AttributeDeclaration;
        }
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace namespace$
      {
          class QName;
      }
    }
  }
}

class gnu::xml::validation::xmlschema::AttributeDeclaration : public ::java::lang::Object
{

public: // actually package-private
  AttributeDeclaration(jboolean, jint, ::java::lang::String *, ::javax::xml::namespace$::QName *, ::gnu::xml::validation::datatype::SimpleType *, ::gnu::xml::validation::datatype::Annotation *);
  static const jint NONE = 0;
  static const jint DEFAULT = 1;
  static const jint FIXED = 2;
  jboolean __attribute__((aligned(__alignof__( ::java::lang::Object)))) scope;
  jint type;
  ::java::lang::String * value;
  ::javax::xml::namespace$::QName * name;
  ::gnu::xml::validation::datatype::SimpleType * datatype;
  ::gnu::xml::validation::datatype::Annotation * annotation;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_validation_xmlschema_AttributeDeclaration__
