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

#ifndef __gnu_xml_validation_datatype_AtomicSimpleType__
#define __gnu_xml_validation_datatype_AtomicSimpleType__

#pragma interface

#include <gnu/xml/validation/datatype/SimpleType.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace validation
      {
        namespace datatype
        {
            class Annotation;
            class AtomicSimpleType;
            class SimpleType;
        }
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace namespace
      {
          class QName;
      }
    }
  }
  namespace org
  {
    namespace relaxng
    {
      namespace datatype
      {
          class ValidationContext;
      }
    }
  }
}

class gnu::xml::validation::datatype::AtomicSimpleType : public ::gnu::xml::validation::datatype::SimpleType
{

public:
  AtomicSimpleType(::javax::xml::namespace::QName *, ::java::util::Set *, jint, ::gnu::xml::validation::datatype::SimpleType *, ::gnu::xml::validation::datatype::Annotation *);
public: // actually package-private
  AtomicSimpleType(::javax::xml::namespace::QName *, ::gnu::xml::validation::datatype::SimpleType *);
public:
  virtual void checkValid(::java::lang::String *, ::org::relaxng::datatype::ValidationContext *);
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_validation_datatype_AtomicSimpleType__
