Home > Support > Documentation

osrtxml.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2003-2007 by Objective Systems, Inc.
00003  *
00004  * This software is furnished under a license and may be used and copied
00005  * only in accordance with the terms of such license and with the
00006  * inclusion of the above copyright notice. This software or any other
00007  * copies thereof may not be provided or otherwise made available to any
00008  * other person. No title to and ownership of the software is hereby
00009  * transferred.
00010  *
00011  * The information in this software is subject to change without notice
00012  * and should not be construed as a commitment by Objective Systems, Inc.
00013  *
00014  * PROPRIETARY NOTICE
00015  *
00016  * This software is an unpublished work subject to a confidentiality agreement
00017  * and is protected by copyright and trade secret law.  Unauthorized copying,
00018  * redistribution or other use of this work is prohibited.
00019  *
00020  * The above notice of copyright on this source code product does not indicate
00021  * any actual or intended publication of such source code.
00022  *
00023  *****************************************************************************/
00028 #ifndef _OSRTXML_H_
00029 #define _OSRTXML_H_
00030 
00031 #define OSXMLNS12
00032 
00033 #ifdef BUILDXMLDLL
00034 #define EXTERNXML __declspec(dllexport)
00035 #elif defined (USEXMLDLL)
00036 #define EXTERNXML __declspec(dllimport)
00037 #else
00038 #define EXTERNXML
00039 #endif /* BUILDXMLDLL */
00040 
00041 #include "rtxsrc/rtxCommon.h"
00042 #include "rtxmlsrc/rtSaxDefs.h"
00043 #include "rtxsrc/rtxDList.h"
00044 #include "rtxsrc/rtxMemBuf.h"
00045 #include "rtxmlsrc/rtXmlErrCodes.h"
00046 #include "rtxmlsrc/rtXmlNamespace.h"
00047 
00048 /* XML specific context flags */
00049 
00050 #define OSUPCASE        0x00008000  /* convert characters to upper case */
00051 #define OSTERMSTART     0x00004000  /* term for start elem (>) needed   */
00052 #define OSEMPTYELEM     0x00002000  /* element is empty (no content)    */
00053 #define OSQUALATTR      0x00001000  /* qualified attribute              */
00054 #define OSXMLFRAG       0x00000800  /* XML fragment (not full doc)      */
00055 #define OSXMLNSSET      0x00000400  /* Indicates namespaces are set     */
00056 
00057 typedef enum { 
00058    OSXMLUTF8, 
00059    OSXMLUTF16
00060 } OSXMLEncoding;
00061 
00062 typedef enum { 
00063    OSSOAPNONE, OSSOAPBODY, OSSOAPFAULT
00064 } OSXMLSOAPMsgType;
00065 
00066 typedef enum {
00067    OSXMLBOM_NO_BOM,
00068    OSXMLBOM_UTF32_BE,
00069    OSXMLBOM_UTF32_LE,
00070    OSXMLBOM_UTF16_BE,
00071    OSXMLBOM_UTF16_LE,
00072    OSXMLBOM_UTF8
00073 } OSXMLBOM;
00074 
00075 typedef struct OSXMLFacets {
00076    int totalDigits;
00077    int fractionDigits;
00078 } OSXMLFacets;
00079 
00080 typedef struct {
00081    const OSUTF8CHAR* value;
00082    size_t length;
00083 } OSXMLStrFragment;
00084 
00085 typedef struct {
00086    OSXMLStrFragment mQName;
00087    OSXMLStrFragment mLocalName;
00088    OSXMLStrFragment mPrefix;
00089 } OSXMLNameFragments;
00090 
00091 typedef struct OSXMLItemDescr {
00092    OSXMLStrFragment localName;
00093    OSINT16 nsidx; /* namespace index */
00094 } OSXMLItemDescr;
00095 
00096 typedef OSXMLItemDescr OSXMLAttrDescr;
00097 typedef OSXMLItemDescr OSXMLElemDescr;
00098 
00099 typedef struct OSXMLElemIDRec {
00100    OSXMLElemDescr descr;
00101    OSUINT16 id;
00102 } OSXMLElemIDRec;
00103 
00104 typedef struct OSXMLGroupDesc {
00105    int row;
00106    int num;
00107    int anyCase;
00108 } OSXMLGroupDesc;
00109 
00110 #define OSXMLFRAGSEQUAL(frag1,frag2) \
00111 (frag1.length==frag2.length && !memcmp(frag1.value,frag2.value,frag1.length))
00112 
00113 #define OSXMLQNAMEEQUALS(xnamefrag,qnametext) rtxUTF8StrnEqual \
00114 (xnamefrag.mQName.value, OSUTF8(qnametext), xnamefrag.mQName.length)
00115 
00116 #define OSXMLSETUTF8DECPTR(pctxt,str) \
00117 rtxInitContextBuffer (pctxt, OSRTSAFECONSTCAST (OSOCTET*, str), \
00118 OSCRTLSTRLEN ((const char*)str))
00119 
00120 #define IS_XMLNSATTR(name) \
00121 ((OSCRTLSTRLEN((const char*)name) >= 5) && name[0] == 'x' && name[1] == 'm' && \
00122  name[2] == 'l' && name[3] == 'n' && name[4] == 's')
00123 
00124 #define IS_XSIATTR(name) \
00125 ((OSCRTLSTRLEN((const char*)name) >= 4) && name[0] == 'x' && name[1] == 's' && \
00126  name[2] == 'i' && name[3] == ':')
00127 
00128 /*
00129  * NOTE: If a field is added to this structure, make sure to add code to 
00130  * to rtXmlInitCtxtAppInfo in rtXmlContext.c to initialize it.
00131  */
00132 typedef struct {
00133    OSFreeCtxtAppInfoPtr  pFreeFunc; /* Free function pointer            */
00134    OSResetCtxtAppInfoPtr pResetFunc;/* Reset function pointer           */
00135    OSUTF8CHAR* schemaLocation;  /* xsi:schemaLocation attribute         */
00136    OSUTF8CHAR* noNSSchemaLoc;   /* xsi:noNamespaceSchemaLocation attr   */
00137    OSUTF8CHAR* xsiTypeAttr;     /* xsi:type attribute value             */
00138    OSXMLEncoding encoding;      /* XML document encoding (ex. UTF-8)    */
00139    OSRTDList namespaceList;     /* list of OSXMLNamespace               */
00140    OSRTDList encodedNSList;     /* list of encoded OSXMLNamespace       */
00141    OSXMLNSPfxLinkStack nsPfxLinkStack;
00142    OSXMLNSURITable nsURITable;
00143    OSRTMEMBUF  memBuf;          /* memory buffer for character method   */
00144    OSINT32 mSaxLevel;
00145    OSINT32 mSkipLevel;
00146    OSUINT32 maxSaxErrors;       /* maximum number of errors             */
00147    OSUINT32 errorsCnt;          /* counter of errors                    */
00148    OSUINT8 indent;              /* XML output indent                    */
00149    OSBOOL  mbCdataProcessed;    /* CDATA section was processed          */
00150    char    indentChar;          /* indent char, default is space (' ')  */
00151    OSOCTET spare;               /* for 32-bit field alignment           */
00152    OSXMLFacets facets;
00153    const OSUTF8CHAR* encodingStr;/* name of encoding ("UTF-8", "ISO-...")*/
00154    OSXMLBOM byteOrderMark;   
00155    struct OSXMLReader* pXmlPPReader; /* pull-parser reader object       */
00156 } OSXMLCtxtInfo;
00157 
00158 typedef enum { 
00159    OSXMLINIT, 
00160    OSXMLHEADER, 
00161    OSXMLSTART, 
00162    OSXMLATTR,
00163    OSXMLDATA, 
00164    OSXMLEND
00165 } OSXMLState;
00166 
00167 typedef struct OSXMLQName {
00168    const OSUTF8CHAR* nsPrefix;
00169    const OSUTF8CHAR* ncName;
00170 } OSXMLQName;
00171 
00172 struct OSSAXHandlerBase;
00173 
00174 typedef struct OSIntegerFmt {
00175    OSINT8 integerMaxDigits;   /* Maximum digits in integer part; 
00176                                  leading zeros will be added, if necessary. */
00177    OSBOOL signPresent;        /* Indicates, sign must present, even if value 
00178                                  is positive. */
00179 } OSIntegerFmt;
00180 
00181 typedef struct OSDecimalFmt {
00182    OSINT8 totalDigits;        /* total significiant digits */
00183    OSINT8 fractionDigits;     /* maximum signficiant digits in fraction, 
00184                                  precision */
00185    OSINT8 fractionMinDigits;  /* minimum digits in fraction, if 
00186                                  fraction digits less than this value 
00187                                  trailing zeros will be added. */
00188    OSINT8 integerMaxDigits;   /* Maximum digits in integer part; if it is 0 
00189                                  and integer part is 0 then integer part 
00190                                  will be omitted, like .3, or -.3 */
00191    OSINT8 integerMinDigits;   /* Minimum digits in integer part, leading zeros
00192                                  will be added if necessary. */
00193    OSBOOL signPresent;        /* Indicates, sign must present, even if value 
00194                                  is positive. */
00195    OSBOOL pointPresent;       /* Indicates, decimal point must present, even 
00196                                  if value's fraction is 0 */
00197    OSUINT8 nPatterns;         /* number of patterns stored in 'patterns' */
00198    const char* const* patterns; /* patterns, used to verify value format is 
00199                                  correct */
00200 } OSDecimalFmt;
00201 
00202 typedef struct OSDoubleFmt {
00203    OSINT8 totalDigits;        /* total significiant digits */
00204    OSINT8 fractionDigits;     /* maximum signficiant digits in fraction, 
00205                                  precision */
00206    OSINT8 fractionMinDigits;  /* minimum digits in fraction, if 
00207                                  fraction digits less than this value 
00208                                  trailing zeros will be added. */
00209    OSINT8 integerMaxDigits;   /* Maximum digits in integer part; if it is 0 
00210                                  and integer part is 0 then integer part 
00211                                  will be omitted, like .3, or -.3 */
00212    OSINT8 integerMinDigits;   /* Minimum digits in integer part, leading zeros
00213                                  will be added if necessary. */
00214    OSINT8 expSymbol;          /* 'E' or 'e' only; 0 if no exp is expected, 
00215                                  -1 - default ('E') */
00216    OSINT16 expMinValue;       /* Minimum exponent value. By default - -infinity */
00217    OSINT16 expMaxValue;       /* Maximum exponent value. By default - infinity */
00218    OSINT8 expDigits;          /* Total digits in exponent part; if exponent's
00219                                  value is not enough, trailing zeros will be
00220                                  added */
00221    OSBOOL signPresent;        /* Indicates, sign must present, even if value 
00222                                  is positive. */
00223    OSBOOL pointPresent;       /* Indicates, decimal point must present, even 
00224                                  if value's fraction is 0 */
00225    OSBOOL expPresent;         /* Indicates, exponent must present, even 
00226                                  if its value is 0 */
00227    OSBOOL expSignPresent;     /* Indicates, exponent sign must present, even 
00228                                  if its value is > 0 */
00229 } OSDoubleFmt;
00230 
00231 #define OSXMLINDENT     3
00232 
00233 #ifdef XML_UNICODE
00234 #define rtXmlErrAddStrParm rtxErrAddUniStrParm
00235 #else
00236 #define rtXmlErrAddStrParm rtxErrAddStrParm
00237 #endif
00238 
00242 typedef enum {
00243    OSXMLWSM_PRESERVE = 0,
00244    OSXMLWSM_REPLACE,
00245    OSXMLWSM_COLLAPSE
00246 } OSXMLWhiteSpaceMode;
00247 
00248 #ifdef __cplusplus
00249 extern "C" {
00250 #endif
00251 
00252 /* run-time XML function prototypes */
00253 
00260 EXTERNXML int rtXmlInitContext (OSCTXT* pctxt);
00261 
00268 EXTERNXML int rtXmlInitCtxtAppInfo (OSCTXT* pctxt);
00269 
00280 EXTERNXML int rtXmlCreateFileInputSource (OSCTXT* pctxt, const char* filepath);
00281 
00282 EXTERNXML OSBOOL rtXmlCmpQName 
00283 (const OSUTF8CHAR* qname1, const OSUTF8CHAR* name2, const OSUTF8CHAR* nsPrefix2);
00284 
00285 EXTERNXML int rtXmlGetBase64StrDecodedLen 
00286    (const OSUTF8CHAR* inpdata, size_t srcDataSize, 
00287     size_t* pNumOcts, size_t* pSrcDataLen);
00288 
00309 EXTERNXML int rtXmlDecBase64Binary (OSRTMEMBUF* pMemBuf, 
00310                                     const OSUTF8CHAR* inpdata, 
00311                                     int length);
00312 
00336 EXTERNXML int rtXmlDecBase64Str (OSCTXT* pctxt, 
00337                                  OSOCTET* pvalue, OSUINT32* pnocts, 
00338                                  OSINT32 bufsize);
00339 
00365 EXTERNXML int rtXmlDecBase64StrValue (OSCTXT* pctxt, 
00366                                       OSOCTET* pvalue, OSUINT32* pnocts, 
00367                                       size_t bufSize, size_t srcDataLen);
00368 
00390 EXTERNXML int rtXmlDecBigInt 
00391 (OSCTXT* pctxt, const OSUTF8CHAR** ppvalue);
00392 
00403 EXTERNXML int rtXmlDecBool (OSCTXT* pctxt, OSBOOL* pvalue);
00404 
00417 EXTERNXML int rtXmlDecDate (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00418 
00437 EXTERNXML int rtXmlDecTime (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00438 
00451 EXTERNXML int rtXmlDecDateTime (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00452 
00465 EXTERNXML int rtXmlDecDecimal (OSCTXT* pctxt, OSREAL* pvalue);
00466 
00479 EXTERNXML int rtXmlDecDouble (OSCTXT* pctxt, OSREAL* pvalue);
00480 
00497 EXTERNXML int rtXmlDecDynBase64Str (OSCTXT* pctxt, OSDynOctStr* pvalue);
00498 
00514 EXTERNXML int rtXmlDecDynHexStr (OSCTXT* pctxt, OSDynOctStr* pvalue);
00515 
00529 EXTERNXML int rtXmlDecUTF8Str 
00530 (OSCTXT* pctxt, OSUTF8CHAR* outdata, size_t max_len);
00531 
00532 
00546 EXTERNXML int rtXmlDecDynUTF8Str (OSCTXT* pctxt, const OSUTF8CHAR** outdata);
00547 
00566 EXTERNXML int rtXmlDecHexBinary (OSRTMEMBUF* pMemBuf, 
00567                                  const OSUTF8CHAR* inpdata, 
00568                                  int length);
00569 
00592 EXTERNXML int rtXmlDecHexStr (OSCTXT* pctxt, 
00593                               OSOCTET* pvalue, OSUINT32* pnocts, 
00594                               OSINT32 bufsize);
00595 
00596 EXTERNXML int rtXmlDecHexStrValue (OSCTXT* pctxt,
00597    const OSUTF8CHAR* const inpdata, size_t nbytes, OSOCTET* pvalue, 
00598    OSUINT32* pnbits, OSINT32 bufsize);
00599 
00612 EXTERNXML int rtXmlDecGYear (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00613 
00626 EXTERNXML int rtXmlDecGYearMonth (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00627 
00640 EXTERNXML int rtXmlDecGMonth (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00641 
00654 EXTERNXML int rtXmlDecGMonthDay (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00655 
00668 EXTERNXML int rtXmlDecGDay (OSCTXT* pctxt, OSXSDDateTime* pvalue);
00669 
00682 EXTERNXML int rtXmlDecInt (OSCTXT* pctxt, OSINT32* pvalue);
00683 
00697 EXTERNXML int rtXmlDecInt8 (OSCTXT* pctxt, OSINT8* pvalue);
00698 
00711 EXTERNXML int rtXmlDecInt16 (OSCTXT* pctxt, OSINT16* pvalue);
00712 
00725 EXTERNXML int rtXmlDecInt64 (OSCTXT* pctxt, OSINT64* pvalue);
00726 
00739 EXTERNXML int rtXmlDecUInt (OSCTXT* pctxt, OSUINT32* pvalue);
00740 
00754 EXTERNXML int rtXmlDecUInt8 (OSCTXT* pctxt, OSUINT8* pvalue);
00755 
00768 EXTERNXML int rtXmlDecUInt16 (OSCTXT* pctxt, OSUINT16* pvalue);
00769 
00782 EXTERNXML int rtXmlDecUInt64 (OSCTXT* pctxt, OSUINT64* pvalue);
00783 
00802 EXTERNXML int rtXmlDecNSAttr
00803 (OSCTXT* pctxt, const OSUTF8CHAR* attrName, const OSUTF8CHAR* attrValue, 
00804  OSRTDList* pNSAttrs, const OSUTF8CHAR* nsTable[], OSUINT32 nsTableRowCount);
00805 
00830 EXTERNXML const OSUTF8CHAR* rtXmlDecQName 
00831 (OSCTXT* pctxt, const OSUTF8CHAR* qname, const OSUTF8CHAR** prefix);
00832 
00845 EXTERNXML int rtXmlDecXSIAttr 
00846    (OSCTXT* pctxt, const OSUTF8CHAR* attrName, const OSUTF8CHAR* attrValue);
00847 
00862 EXTERNXML int rtXmlDecXSIAttrs (OSCTXT* pctxt, const OSUTF8CHAR* const* attrs,
00863    const char* typeName);
00864 
00881 EXTERNXML int rtXmlDecXmlStr (OSCTXT* pctxt, OSXMLSTRING* outdata);
00882 
00895 EXTERNXML int rtXmlParseElementName (OSCTXT* pctxt, OSUTF8CHAR** ppName);
00896 
00909 EXTERNXML int rtXmlParseElemQName (OSCTXT* pctxt, OSXMLQName* pQName);
00910 
00937 EXTERNXML int rtXmlEncAny (OSCTXT* pctxt, OSXMLSTRING* pvalue, 
00938                            const OSUTF8CHAR* elemName, 
00939                            OSXMLNamespace* pNS);
00940 
00941 EXTERNXML int rtXmlEncAnyStr 
00942 (OSCTXT* pctxt, const OSUTF8CHAR* pvalue, 
00943  const OSUTF8CHAR* elemName, OSXMLNamespace* pNS);
00944 
00955 EXTERNXML int rtXmlEncAnyAttr (OSCTXT* pctxt, OSRTDList* pAnyAttrList);
00956 
00972 EXTERNXML int rtXmlEncBase64Binary (OSCTXT* pctxt, OSUINT32 nocts, 
00973                                     const OSOCTET* value, 
00974                                     const OSUTF8CHAR* elemName, 
00975                                     OSXMLNamespace* pNS);
00976 
00990 EXTERNXML int rtXmlEncBase64BinaryAttr 
00991    (OSCTXT* pctxt, OSUINT32 nocts, const OSOCTET* value,
00992     const OSUTF8CHAR* attrName, size_t attrNameLen);
00993 
01005 EXTERNXML int rtXmlEncBase64StrValue (OSCTXT* pctxt, OSUINT32 nocts, 
01006                                       const OSOCTET* value);
01007 
01032 EXTERNXML int rtXmlEncBigInt (OSCTXT* pctxt, const OSUTF8CHAR* value, 
01033                               const OSUTF8CHAR* elemName, 
01034                               OSXMLNamespace* pNS);
01035 
01050 EXTERNXML int rtXmlEncBigIntAttr (OSCTXT* pctxt, const OSUTF8CHAR* value, 
01051                        const OSUTF8CHAR* attrName, size_t attrNameLen);
01052 
01066 EXTERNXML int rtXmlEncBigIntValue (OSCTXT* pctxt, const OSUTF8CHAR* value);
01067 
01086 EXTERNXML int rtXmlEncBitString (OSCTXT* pctxt, OSUINT32 nbits, 
01087                                  const OSOCTET* value, 
01088                                  const OSUTF8CHAR* elemName, 
01089                                  OSXMLNamespace* pNS);
01090 
01102 EXTERNXML int rtXmlEncBinStrValue (OSCTXT* pctxt, 
01103                                    OSUINT32 nbits, 
01104                                    const OSOCTET* data);
01105 
01120 EXTERNXML int rtXmlEncBool (OSCTXT* pctxt, OSBOOL value, 
01121                             const OSUTF8CHAR* elemName, 
01122                             OSXMLNamespace* pNS);
01123 
01134 EXTERNXML int rtXmlEncBoolValue (OSCTXT* pctxt, OSBOOL value);
01135 
01147 EXTERNXML int rtXmlEncBoolAttr (OSCTXT* pctxt, OSBOOL value, 
01148                                 const OSUTF8CHAR* attrName, 
01149                                 size_t attrNameLen);
01150 
01168 EXTERNXML int rtXmlEncDate (OSCTXT* pctxt, const OSXSDDateTime* pvalue, 
01169                             const OSUTF8CHAR* elemName,
01170                             OSXMLNamespace* pNS);
01171 
01185 EXTERNXML int rtXmlEncDateValue 
01186    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01187 
01211 EXTERNXML int rtXmlEncTime (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01212                             const OSUTF8CHAR* elemName,
01213                             OSXMLNamespace* pNS);
01214 
01227 EXTERNXML int rtXmlEncTimeValue 
01228    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01229 
01245 EXTERNXML int rtXmlEncDateTime (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01246                                 const OSUTF8CHAR* elemName,
01247                                 OSXMLNamespace* pNS);
01248 
01260 EXTERNXML int rtXmlEncDateTimeValue 
01261    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01262 
01278 EXTERNXML int rtXmlEncDecimal (OSCTXT* pctxt, OSREAL value, 
01279                                const OSUTF8CHAR* elemName, 
01280                                OSXMLNamespace* pNS,
01281                                const OSDecimalFmt* pFmtSpec);
01282 
01295 EXTERNXML int rtXmlEncDecimalAttr (OSCTXT* pctxt, OSREAL value, 
01296                                    const OSUTF8CHAR* attrName, 
01297                                    size_t attrNameLen,
01298                                    const OSDecimalFmt* pFmtSpec);
01299 
01317 EXTERNXML int rtXmlEncDecimalValue (OSCTXT* pctxt, OSREAL value,
01318                                     const OSDecimalFmt* pFmtSpec,
01319                                     char* pDestBuf, size_t destBufSize);
01320 
01336 EXTERNXML int rtXmlEncDouble (OSCTXT* pctxt, OSREAL value, 
01337                               const OSUTF8CHAR* elemName, 
01338                               OSXMLNamespace* pNS,
01339                               const OSDoubleFmt* pFmtSpec);
01340 
01353 EXTERNXML int rtXmlEncDoubleAttr (OSCTXT* pctxt, OSREAL value, 
01354                                   const OSUTF8CHAR* attrName, 
01355                                   size_t attrNameLen,
01356                                   const OSDoubleFmt* pFmtSpec);
01357 
01371 EXTERNXML int rtXmlEncDoubleValue (OSCTXT* pctxt, OSREAL value,
01372                                    const OSDoubleFmt* pFmtSpec,
01373                                    int defaultPrecision);
01374 
01387 EXTERNXML int rtXmlEncEmptyElement (OSCTXT* pctxt, 
01388                                     const OSUTF8CHAR* elemName, 
01389                                     OSXMLNamespace* pNS, 
01390                                     OSRTDList* pNSAttrs, 
01391                                     OSBOOL terminate);
01392 
01402 EXTERNXML int rtXmlEncEndDocument (OSCTXT* pctxt);
01403 
01414 EXTERNXML int rtXmlEncEndElement (OSCTXT* pctxt, 
01415                                   const OSUTF8CHAR* elemName, 
01416                                   OSXMLNamespace* pNS);
01417 
01427 EXTERNXML int rtXmlEncEndSoapEnv (OSCTXT* pctxt); 
01428 
01440 EXTERNXML int rtXmlEncEndSoapElems (OSCTXT* pctxt, OSXMLSOAPMsgType msgtype); 
01441 
01456 EXTERNXML int rtXmlEncFloat (OSCTXT* pctxt, OSREAL value, 
01457                              const OSUTF8CHAR* elemName, 
01458                              OSXMLNamespace* pNS,
01459                              const OSDoubleFmt* pFmtSpec);
01460 
01473 EXTERNXML int rtXmlEncFloatAttr (OSCTXT* pctxt, OSREAL value, 
01474                                  const OSUTF8CHAR* attrName, 
01475                                  size_t attrNameLen,
01476                                  const OSDoubleFmt* pFmtSpec);
01477 
01492 EXTERNXML int rtXmlEncGYear (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01493                              const OSUTF8CHAR* elemName,
01494                              OSXMLNamespace* pNS);
01495 
01510 EXTERNXML int rtXmlEncGYearMonth (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01511                                   const OSUTF8CHAR* elemName,
01512                                   OSXMLNamespace* pNS);
01513 
01528 EXTERNXML int rtXmlEncGMonth (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01529                               const OSUTF8CHAR* elemName,
01530                               OSXMLNamespace* pNS);
01531 
01546 EXTERNXML int rtXmlEncGMonthDay (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01547                                  const OSUTF8CHAR* elemName,
01548                                  OSXMLNamespace* pNS);
01549 
01564 EXTERNXML int rtXmlEncGDay (OSCTXT* pctxt, const OSXSDDateTime* pvalue,
01565                             const OSUTF8CHAR* elemName,
01566                             OSXMLNamespace* pNS);
01567 
01579 EXTERNXML int rtXmlEncGYearValue 
01580    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01581 
01593 EXTERNXML int rtXmlEncGYearMonthValue 
01594    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01595 
01607 EXTERNXML int rtXmlEncGMonthValue 
01608    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01609 
01621 EXTERNXML int rtXmlEncGMonthDayValue 
01622    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01623 
01635 EXTERNXML int rtXmlEncGDayValue 
01636    (OSCTXT* pctxt, const OSXSDDateTime* pvalue);
01637 
01652 EXTERNXML int rtXmlEncHexBinary (OSCTXT* pctxt, OSUINT32 nocts, 
01653                                  const OSOCTET* value, 
01654                                  const OSUTF8CHAR* elemName, 
01655                                  OSXMLNamespace* pNS);
01656 
01669 EXTERNXML int rtXmlEncHexBinaryAttr 
01670    (OSCTXT* pctxt, OSUINT32 nocts, const OSOCTET* value,
01671     const OSUTF8CHAR* attrName, size_t attrNameLen);
01672 
01684 EXTERNXML int rtXmlEncHexStrValue (OSCTXT* pctxt, 
01685                                    OSUINT32 nocts, 
01686                                    const OSOCTET* data);
01687 
01698 EXTERNXML int rtXmlEncIndent (OSCTXT* pctxt);
01699 
01713 EXTERNXML int rtXmlEncInt (OSCTXT* pctxt, OSINT32 value, 
01714                            const OSUTF8CHAR* elemName, 
01715                            OSXMLNamespace* pNS);
01716 
01727 EXTERNXML int rtXmlEncIntValue (OSCTXT* pctxt, OSINT32 value);
01728 
01741 EXTERNXML int rtXmlEncIntAttr (OSCTXT* pctxt, OSINT32 value, 
01742                                const OSUTF8CHAR* attrName, 
01743                                size_t attrNameLen);
01744 
01760 EXTERNXML int rtXmlEncIntPattern (OSCTXT* pctxt, OSINT32 value, 
01761                                   const OSUTF8CHAR* elemName, 
01762                                   OSXMLNamespace* pNS, 
01763                                   const OSUTF8CHAR* pattern);
01764 
01765 EXTERNXML int rtXmlEncIntPatternValue (OSCTXT* pctxt, OSINT32 value, 
01766                                        const OSUTF8CHAR* pattern);
01767 
01782 EXTERNXML int rtXmlEncInt64 (OSCTXT* pctxt, OSINT64 value, 
01783                              const OSUTF8CHAR* elemName, 
01784                              OSXMLNamespace* pNS);
01785 
01797 EXTERNXML int rtXmlEncInt64Value (OSCTXT* pctxt, OSINT64 value);
01798 
01812 EXTERNXML int rtXmlEncInt64Attr (OSCTXT* pctxt, OSINT64 value, 
01813                                  const OSUTF8CHAR* attrName, 
01814                                  size_t attrNameLen);
01815 
01835 EXTERNXML int rtXmlEncNamedBits
01836 (OSCTXT* pctxt, const OSBitMapItem* pBitMap, OSUINT32 nbits, 
01837  const OSOCTET* pvalue, const OSUTF8CHAR* elemName, OSXMLNamespace* pNS);
01838 
01839 EXTERNXML int rtXmlEncNamedBitsValue
01840 (OSCTXT* pctxt, const OSBitMapItem* pBitMap, OSUINT32 nbits, 
01841  const OSOCTET* pvalue);
01842 
01854 #ifndef OSXMLNS12
01855 EXTERNXML int rtXmlEncNSAttrs (OSCTXT* pctxt);
01856 #else
01857 EXTERNXML int rtXmlEncNSAttrs (OSCTXT* pctxt, OSRTDList* pNSAttrs);
01858 #endif
01859 
01876 EXTERNXML int rtXmlEncReal10 
01877 (OSCTXT *pctxt, const OSUTF8CHAR *pvalue, const OSUTF8CHAR* elemName, 
01878  OSXMLNamespace* pNS);
01879 
01893 EXTERNXML int rtXmlEncSoapArrayTypeAttr 
01894 (OSCTXT* pctxt, const OSUTF8CHAR* name, const OSUTF8CHAR* value, 
01895  size_t itemCount);
01896 
01897 EXTERNXML int rtXmlEncSoapArrayTypeAttr2 
01898 (OSCTXT* pctxt, const OSUTF8CHAR* name, size_t nameLen, 
01899  const OSUTF8CHAR* value, size_t valueLen, size_t itemCount);
01900 
01912 EXTERNXML int rtXmlEncStartDocument (OSCTXT* pctxt);
01913 
01924 EXTERNXML int rtXmlEncBOM (OSCTXT* pctxt);
01937 EXTERNXML int rtXmlEncStartElement (OSCTXT* pctxt, 
01938                                     const OSUTF8CHAR* elemName, 
01939                                     OSXMLNamespace* pNS,
01940                                     OSRTDList* pNSAttrs, 
01941                                     OSBOOL terminate);
01942 
01952 EXTERNXML int rtXmlEncStartSoapEnv (OSCTXT* pctxt); 
01953 
01965 EXTERNXML int rtXmlEncStartSoapElems 
01966 (OSCTXT* pctxt, OSXMLSOAPMsgType msgtype); 
01967 
01981 EXTERNXML int rtXmlEncString (OSCTXT* pctxt, 
01982                               OSXMLSTRING* pxmlstr, 
01983                               const OSUTF8CHAR* elemName, 
01984                               OSXMLNamespace* pNS);
01985 
01995 EXTERNXML int rtXmlEncStringValue (OSCTXT* pctxt, const OSUTF8CHAR* value);
01996 
02007 EXTERNXML int rtXmlEncStringValue2 
02008    (OSCTXT* pctxt, const OSUTF8CHAR* value, size_t valueLen);
02009 
02020 EXTERNXML int rtXmlEncTermStartElement (OSCTXT* pctxt);
02021 
02037 EXTERNXML int rtXmlEncUnicodeStr (OSCTXT* pctxt, 
02038                                   const OSUNICHAR* value, 
02039                                   OSUINT32 nchars, 
02040                                   const OSUTF8CHAR* elemName, 
02041                                   OSXMLNamespace* pNS);
02042 
02054 EXTERNXML int rtXmlEncUTF8Attr (OSCTXT* pctxt, 
02055                                 const OSUTF8CHAR* name, 
02056                                 const OSUTF8CHAR* value);
02057 
02071 EXTERNXML int rtXmlEncUTF8Attr2 (OSCTXT* pctxt, 
02072                                  const OSUTF8CHAR* name, size_t nameLen, 
02073                                  const OSUTF8CHAR* value, size_t valueLen);
02074 
02088 EXTERNXML int rtXmlEncUTF8Str (OSCTXT* pctxt, 
02089                                const OSUTF8CHAR* value,
02090                                const OSUTF8CHAR* elemName, 
02091                                OSXMLNamespace* pNS);
02092 
02106 EXTERNXML int rtXmlEncUInt (OSCTXT* pctxt, OSUINT32 value, 
02107                             const OSUTF8CHAR* elemName, 
02108                             OSXMLNamespace* pNS);
02109 
02121 EXTERNXML int rtXmlEncUIntValue (OSCTXT* pctxt, OSUINT32 value);
02122 
02135 EXTERNXML int rtXmlEncUIntAttr (OSCTXT* pctxt, OSUINT32 value, 
02136                                 const OSUTF8CHAR* attrName, 
02137                                 size_t attrNameLen);
02138 
02154 EXTERNXML int rtXmlEncUInt64 (OSCTXT* pctxt, OSUINT64 value, 
02155                               const OSUTF8CHAR* elemName, 
02156                               OSXMLNamespace* pNS);
02157 
02170 EXTERNXML int rtXmlEncUInt64Value (OSCTXT* pctxt, OSUINT64 value);
02171 
02185 EXTERNXML int rtXmlEncUInt64Attr (OSCTXT* pctxt, OSUINT64 value, 
02186                                   const OSUTF8CHAR* attrName, 
02187                                   size_t attrNameLen);
02188 
02205 EXTERNXML int rtXmlEncXSIAttrs (OSCTXT* pctxt, OSBOOL needXSI);
02206 
02217 EXTERNXML int rtXmlFreeInputSource (OSCTXT* pctxt);
02218 
02219 EXTERNXML OSBOOL rtXmlStrCmpAsc (const OSUTF8CHAR* text1, const char* text2);
02220 
02221 EXTERNXML OSBOOL rtXmlStrnCmpAsc (const OSUTF8CHAR* text1, 
02222                                   const char* text2, size_t len);
02223 
02224 /*EXTERNXML int rtXmlFinalizeMemBuf (OSRTMEMBUF* pMemBuf);*/
02225 
02226 #define rtXmlFinalizeMemBuf(pMemBuf) do { \
02227 (pMemBuf)->pctxt->buffer.data = (pMemBuf)->buffer + (pMemBuf)->startidx; \
02228 (pMemBuf)->pctxt->buffer.size =                                      \
02229 ((pMemBuf)->usedcnt - (pMemBuf)->startidx);                          \
02230 (pMemBuf)->pctxt->buffer.dynamic = FALSE;                            \
02231 (pMemBuf)->pctxt->buffer.byteIndex = 0;                              \
02232 rtxMemBufReset (pMemBuf);                                            \
02233 } while(0)
02234 
02257 EXTERNXML int rtXmlSetEncBufPtr 
02258 (OSCTXT* pctxt, OSOCTET* bufaddr, size_t bufsiz);
02259 
02268 #define rtXmlGetEncBufPtr(pctxt) (pctxt)->buffer.data
02269 
02275 #define rtXmlGetEncBufLen(pctxt) (pctxt)->buffer.byteIndex
02276 
02277 
02285 EXTERNXML int rtXmlGetIndent (OSCTXT* pctxt);
02286 
02287 
02296 EXTERNXML OSBOOL rtXmlGetWriteBOM (OSCTXT* pctxt);
02297 
02306 EXTERNXML int rtXmlGetIndentChar (OSCTXT* pctxt);
02320 EXTERNXML int rtXmlPrepareContext (OSCTXT* pctxt);
02321 
02322 EXTERNXML int rtXmlSetDigitsFacets 
02323    (OSCTXT* pctxt, int totalDigits, int fractionDigits);
02324 
02335 EXTERNXML int rtXmlSetEncDocHdr (OSCTXT* pctxt, OSBOOL value);
02336 
02346 EXTERNXML int rtXmlSetEncodingStr 
02347 (OSCTXT* pctxt, const OSUTF8CHAR* encodingStr);
02348 
02364 EXTERNXML int rtXmlSetFormatting (OSCTXT* pctxt, OSBOOL doFormatting);
02365 
02374 EXTERNXML int rtXmlSetIndent (OSCTXT* pctxt, OSUINT8 indent);
02375 
02384 EXTERNXML int rtXmlSetIndentChar (OSCTXT* pctxt, char indentChar);
02385 
02396 EXTERNXML void rtXmlSetNamespacesSet (OSCTXT* pctxt, OSBOOL value);
02397 
02407 EXTERNXML int rtXmlSetNSPrefixLinks (OSCTXT* pctxt, OSRTDList* pNSAttrs);
02408 
02420 EXTERNXML int rtXmlSetSchemaLocation 
02421 (OSCTXT* pctxt, const OSUTF8CHAR* schemaLocation);
02422 
02434 EXTERNXML int rtXmlSetNoNSSchemaLocation 
02435 (OSCTXT* pctxt, const OSUTF8CHAR* schemaLocation);
02436 
02447 EXTERNXML int rtXmlSetXSITypeAttr (OSCTXT* pctxt, const OSUTF8CHAR* xsiType);
02448 
02457 EXTERNXML int rtXmlSetWriteBOM (OSCTXT* pctxt, OSBOOL write);
02458 
02459 #include "rtxmlsrc/rtXmlNamespace.h"
02460 
02474 EXTERNXML int rtXmlMatchHexStr 
02475 (OSCTXT* pctxt, size_t minLength, size_t maxLength);
02476 
02490 EXTERNXML int rtXmlMatchBase64Str 
02491 (OSCTXT* pctxt, size_t minLength, size_t maxLength);
02492 
02504 EXTERNXML int rtXmlMatchDate (OSCTXT* pctxt);
02505 
02517 EXTERNXML int rtXmlMatchTime (OSCTXT* pctxt);
02518 
02530 EXTERNXML int rtXmlMatchDateTime (OSCTXT* pctxt);
02531 
02543 EXTERNXML int rtXmlMatchGYear (OSCTXT* pctxt);
02544 
02556 EXTERNXML int rtXmlMatchGYearMonth (OSCTXT* pctxt);
02557 
02569 EXTERNXML int rtXmlMatchGMonth (OSCTXT* pctxt);
02570 
02582 EXTERNXML int rtXmlMatchGMonthDay (OSCTXT* pctxt);
02583 
02595 EXTERNXML int rtXmlMatchGDay (OSCTXT* pctxt);
02596 
02606 EXTERNXML OSBOOL rtXmlCmpBase64Str (OSUINT32 nocts1, 
02607                                     const OSOCTET* data1,
02608                                     const OSUTF8CHAR* data2);
02609 
02619 EXTERNXML OSBOOL rtXmlCmpHexStr (OSUINT32 nocts1, 
02620                                  const OSOCTET* data1,
02621                                  const OSUTF8CHAR* data2);
02622 
02623 EXTERNXML OSBOOL rtXmlCmpHexChar (OSUTF8CHAR ch, OSOCTET hexval);
02624 
02625 EXTERNXML int rtSaxGetAttributeID (const OSUTF8CHAR* attrName,
02626                                    size_t nAttr, 
02627                                    const OSUTF8CHAR* attrNames[],
02628                                    OSUINT32 attrPresent[]);
02629 
02642 EXTERNXML const OSUTF8CHAR* rtSaxGetAttrValue 
02643 (const OSUTF8CHAR* attrName, const OSUTF8CHAR* const* attrs);
02644 
02659 EXTERNXML OSINT16 rtSaxGetElemID 
02660 (OSINT16* pState, OSINT16 prevElemIdx, const OSUTF8CHAR* localName, 
02661 #ifdef OSXMLNS12
02662  OSINT32 nsidx, /* namespace index */
02663 #endif
02664 const OSSAXElemTableRec idtab[], const OSINT16* fstab, 
02665  OSINT16 fstabRows, OSINT16 fstabCols);
02666 
02681 EXTERNXML OSINT16 rtSaxGetElemID8 
02682 (OSINT16* pState, OSINT16 prevElemIdx, const OSUTF8CHAR* localName, 
02683 #ifdef OSXMLNS12
02684  OSINT32 nsidx, /* namespace index */
02685 #endif
02686  const OSSAXElemTableRec idtab[], const OSINT8* fstab, 
02687  OSINT16 fstabRows, OSINT16 fstabCols);
02688 
02689 EXTERNXML OSINT16 rtSaxFindElemID 
02690 (OSINT16* pState, OSINT16 prevElemIdx, const OSUTF8CHAR* localName, 
02691 #ifdef OSXMLNS12
02692  OSINT32 nsidx, /* namespace index */
02693 #endif
02694  const OSSAXElemTableRec idtab[], const OSINT16* fstab,
02695  OSINT16 fstabRows, OSINT16 fstabCols);
02696 
02697 EXTERNXML OSINT16 rtSaxFindElemID8 
02698 (OSINT16* pState, OSINT16 prevElemIdx, const OSUTF8CHAR* localName, 
02699 #ifdef OSXMLNS12
02700  OSINT32 nsidx, /* namespace index */
02701 #endif
02702  const OSSAXElemTableRec idtab[], const OSINT8* fstab,
02703  OSINT16 fstabRows, OSINT16 fstabCols);
02704 
02713 EXTERNXML OSBOOL rtSaxHasXMLNSAttrs (const OSUTF8CHAR* const* attrs);
02714 
02722 EXTERNXML OSBOOL rtSaxIsEmptyBuffer (OSCTXT* pctxt);
02723 
02724 EXTERNXML OSINT16 rtSaxLookupElemID 
02725 (OSCTXT* pctxt, OSINT16* pState, OSINT16 prevElemIdx,
02726  const OSUTF8CHAR* localName, const OSUTF8CHAR* qName,
02727 #ifdef OSXMLNS12
02728  OSINT32 nsidx, /* namespace index */
02729 #endif
02730  const OSSAXElemTableRec idtab[], const OSINT16* fstab,
02731  OSINT16 fstabRows, OSINT16 fstabCols);
02732 
02733 EXTERNXML OSINT16 rtSaxLookupElemID8 
02734 (OSCTXT* pctxt, OSINT16* pState, OSINT16 prevElemIdx,
02735  const OSUTF8CHAR* localName, const OSUTF8CHAR* qName,
02736 #ifdef OSXMLNS12
02737  OSINT32 nsidx, /* namespace index */
02738 #endif
02739  const OSSAXElemTableRec idtab[], const OSINT8* fstab,
02740  OSINT16 fstabRows, OSINT16 fstabCols);
02741 
02753 EXTERNXML int rtSaxStrListParse 
02754 (OSCTXT* pctxt, OSRTMEMBUF *pMemBuf, OSRTDList* pvalue);
02755 
02763 EXTERNXML int rtSaxStrListMatch (OSCTXT* pctxt);
02764 
02765 EXTERNXML OSBOOL rtSaxTestFinal (OSINT16 state, 
02766                                  OSINT16 currElemIdx,
02767                                  const int* fstab,
02768                                  int fstabRows, int fstabCols);
02769 
02770 EXTERNXML OSBOOL rtSaxTestFinal8 (OSINT16 state, 
02771                                   OSINT16 currElemIdx,
02772                                   const OSINT8* fstab,
02773                                   int fstabRows, int fstabCols);
02774 
02775 EXTERNXML int rtSaxSetSkipLevelToCurrent (OSCTXT* pctxt, int stat);
02776 
02777 EXTERNXML OSUINT32 rtSaxSetMaxErrors (OSCTXT* pctxt, OSUINT32 maxErrors);
02778 
02779 EXTERNXML OSUINT32 rtSaxGetMaxErrors (OSCTXT* pctxt);
02780 
02781 EXTERNXML int rtSaxTestAttributesPresent (OSCTXT* pctxt, 
02782    const OSUINT32* attrPresent, const OSUINT32* reqAttrMask, 
02783    const OSUTF8CHAR* const* attrNames, size_t numOfAttrs,
02784    const char* parentTypeName);
02785 
02786 EXTERNXML OSBOOL rtSaxIncErrors (OSCTXT* pctxt);
02787 
02788 EXTERNXML int rtSaxReportUnexpAttrs (OSCTXT* pctxt, 
02789     const OSUTF8CHAR* const* attrs, 
02790     const char* typeName);
02791 
02804 EXTERNXML int rtXmlWriteToFile (OSCTXT* pctxt, const char* filename);
02805 
02806 EXTERNXML void rtXmlTreatWhitespaces (OSCTXT* pctxt, int whiteSpaceType);
02807 
02812 EXTERNXML void rtErrXmlInit (void);
02813 
02833 EXTERNXML int rtXmlpDecAny (OSCTXT* pctxt, const OSUTF8CHAR** pvalue);
02834 
02851 EXTERNXML int rtXmlpDecAnyAttrStr 
02852 (OSCTXT* pctxt, const OSUTF8CHAR** ppAttrStr, size_t index);
02853 
02873 EXTERNXML int rtXmlpDecAnyElem (OSCTXT* pctxt, const OSUTF8CHAR** pvalue);
02874 
02900 EXTERNXML int rtXmlpDecBase64Str (OSCTXT* pctxt, OSOCTET* pvalue, 
02901    OSUINT32* pnocts, OSINT32 bufsize);
02902 
02926 EXTERNXML int rtXmlpDecBigInt (OSCTXT* pctxt, const OSUTF8CHAR** pvalue);
02927 
02944 EXTERNXML int rtXmlpDecBitString 
02945 (OSCTXT* pctxt, OSOCTET* pvalue, OSUINT32* pnbits, OSUINT32 bufsize);
02946 
02959 EXTERNXML int rtXmlpDecBool (OSCTXT* pctx