/*
 * Summary: SAX2 parser interface used to build the DOM tree
 * Description: those are the default SAX2 interfaces used by
 *              the library when building DOM tree.
 *
 * Copy: See Copyright for the status of this software.
 *
 * Author: Daniel Veillard
 */


#ifndef __XML_SAX2_H__
#define __XML_SAX2_H__

#include <stdio.h>
#include <stdlib.h>
#include "xmlversion.h"
#include "parser.h"
#include "xlink.h"

#ifdef __cplusplus
extern "C" {
#endif
XMLPUBFUN const xmlChar * XMLCALL
                xmlSAX2GetPublicId              (void *ctx);
XMLPUBFUN const xmlChar * XMLCALL       
                xmlSAX2GetSystemId              (void *ctx);
XMLPUBFUN void XMLCALL          
                xmlSAX2SetDocumentLocator       (void *ctx,
                                                 xmlSAXLocatorPtr loc);
    
XMLPUBFUN int XMLCALL           
                xmlSAX2GetLineNumber            (void *ctx);
XMLPUBFUN int XMLCALL           
                xmlSAX2GetColumnNumber          (void *ctx);

XMLPUBFUN int XMLCALL           
                xmlSAX2IsStandalone             (void *ctx);
XMLPUBFUN int XMLCALL           
                xmlSAX2HasInternalSubset        (void *ctx);
XMLPUBFUN int XMLCALL           
                xmlSAX2HasExternalSubset        (void *ctx);

XMLPUBFUN void XMLCALL          
                xmlSAX2InternalSubset           (void *ctx,
                                                 const xmlChar *name,
                                                 const xmlChar *ExternalID,
                                                 const xmlChar *SystemID);
XMLPUBFUN void XMLCALL          
                xmlSAX2ExternalSubset           (void *ctx,
                                                 const xmlChar *name,
                                                 const xmlChar *ExternalID,
                                                 const xmlChar *SystemID);
XMLPUBFUN xmlEntityPtr XMLCALL  
                xmlSAX2GetEntity                (void *ctx,
                                                 const xmlChar *name);
XMLPUBFUN xmlEntityPtr XMLCALL  
                xmlSAX2GetParameterEntity       (void *ctx,
                                                 const xmlChar *name);
XMLPUBFUN xmlParserInputPtr XMLCALL 
                xmlSAX2ResolveEntity            (void *ctx,
                                                 const xmlChar *publicId,
                                                 const xmlChar *systemId);

XMLPUBFUN void XMLCALL          
                xmlSAX2EntityDecl               (void *ctx,
                                                 const xmlChar *name,
                                                 int type,
                                                 const xmlChar *publicId,
                                                 const xmlChar *systemId,
                                                 xmlChar *content);
XMLPUBFUN void XMLCALL          
                xmlSAX2AttributeDecl            (void *ctx,
                                                 const xmlChar *elem,
                                                 const xmlChar *fullname,
                                                 int type,
                                                 int def,
                                                 const xmlChar *defaultValue,
                                                 xmlEnumerationPtr tree);
XMLPUBFUN void XMLCALL          
                xmlSAX2ElementDecl              (void *ctx,
                                                 const xmlChar *name,
                                                 int type,
                                                 xmlElementContentPtr content);
XMLPUBFUN void XMLCALL          
                xmlSAX2NotationDecl             (void *ctx,
                                                 const xmlChar *name,
                                                 const xmlChar *publicId,
                                                 const xmlChar *systemId);
XMLPUBFUN void XMLCALL          
                xmlSAX2UnparsedEntityDecl       (void *ctx,
                                                 const xmlChar *name,
                                                 const xmlChar *publicId,
                                                 const xmlChar *systemId,
                                                 const xmlChar *notationName);

XMLPUBFUN void XMLCALL          
                xmlSAX2StartDocument            (void *ctx);
XMLPUBFUN void XMLCALL          
                xmlSAX2EndDocument              (void *ctx);
#if defined(LIBXML_SAX1_ENABLED) || defined(LIBXML_HTML_ENABLED) || defined(LIBXML_WRITER_ENABLED) || defined(LIBXML_DOCB_ENABLED)
XMLPUBFUN void XMLCALL          
                xmlSAX2StartElement             (void *ctx,
                                                 const xmlChar *fullname,
                                                 const xmlChar **atts);
XMLPUBFUN void XMLCALL          
                xmlSAX2EndElement               (void *ctx,
                                                 const xmlChar *name);
#endif /* LIBXML_SAX1_ENABLED or LIBXML_HTML_ENABLED */
XMLPUBFUN void XMLCALL
                xmlSAX2StartElementNs           (void *ctx,
                                                 const xmlChar *localname,
                                                 const xmlChar *prefix,
                                                 const xmlChar *URI,
                                                 int nb_namespaces,
                                                 const xmlChar **namespaces,
                                                 int nb_attributes,
                                                 int nb_defaulted,
                                                 const xmlChar **attributes);
XMLPUBFUN void XMLCALL
                xmlSAX2EndElementNs             (void *ctx,
                                                 const xmlChar *localname,
                                                 const xmlChar *prefix,
                                                 const xmlChar *URI);
XMLPUBFUN void XMLCALL          
                xmlSAX2Reference                (void *ctx,
                                                 const xmlChar *name);
XMLPUBFUN void XMLCALL          
                xmlSAX2Characters               (void *ctx,
                                                 const xmlChar *ch,
                                                 int len);
XMLPUBFUN void XMLCALL          
                xmlSAX2IgnorableWhitespace      (void *ctx,
                                                 const xmlChar *ch,
                                                 int len);
XMLPUBFUN void XMLCALL          
                xmlSAX2ProcessingInstruction    (void *ctx,
                                                 const xmlChar *target,
                                                 const xmlChar *data);
XMLPUBFUN void XMLCALL          
                xmlSAX2Comment                  (void *ctx,
                                                 const xmlChar *value);
XMLPUBFUN void XMLCALL          
                xmlSAX2CDataBlock               (void *ctx,
                                                 const xmlChar *value,
                                                 int len);

#ifdef LIBXML_SAX1_ENABLED
XMLPUBFUN int XMLCALL
                xmlSAXDefaultVersion            (int version);
#endif /* LIBXML_SAX1_ENABLED */

XMLPUBFUN int XMLCALL
                xmlSAXVersion                   (xmlSAXHandler *hdlr,
                                                 int version);
XMLPUBFUN void XMLCALL          
                xmlSAX2InitDefaultSAXHandler    (xmlSAXHandler *hdlr,
                                                 int warning);
#ifdef LIBXML_HTML_ENABLED
XMLPUBFUN void XMLCALL          
                xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr);
XMLPUBFUN void XMLCALL          
                htmlDefaultSAXHandlerInit       (void);
#endif
#ifdef LIBXML_DOCB_ENABLED
XMLPUBFUN void XMLCALL          
                xmlSAX2InitDocbDefaultSAXHandler(xmlSAXHandler *hdlr);
XMLPUBFUN void XMLCALL          
                docbDefaultSAXHandlerInit       (void);
#endif
XMLPUBFUN void XMLCALL          
                xmlDefaultSAXHandlerInit        (void);
#ifdef __cplusplus
}
#endif
#endif /* __XML_SAX2_H__ */
