39 template <
class CType>
79 bool create(
const XML_Char *pszEncoding = NULL,
80 const XML_Char *pszSep = NULL)
92 if (pszEncoding != NULL && pszEncoding [0] == 0)
95 if (pszSep != NULL && pszSep [0] == 0)
102 mParser = XML_ParserCreate_MM(pszEncoding, NULL, pszSep);
111 CType *pThis = static_cast <CType *>(
this);
112 pThis->onPostCreate();
118 XML_SetUserData(
mParser, (
void *)
this);
123 XML_UseForeignDTD(
mParser, XML_TRUE);
135 bool parse(
const char *pszBuffer,
int nLength = -1,
bool fIsFinal =
true)
148 nLength = (int) strlen(pszBuffer);
154 return XML_Parse(
mParser, pszBuffer, nLength, fIsFinal) != 0;
165 bool parse(
const WCHAR *pszBuffer,
int nLength = -1,
bool fIsFinal =
true)
178 nLength = wcslen(pszBuffer) * 2;
184 return XML_Parse(
mParser, pszBuffer, nLength, fIsFinal) != 0;
197 return XML_ParseBuffer(
mParser, nLength, fIsFinal) != 0;
206 return XML_GetBuffer(
mParser, nLength);
247 XML_SetCharacterDataHandler(
mParser,
258 XML_SetProcessingInstructionHandler(
mParser,
279 XML_SetStartCdataSectionHandler(
mParser,
290 XML_SetEndCdataSectionHandler(
mParser,
315 XML_SetDefaultHandlerExpand(
mParser,
329 XML_SetExternalEntityRefHandler(
mParser,
340 XML_SetSkippedEntityHandler(
mParser,
351 XML_SetUnknownEncodingHandler(
mParser,
363 XML_SetStartNamespaceDeclHandler(
mParser,
374 XML_SetEndNamespaceDeclHandler(
mParser,
405 XML_SetStartDoctypeDeclHandler(
mParser,
416 XML_SetEndDoctypeDeclHandler(
mParser,
438 return XML_GetErrorCode(
mParser);
454 {
return XML_ErrorString(nError);}
463 return XML_GetCurrentByteIndex(
mParser);
473 return XML_GetCurrentLineNumber(
mParser);
483 return XML_GetCurrentColumnNumber(
mParser);
493 return XML_GetCurrentByteCount(
mParser);
503 return XML_GetInputContext(
mParser, pnOffset, pnSize);
511 {
return XML_ExpatVersion();}
523 XML_Expat_Version v = XML_ExpatVersionInfo();
559 const XML_Char *pszData)
597 const XML_Char *pszBase,
598 const XML_Char *pszSystemID,
599 const XML_Char *pszPublicID)
634 const XML_Char *pszURI)
651 const XML_Char *pszEncoding,
663 const XML_Char *pszSysID,
664 const XML_Char *pszPubID,
665 bool fHasInternalSubset)
686 const char ** attributes,
687 const bool & required =
true)
const
691 for (i = 0; attributes[i]; i += 2)
692 if (attributes[i] == name)
break;
694 if (attributes[i])
return attributes[i + 1];
712 const char ** attributes,
713 const char * def)
const
717 if (!tmp)
return def;
728 static bool toBool(
const char * attribute)
730 if (!attribute)
return false;
732 if (!strcmp(attribute,
"true") || !strcmp(attribute,
"1"))
return true;
751 const XML_Char *pszName,
752 const XML_Char **papszAttrs)
755 pThis->onStartElement(pszName, papszAttrs);
764 const XML_Char *pszName)
767 pThis->onEndElement(pszName);
777 const XML_Char *pszData,
781 pThis->onCharacterData(pszData, nLength);
791 const XML_Char *pszTarget,
792 const XML_Char *pszData)
795 pThis->onProcessingInstruction(pszTarget, pszData);
804 const XML_Char *pszData)
807 pThis->onComment(pszData);
817 pThis->onStartCdataSection();
827 pThis->onEndCdataSection();
837 const XML_Char *pszData,
841 pThis->onDefault(pszData, nLength);
853 const XML_Char *pszContext,
854 const XML_Char *pszBase,
855 const XML_Char *pszSystemID,
856 const XML_Char *pszPublicID)
859 return pThis->onExternalEntityRef(pszContext,
860 pszBase, pszSystemID, pszPublicID) ? 1 : 0;
879 const XML_Char *entityName,
880 int is_parameter_entity)
883 pThis->onSkippedEntityHandler(entityName, is_parameter_entity);
893 const XML_Char *pszName,
897 return pThis->onUnknownEncoding(pszName, pInfo) ? 1 : 0;
907 const XML_Char *pszPrefix,
908 const XML_Char *pszURI)
911 pThis->onStartNamespaceDecl(pszPrefix, pszURI);
920 const XML_Char *pszPrefix)
923 pThis->onEndNamespaceDecl(pszPrefix);
934 const XML_Char *pszVersion,
935 const XML_Char *pszEncoding,
939 pThis->onXmlDecl(pszVersion, pszEncoding, nStandalone != 0);
951 const XML_Char *pszDoctypeName,
952 const XML_Char *pszSysID,
953 const XML_Char *pszPubID,
954 int nHasInternalSubset)
957 pThis->onStartDoctypeDecl(pszDoctypeName, pszSysID,
958 pszPubID, nHasInternalSubset != 0);
968 pThis->onEndDoctypeDecl();
999 const XML_Char **papszAttrs);
1021 const XML_Char *pszData);
1027 virtual void onComment(
const XML_Char *pszData);
1044 virtual void onDefault(
const XML_Char *pszData,
1055 const XML_Char *pszBase,
1056 const XML_Char *pszSystemID,
1057 const XML_Char *pszPublicID);
1082 XML_Encoding *pInfo);
1090 const XML_Char *pszURI);
1104 virtual void onXmlDecl(
const XML_Char *pszVersion,
1105 const XML_Char *pszEncoding,
1116 const XML_Char *pszSysID,
1117 const XML_Char *pszPubID,
1118 bool fHasInternalSubset);
1126 #endif // COPASI_CExpat
virtual void onEndElement(const XML_Char *pszName)
void onStartNamespaceDecl(const XML_Char *pszPrefix, const XML_Char *pszURI)
virtual void onEndDoctypeDecl()
void enableEndElementHandler(bool fEnable=true)
static const XML_LChar * getErrorString(enum XML_Error nError)
void enableElementHandler(bool fEnable=true)
void onEndNamespaceDecl(const XML_Char *pszPrefix)
long getCurrentByteIndex()
void onStartDoctypeDecl(const XML_Char *pszDoctypeName, const XML_Char *pszSysID, const XML_Char *pszPubID, bool fHasInternalSubset)
void enableDefaultHandler(bool fEnable=true, bool fExpand=true)
virtual void onStartCdataSection()
static bool toBool(const char *attribute)
void enableStartDoctypeDeclHandler(bool fEnable=true)
static const XML_LChar * getExpatVersion()
void onXmlDecl(const XML_Char *pszVersion, const XML_Char *pszEncoding, bool fStandalone)
bool create(const XML_Char *pszEncoding=NULL, const XML_Char *pszSep=NULL)
static void defaultHandler(void *pUserData, const XML_Char *pszData, int nLength)
virtual void onProcessingInstruction(const XML_Char *pszTarget, const XML_Char *pszData)
bool parseBuffer(int nLength, bool fIsFinal=true)
virtual void onStartDoctypeDecl(const XML_Char *pszDoctypeName, const XML_Char *pszSysID, const XML_Char *pszPubID, bool fHasInternalSubset)
static void skippedEntityHandler(void *pUserData, const XML_Char *entityName, int is_parameter_entity)
const char * getAttributeValue(const std::string &name, const char **attributes, const bool &required=true) const
void onStartCdataSection()
void enableEndDoctypeDeclHandler(bool fEnable=true)
void onDefault(const XML_Char *pszData, int nLength)
static void startNamespaceDeclHandler(void *pUserData, const XML_Char *pszPrefix, const XML_Char *pszURI)
static void xmlDeclHandler(void *pUserData, const XML_Char *pszVersion, const XML_Char *pszEncoding, int nStandalone)
static void commentHandler(void *pUserData, const XML_Char *pszData)
static int unknownEncodingHandler(void *pUserData, const XML_Char *pszName, XML_Encoding *pInfo)
void enableEndCdataSectionHandler(bool fEnable=true)
virtual bool onExternalEntityRef(const XML_Char *pszContext, const XML_Char *pszBase, const XML_Char *pszSystemID, const XML_Char *pszPublicID)
static void startElementHandler(void *pUserData, const XML_Char *pszName, const XML_Char **papszAttrs)
virtual void onEndCdataSection()
enum XML_Error getErrorCode()
void enableStartCdataSectionHandler(bool fEnable=true)
virtual void onComment(const XML_Char *pszData)
virtual void onDefault(const XML_Char *pszData, int nLength)
void enableCdataSectionHandler(bool fEnable=true)
const char * getInputContext(int *pnOffset, int *pnSize)
virtual void onXmlDecl(const XML_Char *pszVersion, const XML_Char *pszEncoding, bool fStandalone)
virtual void onStartNamespaceDecl(const XML_Char *pszPrefix, const XML_Char *pszURI)
void enableXmlDeclHandler(bool fEnable=true)
static void endNamespaceDeclHandler(void *pUserData, const XML_Char *pszPrefix)
void onComment(const XML_Char *pszData)
void enableDoctypeDeclHandler(bool fEnable=true)
void enableEndNamespaceDeclHandler(bool fEnable=true)
void enableStartElementHandler(bool fEnable=true)
void onCharacterData(const XML_Char *pszData, int nLength)
void enableCommentHandler(bool fEnable=true)
int getCurrentColumnNumber()
void onProcessingInstruction(const XML_Char *pszTarget, const XML_Char *pszData)
virtual void onCharacterData(const XML_Char *pszData, int nLength)
void * getBuffer(int nLength)
void enableStartNamespaceDeclHandler(bool fEnable=true)
void enableNamespaceDeclHandler(bool fEnable=true)
bool onUnknownEncoding(const XML_Char *pszName, XML_Encoding *pInfo)
static void startCdataSectionHandler(void *pUserData)
void onEndElement(const XML_Char *pszName)
static void endElementHandler(void *pUserData, const XML_Char *pszName)
const char * getAttributeValue(const std::string &name, const char **attributes, const char *def) const
bool onExternalEntityRef(const XML_Char *pszContext, const XML_Char *pszBase, const XML_Char *pszSystemID, const XML_Char *pszPublicID)
static void endCdataSectionHandler(void *pUserData)
void enableSkippedEntityHandler(bool fEnable=true)
static void characterDataHandler(void *pUserData, const XML_Char *pszData, int nLength)
static void endDoctypeDeclHandler(void *pUserData)
virtual void onEndNamespaceDecl(const XML_Char *pszPrefix)
void onSkippedEntityHandler(const XML_Char *, int)
static int externalEntityRefHandler(XML_Parser pUserData, const XML_Char *pszContext, const XML_Char *pszBase, const XML_Char *pszSystemID, const XML_Char *pszPublicID)
virtual void onStartElement(const XML_Char *pszName, const XML_Char **papszAttrs)
virtual void onSkippedEntityHandler(const XML_Char *, int)
static void startDoctypeDeclHandler(void *pUserData, const XML_Char *pszDoctypeName, const XML_Char *pszSysID, const XML_Char *pszPubID, int nHasInternalSubset)
void enableCharacterDataHandler(bool fEnable=true)
int getCurrentByteCount()
virtual bool onUnknownEncoding(const XML_Char *pszName, XML_Encoding *pInfo)
int getCurrentLineNumber() const
bool parse(const char *pszBuffer, int nLength=-1, bool fIsFinal=true)
void onStartElement(const XML_Char *pszName, const XML_Char **papszAttrs)
const XML_LChar * getErrorString()
static void getExpatVersion(int &nMajor, int &nMinor, int &nMicro)
void enableExternalEntityRefHandler(bool fEnable=true)
void enableProcessingInstructionHandler(bool fEnable=true)
void enableUnknownEncodingHandler(bool fEnable=true)
static void processingInstructionHandler(void *pUserData, const XML_Char *pszTarget, const XML_Char *pszData)