⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ospxmldoc.h

📁 mgcp协议源代码。支持多种编码:g711
💻 H
字号:
/**########################################################################*########################################################################*########################################################################*                                                               *   COPYRIGHT (c) 1998, 1999 by TransNexus, LLC                          *                                                                    *   This software contains proprietary and confidential information  *   of TransNexus, LLC. Except as may be set forth in the license    *   agreement under which this software is supplied, use, disclosure, *   or reproduction is prohibited without the prior, express, written*   consent of TransNexus, LLC.                                      *                                     *******#########################################################################*#########################################################################*#########################################################################*//* * ospxmldoc.h - Structures and prototypes for generic XML documents. *               The corresponding functions are in ospxmlutil.c, *               ospxmlenc.c, and ospxmlparse.c */#ifndef _OSPXMLDOC_H#define _OSPXMLDOC_H#include "osp.h"#include "ospbfr.h"#include "ospxmlelem.h"/* various XML character constants */#define OSPC_XMLDOC_LF              '\x0A'#define OSPC_XMLDOC_OPEN            '<'#define OSPC_XMLDOC_CLOSE           '>'#define OSPC_XMLDOC_TRAILER         '/'#define OSPC_XMLDOC_SPACE           ' '#define OSPC_XMLDOC_QUOTE           '"'#define OSPC_XMLDOC_SINGLEQUOTE     '\''#define OSPC_XMLDOC_DOUBLEQUOTE     '"'#define OSPC_XMLDOC_EQUALS          '='#define OSPC_XMLDOC_QUEST           '?'#define OSPC_XMLDOC_REF             '&'#define OSPC_XMLDOC_CHARREF         '#'#define OSPC_XMLDOC_HEXREF          'x'#define OSPC_XMLDOC_REFEND          ';'#define OSPC_XMLDOC_MARKUPDECLOPEN  '['#define OSPC_XMLDOC_MARKUPDECLCLOSE ']'/* UTF-16 byte order marks */#define OSPC_XMLDOC_UTF16MSB  0xFE#define OSPC_XMLDOC_UTF16LSB  0xFF#define OSPC_XMLDOC_UTF16NULL 0x00/* various XML string constants */#define OSPC_XMLDOC_DECL               "<?xml version=\"1.0\"?>"#define OSPC_XMLDOC_DECLLEN            (sizeof(OSPC_XMLDOC_DECL)-1)#define OSPC_XMLDOC_DECLBEG            "<?xml"#define OSPC_XMLDOC_DECLEND            "?>"#define OSPC_XMLDOC_DECLBEGLEN         (sizeof(OSPC_XMLDOC_DECLBEG)-1)#define OSPC_XMLDOC_DECLENDLEN         (sizeof(OSPC_XMLDOC_DECLEND)-1)#define OSPC_XMLDOC_COMMENTBEG         "<--"#define OSPC_XMLDOC_COMMENTEND         "-->"#define OSPC_XMLDOC_COMMENTBEGLEN      (sizeof(OSPC_XMLDOC_COMMENTBEG)-1)#define OSPC_XMLDOC_COMMENTENDLEN      (sizeof(OSPC_XMLDOC_COMMENTEND)-1)#define OSPC_XMLDOC_PIBEG             "<?"#define OSPC_XMLDOC_PIEND             "?>"#define OSPC_XMLDOC_PIBEGLEN          (sizeof(OSPC_XMLDOC_PIBEG)-1)#define OSPC_XMLDOC_PIENDLEN          (sizeof(OSPC_XMLDOC_PIEND)-1)#define OSPC_XMLDOC_DTDBEG             "<!DOCTYPE"#define OSPC_XMLDOC_DTDEND             ">"#define OSPC_XMLDOC_DTDBEGLEN          (sizeof(OSPC_XMLDOC_DTDBEG)-1)#define OSPC_XMLDOC_DTDENDLEN          (sizeof(OSPC_XMLDOC_DTDEND)-1)#define OSPC_XMLDOC_ELEMENTDECLBEG     "<!ELEMENT"#define OSPC_XMLDOC_ELEMENTDECLEND     ">"#define OSPC_XMLDOC_ELEMENTDECLBEGLEN  (sizeof(OSPC_XMLDOC_ELEMENTDECLBEG)-1)#define OSPC_XMLDOC_ELEMENTDECLENDLEN  (sizeof(OSPC_XMLDOC_ELEMENTDECLEND)-1)#define OSPC_XMLDOC_ATTLISTBEG         "<!ATTLIST"#define OSPC_XMLDOC_ATTLISTEND         ">"#define OSPC_XMLDOC_ATTLISTBEGLEN      (sizeof(OSPC_XMLDOC_ATTLISTBEG)-1)#define OSPC_XMLDOC_ATTLISTENDLEN      (sizeof(OSPC_XMLDOC_ATTLISTEND)-1)#define OSPC_XMLDOC_ENTITYDECLBEG      "<!ENTITY"#define OSPC_XMLDOC_ENTITYDECLEND      ">"#define OSPC_XMLDOC_ENTITYDECLBEGLEN   (sizeof(OSPC_XMLDOC_ENTITYDECLBEG)-1)#define OSPC_XMLDOC_ENTITYDECLENDLEN   (sizeof(OSPC_XMLDOC_ENTITYDECLEND)-1)#define OSPC_XMLDOC_CDATABEG           "<![CDATA["#define OSPC_XMLDOC_CDATAEND           "]]>"#define OSPC_XMLDOC_CDATABEGLEN        (sizeof(OSPC_XMLDOC_CDATABEG)-1)#define OSPC_XMLDOC_CDATAENDLEN        (sizeof(OSPC_XMLDOC_CDATAEND)-1)/* * Best guess sizes for element/attribute names and values - These * don't have to be strict since we use elastic buffers. They're just * supposed to be good first guesses. Too small and we end up resizing * buffers a lot; too large and we waste a little space during XML * parsing. */#define OSPC_XMLDOC_NAMESIZE   100#define OSPC_XMLDOC_VALUESIZE  1000/* maximum size of entity name  */#define OSPC_XMLDOC_ENTITYSIZE 10/* character encodings supported */typedef enum{    ospeXMLEncUnknown,       /* unrecognized encoding */    ospeXMLEncUTF8,          /* UTF-8 (8-bit Unicode) */    ospeXMLEncUTF16l,        /* UTF-16 little endian  */    ospeXMLEncUTF16b         /* UTF-16 big endian */}OSPTXMLENC;/* structure used to store entity references */typedef struct{    unsigned char  ospmEntValue;    unsigned char *ospmEntName;}OSPTXMLDOCENTITY;/**//*-----------------------------------------------------------------------* * macros that emulate functions *-----------------------------------------------------------------------*//* * Note: all macros are also implemented as functions in ospxmlelem.c. * For implementation details, see the comments in that file. To replace * a macro with a true function, simply comment out the macro definition * below. *//**//*-----------------------------------------------------------------------* * function prototypes *-----------------------------------------------------------------------*/#ifdef __cplusplusextern "C" {#endif    /* functions in ospxmlutil.c */    unsigned OSPPXMLDocIsMatch(OSPTBFR **, OSPTXMLENC, const unsigned char *,        unsigned, unsigned char *, unsigned *);    unsigned OSPPXMLDocSkipPast(OSPTBFR **, OSPTXMLENC, const unsigned char *,        unsigned char *);    unsigned OSPPXMLDocSkipPastChar(OSPTBFR **, OSPTXMLENC, unsigned char);    unsigned OSPPXMLDocGetEncoding(OSPTBFR **, OSPTXMLENC  * );    unsigned OSPPXMLDocTranslateEntity(unsigned char *, unsigned char *);    unsigned OSPPXMLDocReadChar(OSPTBFR **, OSPTXMLENC, unsigned char *);    unsigned OSPPXMLDocSkipWhite(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLAddReference(const unsigned char *, unsigned, OSPTBFR **);    unsigned OSPPXMLDereference(const unsigned char *, unsigned *,        unsigned char *);    /* functions in ospxmlenc.c */    int OSPPXMLDocCreate(OSPTXMLELEM *, OSPTBFR **);    int OSPPXMLDocAddElem(OSPTXMLELEM *, OSPTBFR **);    int OSPPXMLDocAddElemName(OSPTXMLELEM *, OSPTBFR **);    int OSPPXMLDocAddAttr(OSPTXMLATTR *, OSPTBFR **);    int OSPPXMLDocAddAttrName(OSPTXMLATTR *, OSPTBFR **);    int OSPPXMLDocAddChar(OSPTBFR **, char);    /* functions in ospxmlparse.c */    unsigned OSPPXMLDocParse(OSPTBFR **, OSPTXMLELEM **);    unsigned OSPPXMLDocParseElem(OSPTBFR **, OSPTXMLENC, OSPTXMLELEM **);    unsigned OSPPXMLDocGetAttrs(OSPTBFR **, OSPTXMLENC, OSPTLIST *);    unsigned OSPPXMLDocGetAttr(OSPTBFR **, OSPTXMLENC, OSPTXMLATTR **);    unsigned OSPPXMLDocGetContent(OSPTBFR **, OSPTXMLENC, OSPTLIST *, OSPTBFR **);    unsigned OSPPXMLDocGetCdata(OSPTBFR **, OSPTXMLENC, OSPTBFR **);    unsigned OSPPXMLDocGetName(OSPTBFR **, OSPTXMLENC, OSPTBFR **);    unsigned OSPPXMLDocSkipProlog(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipAllMisc(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipDTD(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipMarkupDecl(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipDecl(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipComment(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipPI(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipElementDecl(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipEntityDecl(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipAttlist(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipPastCdataBeg(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocSkipPastCdataEnd(OSPTBFR **, OSPTXMLENC);    unsigned OSPPXMLDocIsDecl(OSPTBFR **, OSPTXMLENC, unsigned *);    unsigned OSPPXMLDocIsComment(OSPTBFR **, OSPTXMLENC, unsigned *);    unsigned OSPPXMLDocIsPI(OSPTBFR **, OSPTXMLENC, unsigned *);    unsigned OSPPXMLDocIsDTD(OSPTBFR **, OSPTXMLENC, unsigned *);    unsigned OSPPXMLDocIsElementDecl(OSPTBFR **, OSPTXMLENC, unsigned *);    unsigned OSPPXMLDocIsAttlist(OSPTBFR **, OSPTXMLENC, unsigned *);    unsigned OSPPXMLDocIsEntityDecl(OSPTBFR **, OSPTXMLENC, unsigned *);    unsigned OSPPXMLDocIsCdata(OSPTBFR **, OSPTXMLENC, unsigned *);    unsigned OSPPXMLDocIsCdataEnd(OSPTBFR **, OSPTXMLENC, unsigned *);#ifdef OSPC_DEBUG    void OSPPXMLDocPeekCharN(OSPTBFR **, OSPTXMLENC, unsigned, unsigned char *, int *);#else#define OSPPXMLDocPeekCharN(ospvBfrAddr,ospvEncoding,ospvCnt,ospvChar,ospvErrCode) { \    int      rChar = '\0'; \    switch (ospvEncoding) { \        case ospeXMLEncUTF8: \        rChar = OSPPBfrPeekByteN(*ospvBfrAddr, ospvCnt); \        break; \        case ospeXMLEncUTF16l: \        rChar = OSPPBfrPeekByteN(*ospvBfrAddr, 2*ospvCnt); \        break; \        case ospeXMLEncUTF16b: \        rChar = OSPPBfrPeekByteN(*ospvBfrAddr, (2*ospvCnt+1)); \        break; \        default: \        *ospvErrCode = (unsigned )OSPC_ERR_OS_FAILURE; \        break; \    } \    if (*ospvErrCode == OSPC_ERR_NO_ERROR) { \        if(rChar == -1) \            *ospvErrCode = OSPC_ERR_BUF_INCOMPLETE; \        else \            *ospvChar = (unsigned char)rChar; \    } \}#endif#ifdef __cplusplus}#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -