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

#ifndef __org_xml_sax_ext_DefaultHandler2__
#define __org_xml_sax_ext_DefaultHandler2__

#pragma interface

#include <org/xml/sax/helpers/DefaultHandler.h>
#include <gcj/array.h>

extern "Java"
{
  namespace org
  {
    namespace xml
    {
      namespace sax
      {
          class InputSource;
        namespace ext
        {
            class DefaultHandler2;
        }
      }
    }
  }
}

class org::xml::sax::ext::DefaultHandler2 : public ::org::xml::sax::helpers::DefaultHandler
{

public:
  DefaultHandler2();
  virtual void startCDATA();
  virtual void endCDATA();
  virtual void startDTD(::java::lang::String *, ::java::lang::String *, ::java::lang::String *);
  virtual void endDTD();
  virtual void startEntity(::java::lang::String *);
  virtual void endEntity(::java::lang::String *);
  virtual void comment(JArray< jchar > *, jint, jint);
  virtual void attributeDecl(::java::lang::String *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *);
  virtual void elementDecl(::java::lang::String *, ::java::lang::String *);
  virtual void externalEntityDecl(::java::lang::String *, ::java::lang::String *, ::java::lang::String *);
  virtual void internalEntityDecl(::java::lang::String *, ::java::lang::String *);
  virtual ::org::xml::sax::InputSource * getExternalSubset(::java::lang::String *, ::java::lang::String *);
  virtual ::org::xml::sax::InputSource * resolveEntity(::java::lang::String *, ::java::lang::String *, ::java::lang::String *, ::java::lang::String *);
  virtual ::org::xml::sax::InputSource * resolveEntity(::java::lang::String *, ::java::lang::String *);
  static ::java::lang::Class class$;
};

#endif // __org_xml_sax_ext_DefaultHandler2__
