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 #ifndef INITCTXTAPPINFOFUNC
00026 #define INITCTXTAPPINFOFUNC rtXmlInitCtxtAppInfo
00027 #define FREECTXTAPPINFOFUNC rtXmlFreeCtxtAppInfo
00028 #define RESETCTXTAPPINFOFUNC rtXmlResetCtxtAppInfo
00029 #endif
00030
00031 EXTXMLMETHOD int INITCTXTAPPINFOFUNC (OSCTXT* pctxt)
00032 {
00033 OSXMLCtxtInfo* pCtxtInfo;
00034 pctxt->pXMLInfo = (OSXMLCtxtInfo*)
00035 rtxMemSysAlloc (pctxt, sizeof(OSXMLCtxtInfo));
00036 if (pctxt->pXMLInfo == 0) return LOG_RTERRNEW (pctxt, RTERR_NOMEM);
00037 pCtxtInfo = (OSXMLCtxtInfo*)pctxt->pXMLInfo;
00038 pCtxtInfo->pFreeFunc = FREECTXTAPPINFOFUNC;
00039 pCtxtInfo->pResetFunc = RESETCTXTAPPINFOFUNC;
00040 pCtxtInfo->schemaLocation = 0;
00041 pCtxtInfo->noNSSchemaLoc = 0;
00042 pCtxtInfo->xsiTypeAttr = 0;
00043 pCtxtInfo->encoding = OSXMLUTF8;
00044 pCtxtInfo->mbCdataProcessed = FALSE;
00045 pCtxtInfo->mSaxLevel = pCtxtInfo->mSkipLevel = 0;
00046 pCtxtInfo->maxSaxErrors = pCtxtInfo->errorsCnt = 0;
00047 pCtxtInfo->facets.totalDigits = -1;
00048 pCtxtInfo->facets.fractionDigits = -1;
00049 pCtxtInfo->indent = OSXMLINDENT;
00050 pCtxtInfo->indentChar = ' ';
00051 pCtxtInfo->soapVersion = 12;
00052 pCtxtInfo->encodingStr = 0;
00053 rtxDListInit (&pCtxtInfo->namespaceList);
00054 rtxDListInit (&pCtxtInfo->encodedNSList);
00055 rtxDListInit (&pCtxtInfo->sortedAttrList);
00056 pCtxtInfo->nsPfxLinkStack.count = 0;
00057 pCtxtInfo->nsPfxLinkStack.top = 0;
00058 pCtxtInfo->nsURITable.nrows = 0;
00059 pCtxtInfo->nsURITable.data = 0;
00060 pCtxtInfo->byteOrderMark = OSXMLBOM_NO_BOM;
00061 rtxMemBufInit (pctxt, &pCtxtInfo->memBuf, OSRTMEMBUFSEG);
00062
00063
00064
00065
00066 pCtxtInfo->pXmlPPReader = 0;
00067 pCtxtInfo->attrsBuff = 0;
00068 pCtxtInfo->attrsBuffSize = 0;
00069 pCtxtInfo->attrStartPos = 0;
00070
00071
00072 #ifndef XERCONTEXT
00073 rtErrXmlInit ();
00074 #endif
00075
00076 pctxt->state = OSXMLINIT;
00077
00078 return 0;
00079 }
00080
00081 EXTXMLMETHOD int FREECTXTAPPINFOFUNC (OSCTXT* pctxt)
00082 {
00083 if (0 != pctxt->pXMLInfo) {
00084 OSXMLCtxtInfo* pCtxtInfo = (OSXMLCtxtInfo*)pctxt->pXMLInfo;
00085 OSCTXT* pXMLInfoCtxt = pctxt;
00086 if (0 != pCtxtInfo->pFreeFunc) {
00087
00088
00089
00090 if (0 != pCtxtInfo->memBuf.pctxt)
00091 pXMLInfoCtxt = pCtxtInfo->memBuf.pctxt;
00092 rtxMemBufFree (&pCtxtInfo->memBuf);
00093 #ifndef XERCONTEXT
00094 rtXmlNSRemoveAll (pctxt);
00095 #endif
00096 rtxMemFreeArray (pXMLInfoCtxt, pCtxtInfo->schemaLocation);
00097 rtxMemFreeArray (pXMLInfoCtxt, pCtxtInfo->noNSSchemaLoc);
00098 rtxMemFreeArray (pXMLInfoCtxt, pCtxtInfo->xsiTypeAttr);
00099 pCtxtInfo->pFreeFunc = 0;
00100 pCtxtInfo->noNSSchemaLoc = 0;
00101 pCtxtInfo->schemaLocation = 0;
00102 pCtxtInfo->nsURITable.nrows = 0;
00103 pCtxtInfo->nsURITable.data = 0;
00104
00105
00106
00107 rtxDListFreeNodes (pXMLInfoCtxt, &pCtxtInfo->namespaceList);
00108 rtxDListFreeNodes (pXMLInfoCtxt, &pCtxtInfo->encodedNSList);
00109 rtxDListFreeNodes (pXMLInfoCtxt, &pCtxtInfo->sortedAttrList);
00110
00111 rtxMemFreeArray (pctxt, pCtxtInfo->attrsBuff);
00112 pCtxtInfo->attrsBuff = 0;
00113 pCtxtInfo->attrsBuffSize = 0;
00114 pCtxtInfo->attrStartPos = 0;
00115
00116 #ifndef XERCONTEXT
00117 rtXmlpFreeReader (pctxt, pCtxtInfo);
00118 #endif
00119 }
00120 pctxt->pXMLInfo = 0;
00121 return 0;
00122 }
00123 return LOG_RTERRNEW (pctxt, RTERR_NOTINIT);
00124 }
00125
00126 EXTXMLMETHOD int RESETCTXTAPPINFOFUNC (OSCTXT* pctxt)
00127 {
00128 if (0 != pctxt->pXMLInfo) {
00129 OSXMLCtxtInfo* pCtxtInfo = (OSXMLCtxtInfo*)pctxt->pXMLInfo;
00130 rtxMemBufReset (&pCtxtInfo->memBuf);
00131 #ifndef XERCONTEXT
00132 rtXmlNSRemoveAll (pctxt);
00133 #endif
00134 rtxMemFreeArray (pctxt, pCtxtInfo->schemaLocation);
00135 rtxMemFreeArray (pctxt, pCtxtInfo->noNSSchemaLoc);
00136 rtxMemFreeArray (pctxt, pCtxtInfo->xsiTypeAttr);
00137 pCtxtInfo->noNSSchemaLoc = 0;
00138 pCtxtInfo->schemaLocation = 0;
00139 pCtxtInfo->xsiTypeAttr = 0;
00140 pCtxtInfo->pFreeFunc = FREECTXTAPPINFOFUNC;
00141 pCtxtInfo->pResetFunc = RESETCTXTAPPINFOFUNC;
00142 pCtxtInfo->encoding = OSXMLUTF8;
00143 pCtxtInfo->indent = OSXMLINDENT;
00144 pCtxtInfo->indentChar = ' ';
00145 pCtxtInfo->encodingStr = 0;
00146 pCtxtInfo->nsURITable.nrows = 0;
00147 pCtxtInfo->nsURITable.data = 0;
00148 pCtxtInfo->pXmlPPReader = 0;
00149 rtxMemFreeArray (pctxt, pCtxtInfo->attrsBuff);
00150 rtxDListInit (&pCtxtInfo->sortedAttrList);
00151 pCtxtInfo->attrsBuff = 0;
00152 pCtxtInfo->attrsBuffSize = 0;
00153 pCtxtInfo->attrStartPos = 0;
00154 return 0;
00155 }
00156 return LOG_RTERRNEW (pctxt, RTERR_NOTINIT);
00157 }
00158
00159