00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00042 #include "BIXML.h"
00043 #include <libxml/tree.h>
00044 #include <libxml/xmlIO.h>
00045 #include <libxml/encoding.h>
00046
00047 using namespace BAL;
00048
00049 namespace BC
00050 {
00055 class BCXML : public BAL::BIXML
00056 {
00057 public:
00058 BCXML();
00059 ~BCXML();
00060
00061 void *xmlMalloc( int size );
00062 void xmlFreeDoc( BAL::BTXMLDoc *doc );
00063 BAL::BTXMLDoc *xmlReadMemory(const char * buffer,
00064 int size,
00065 const char * URL,
00066 const char * encoding,
00067 int options);
00068 BAL::BTXMLAttr *xmlGetID( BAL::BTXMLDoc *doc, const unsigned char *ID);
00069 void xmlFree(void * mem);
00070 unsigned char *xmlNodeGetBase( BAL::BTXMLDoc *doc, BTXMLNode *cur);
00071 unsigned char *xmlBuildURI( const unsigned char *URI, const unsigned char *base );
00072 int xmlStrEqual( const unsigned char* str1, const unsigned char* str2);
00073 void xmlSetGenericErrorFunc (void * ctx, BTXMLGenericErrorFunc handler);
00074 BTXMLOutputBuffer *xmlAllocOutputBuffer( BTXMLCharEncodingHandler *encoder );
00075 void xmlOutputBufferClose(BTXMLOutputBuffer *outputBuf);
00076 BTXMLHashTable *xmlHashCreate( int size );
00077 unsigned char *xmlStrdup( const unsigned char *buf);
00078 unsigned char *xmlStrndup( const unsigned char *buf, int size );
00079 void xmlInitParser(void);
00080 BTXMLParserCtxt *xmlCreatePushParserCtxt( BTXMLSAXHandler *sax );
00081 int xmlRegisterInputCallbacks (BTXMLInputMatchCallback matchFunc,
00082 BTXMLInputOpenCallback openFunc,
00083 BTXMLInputReadCallback readFunc,
00084 BTXMLInputCloseCallback closeFunc);
00085
00086 int xmlRegisterOutputCallbacks (BTXMLOutputMatchCallback matchFunc,
00087 BTXMLOutputOpenCallback openFunc,
00088 BTXMLOutputWriteCallback writeFunc,
00089 BTXMLOutputCloseCallback closeFunc);
00090 BTXMLParserCtxt * xmlSwitchEncoding( BTXMLParserCtxt *ctxt, int enc);
00091 BTXMLParserCtxt * xmlParseChunk( BTXMLParserCtxt *ctxt, const char *chunk, int size, int terminate);
00092 BTXMLEntity *xmlGetPredefinedEntity(const unsigned char* name);
00093 BTXMLEntity *xmlGetDocEntity( BTXMLDoc *doc, const unsigned char *name );
00094 void xmlSAX2InternalSubset( void * ctx, const unsigned char * name, const unsigned char * ExternalID, const unsigned char * SystemID);
00095 void xmlFreeParserCtxt( BTXMLParserCtxt *ctxt );
00096 void xmlStopParser( BTXMLParserCtxt *ctxt);
00097
00098 int xmlParseBalancedChunkMemory( void * user_data, const unsigned char * string );
00099
00100 void *getXMLGenericErrorContext();
00101 BTXMLSAXHandler *setSaxHandler( BTErrorSAXFunc error,
00102 BTFatalErrorSAXFunc fatalError,
00103 BTCharactersSAXFunc characters,
00104 BTProcessingInstructionSAXFunc processingInstruction,
00105 BTCdataBlockSAXFunc cdataBlock,
00106 BTCommentSAXFunc comment,
00107 BTWarningSAXFunc warning,
00108 BTStartElementNsSAX2Func startElementNs,
00109 BTEndElementNsSAX2Func endElementNs,
00110 BTGetEntitySAXFunc getEntity,
00111 BTInternalSubsetSAXFunc internalSubset,
00112 BTExternalSubsetSAXFunc externalSubset,
00113 BTIgnorableWhitespaceSAXFunc ignorableWhitespace );
00114
00115 BTXMLGenericErrorFunc getXMLGenericError();
00116
00117 BTXMLDoc *convertDoc( xmlDoc *doc );
00118 BTXMLNode *convertNode( xmlNode *node );
00119 BTXMLNs *convertNS( xmlNs *ns );
00120 BTXMLAttr *convertAttr( xmlAttr *attr);
00121 BTXMLCharEncodingHandler *convertEncoding( xmlCharEncodingHandler *m_enc );
00122 BTXMLOutputBuffer *convertOutPut( xmlOutputBuffer *out );
00123 BTXMLEntity *convertEntity( xmlEntity *entity );
00124 BTXMLParserCtxt *convertParser( xmlParserCtxt *parser );
00125 BTXMLParserInput *convertParserInput( xmlParserInput *input );
00126
00127 xmlDoc *convertXmlDoc( xmlDoc *d, BTXMLDoc *doc );
00128 xmlNode *convertXmlNode( BTXMLNode *node );
00129 xmlNs *convertXmlNS( xmlNode *node, BTXMLNs *ns );
00130 xmlOutputBuffer *convertXmlOutPut( BTXMLOutputBuffer *out );
00131 xmlParserCtxt *convertXmlParser( xmlParserCtxt *p, BTXMLParserCtxt *parser );
00132 xmlParserInput *convertXmlParserInput( xmlParserInput *in, BTXMLParserInput *input );
00133
00134 static xmlEntity *convertXmlEntity( BTXMLEntity *entity );
00135 static xmlDoc *convertXmlDocS( BTXMLDoc *doc );
00136
00137 BTErrorSAXFunc m_error;
00138 BTFatalErrorSAXFunc m_fatalError;
00139 BTCharactersSAXFunc m_characters;
00140 BTProcessingInstructionSAXFunc m_processingInstruction;
00141 BTCdataBlockSAXFunc m_cdataBlock;
00142 BTCommentSAXFunc m_comment;
00143 BTWarningSAXFunc m_warning;
00144 BTStartElementNsSAX2Func m_startElementNs;
00145 BTEndElementNsSAX2Func m_endElementNs;
00146 BTGetEntitySAXFunc m_getEntity;
00147 BTInternalSubsetSAXFunc m_internalSubset;
00148 BTExternalSubsetSAXFunc m_externalSubset;
00149 BTIgnorableWhitespaceSAXFunc m_ignorableWhitespace;
00150
00151 xmlParserCtxt *m_parser;
00152 xmlDoc *m_doc;
00153 xmlNode *m_node;
00154 xmlOutputBuffer *m_outbuf;
00155 private :
00156
00157
00158
00159 xmlNs *m_ns;
00160 xmlAttr *m_attr;
00161 xmlCharEncodingHandler *m_enc;
00162 xmlHashTable *m_hashTable;
00163 xmlSAXHandler *m_sax;
00164
00165 xmlEntity *m_entity;
00166 xmlParserInput *m_input;
00167 };
00168
00169 }
00170