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