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

#ifndef __gnu_xml_validation_xmlschema_ElementDeclaration__
#define __gnu_xml_validation_xmlschema_ElementDeclaration__

#pragma interface

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

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

public: // actually package-private
  ElementDeclaration(::javax::xml::namespace::QName *, ::gnu::xml::validation::datatype::Type *, jint, ::gnu::xml::validation::xmlschema::ElementDeclaration *, jint, ::java::lang::String *, jboolean, ::javax::xml::namespace::QName *, jint, jint, jboolean);
  ::javax::xml::namespace::QName * __attribute__((aligned(__alignof__( ::java::lang::Object)))) name;
  ::gnu::xml::validation::datatype::Type * datatype;
  jint scope;
  ::gnu::xml::validation::xmlschema::ElementDeclaration * parent;
  jint type;
  ::java::lang::String * value;
  jboolean nillable;
  ::javax::xml::namespace::QName * substitutionGroup;
  jint substitutionGroupExclusions;
  jint disallowedSubstitutions;
  jboolean isAbstract;
  ::gnu::xml::validation::datatype::Annotation * annotation;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_validation_xmlschema_ElementDeclaration__
