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

📄 xltdec.c

📁 SyncML ToolKits,学习syncml的参考工具包.非常好用.
💻 C
📖 第 1 页 / 共 5 页
字号:
    if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {        smlLibFree(pExec);        return rc;    }    while (pScanner->curtok->type != TOK_TAG_END) {        switch (pScanner->curtok->tagid) {            /* PCData */            case TN_CMDID:                 rc = buildPCData(pDecoder, (VoidPtr_t)&pExec->cmdID);                cmdid++;                break;            case TN_META:                rc = buildPCData(pDecoder, (VoidPtr_t)&pExec->meta);                break;                /* child tags */            case TN_CRED:                 rc = buildCred(pDecoder, (VoidPtr_t)&pExec->cred);                break;            case TN_ITEM:                 rc = buildItem(pDecoder, (VoidPtr_t)&pExec->item);                items++;                break;                /* flags */            case TN_NORESP:                pExec->flags |= SmlNoResp_f;                break;            default:                rc =  SML_ERR_XLT_INVAL_SYNCML_DOC;        }        if (rc != SML_ERR_OK) {            smlFreeExec(pExec);            return rc;        }        if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {            smlFreeExec(pExec);            return rc;        }    }    if ((items == 0) || (cmdid == 0)) {        smlFreeExec(pExec);        return SML_ERR_XLT_INVAL_SYNCML_DOC;    }    *ppElem = pExec;    return SML_ERR_OK;}#endifRet_tbuildGenericCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){    XltDecScannerPtr_t pScanner;    SmlGenericCmdPtr_t pGenCmd;    Ret_t rc;    Long_t items = 0, cmdid = 0;    pScanner = pDecoder->scanner;    if (*ppElem != NULL)        return SML_ERR_XLT_INVAL_SYNCML_DOC;    /* initialize a new GenericCmd */    if ((pGenCmd = (SmlGenericCmdPtr_t)smlLibMalloc(sizeof(SmlGenericCmd_t))) == NULL)        return SML_ERR_NOT_ENOUGH_SPACE;    smlLibMemset(pGenCmd, 0, sizeof(SmlGenericCmd_t));    /* initialize the element type field */    pGenCmd->elementType = SML_PE_GENERIC;    if (IS_EMPTY(pScanner->curtok)) {        smlLibFree(pGenCmd);        return SML_ERR_XLT_INVAL_SYNCML_DOC;    }    if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {        smlLibFree(pGenCmd);        return rc;    }    while (pScanner->curtok->type != TOK_TAG_END) {        switch (pScanner->curtok->tagid) {            /* PCDATA elements */            case TN_CMDID:                rc = buildPCData(pDecoder, (VoidPtr_t)&pGenCmd->cmdID);                cmdid++;                break;            case TN_META:                 rc = buildPCData(pDecoder, (VoidPtr_t)&pGenCmd->meta);                break;                /* child tags */            case TN_CRED:                 rc = buildCred(pDecoder, (VoidPtr_t)&pGenCmd->cred);                break;                /* flags (empty tags) */            case TN_NORESP:                pGenCmd->flags |= SmlNoResp_f;                break;            case TN_ARCHIVE:                pGenCmd->flags |= SmlArchive_f;                break;            case TN_SFTDEL:                pGenCmd->flags |= SmlSftDel_f;                break;                /* Lists */            case TN_ITEM:                rc = appendItemList(pDecoder, &pGenCmd->itemList);                items++;                break;            default:                rc = SML_ERR_XLT_INVAL_SYNCML_DOC;        }        if (rc != SML_ERR_OK) {            smlFreeGeneric(pGenCmd);            return rc;        }        if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {            smlFreeGeneric(pGenCmd);            return rc;        }    }    if ((items == 0) || (cmdid == 0))    {        smlFreeGeneric(pGenCmd);        return SML_ERR_XLT_INVAL_SYNCML_DOC;    }    *ppElem = pGenCmd;    return SML_ERR_OK;}Ret_tbuildAlert(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){    XltDecScannerPtr_t pScanner;    SmlAlertPtr_t pAlert;    Ret_t rc;    Long_t cmdid = 0;    pScanner = pDecoder->scanner;    if (*ppElem != NULL)        return SML_ERR_XLT_INVAL_SYNCML_DOC;    if ((pAlert = (SmlAlertPtr_t)smlLibMalloc(sizeof(SmlAlert_t))) == NULL)        return SML_ERR_NOT_ENOUGH_SPACE;    smlLibMemset(pAlert, 0, sizeof(SmlAlert_t));    /* initialize the element type field */    pAlert->elementType = SML_PE_ALERT;    if (IS_EMPTY(pScanner->curtok)) {        smlLibFree(pAlert);        return SML_ERR_XLT_INVAL_SYNCML_DOC;    }    if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {        smlLibFree(pAlert);        return rc;    }    while (pScanner->curtok->type != TOK_TAG_END) {        switch (pScanner->curtok->tagid) {            /* PCDATA elements */            case TN_CMDID:                rc = buildPCData(pDecoder, (VoidPtr_t)&pAlert->cmdID);                cmdid++;                break;            case TN_DATA:                 rc = buildPCData(pDecoder, (VoidPtr_t)&pAlert->data);                break;                /* child tags */            case TN_CRED:                 rc = buildCred(pDecoder, (VoidPtr_t)&pAlert->cred);                break;                /* flags (empty tags) */            case TN_NORESP:                pAlert->flags |= SmlNoResp_f;                break;                /* Lists */            case TN_ITEM:                rc = appendItemList(pDecoder, &pAlert->itemList);                break;            default:                rc = SML_ERR_XLT_INVAL_SYNCML_DOC;        }        if (rc != SML_ERR_OK) {            smlFreeAlert(pAlert);            return rc;        }        if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {            smlFreeAlert(pAlert);            return rc;        }    }    if (cmdid == 0)    {        smlFreeAlert(pAlert);        return SML_ERR_XLT_INVAL_SYNCML_DOC;    }    *ppElem = pAlert;    return SML_ERR_OK;}#ifdef MAP_RECEIVERet_tbuildMap(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){    XltDecScannerPtr_t pScanner;    SmlMapPtr_t pMap;    Ret_t rc;    Long_t target = 0, source = 0, mapitems = 0, cmdid = 0;    pScanner = pDecoder->scanner;    if (*ppElem != NULL)        return SML_ERR_XLT_INVAL_SYNCML_DOC;    if ((pMap = (SmlMapPtr_t)smlLibMalloc(sizeof(SmlMap_t))) == NULL)        return SML_ERR_NOT_ENOUGH_SPACE;    smlLibMemset(pMap, 0, sizeof(SmlMap_t));    /* initialize the element type field */    pMap->elementType = SML_PE_MAP;    /* Source is required */    if (IS_EMPTY(pScanner->curtok)) {        smlLibFree(pMap);        return SML_ERR_XLT_INVAL_SYNCML_DOC;    }    if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {        smlLibFree(pMap);        return rc;    }    while (pScanner->curtok->type != TOK_TAG_END) {        switch (pScanner->curtok->tagid) {            /* PCDATA elements */            case TN_CMDID:                rc = buildPCData(pDecoder, (VoidPtr_t)&pMap->cmdID);                cmdid++;                break;            case TN_META:                 rc = buildPCData(pDecoder, (VoidPtr_t)&pMap->meta);                break;                /* child tags */            case TN_CRED:                 rc = buildCred(pDecoder, (VoidPtr_t)&pMap->cred);                break;            case TN_SOURCE:                 rc = buildTargetOrSource(pDecoder, (VoidPtr_t)&pMap->source);                source++;                break;            case TN_TARGET:                 rc = buildTargetOrSource(pDecoder, (VoidPtr_t)&pMap->target);                target++;                break;#ifdef MAPITEM_RECEIVE                /* Lists */            case TN_MAPITEM:                rc = appendMapItemList(pDecoder, &pMap->mapItemList);                mapitems++;                break;#endif            default:                rc = SML_ERR_XLT_INVAL_SYNCML_DOC;        }        if (rc != SML_ERR_OK) {            smlFreeMap(pMap);            return rc;        }        if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {            smlFreeMap(pMap);            return rc;        }    }    if ((source == 0) || (mapitems == 0) || (target == 0) || (cmdid == 0)) {        smlFreeMap(pMap);        return SML_ERR_XLT_INVAL_SYNCML_DOC;    }    *ppElem = pMap;    return SML_ERR_OK;}#endif#ifdef SEARCH_RECEIVERet_tbuildSearch(XltDecoderPtr_t pDecoder, VoidPtr_t *ppSearch){    XltDecScannerPtr_t pScanner;    SmlSearchPtr_t pSearch;    Ret_t rc;    Long_t source = 0, meta = 0, data = 0, cmdid = 0;    pScanner = pDecoder->scanner;    if (*ppSearch != NULL)        return SML_ERR_XLT_INVAL_SYNCML_DOC;    if ((pSearch = (SmlSearchPtr_t)smlLibMalloc(sizeof(SmlSearch_t))) == NULL)        return SML_ERR_NOT_ENOUGH_SPACE;    smlLibMemset(pSearch, 0, sizeof(SmlSearch_t));    /* initialize the element type field */    pSearch->elementType = SML_PE_SEARCH;    /* Meta is required */    if (IS_EMPTY(pScanner->curtok)) {        smlLibFree(pSearch);        return SML_ERR_XLT_INVAL_SYNCML_DOC;    }    if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {        smlLibFree(pSearch);        return rc;    }    while (pScanner->curtok->type != TOK_TAG_END) {        switch (pScanner->curtok->tagid) {            /* PCDATA elements */            case TN_CMDID:                rc = buildPCData(pDecoder, (VoidPtr_t)&pSearch->cmdID);                cmdid++;                break;            case TN_LANG:                rc = buildPCData(pDecoder, (VoidPtr_t)&pSearch->lang);                break;            case TN_META:                 rc = buildPCData(pDecoder, (VoidPtr_t)&pSearch->meta);                meta++;                break;            case TN_DATA:                 rc = buildPCData(pDecoder, (VoidPtr_t)&pSearch->data);                data++;                break;                /* child tags */            case TN_CRED:                 rc = buildCred(pDecoder, (VoidPtr_t)&pSearch->cred);                break;            case TN_TARGET:                 rc = buildTargetOrSource(pDecoder, (VoidPtr_t)&pSearch->target);                break;                /* flags */            case TN_NORESP:                pSearch->flags |= SmlNoResp_f;                break;            case TN_NORESULTS:                pSearch->flags |= SmlNoResults_f;                break;                /* Lists */            case TN_SOURCE:                rc = appendSourceList(pDecoder, &pSearch->sourceList);                source++;                break;            default:                rc = SML_ERR_XLT_INVAL_SYNCML_DOC;        }        if (rc != SML_ERR_OK) {            smlFreeSearch(pSearch);            return rc;        }        if (((rc = nextToken(pDecoder)) != SML_ERR_OK)) {            smlFreeSearch(pSearch);            return rc;        }    }    if ((source == 0) || (meta == 0) || (data == 0) || (cmdid == 0)) {        smlFreeSearch(pSearch);        return SML_ERR_XLT_INVAL_SYNCML_DOC;    }    *ppSearch = pSearch;    return SML_ERR_OK;}#endifRet_tbuildPutOrGet(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem){    XltDecScannerPtr_t pScanner;    SmlGetPtr_t pGet;    Ret_t rc;    Long_t items = 0, cmdid = 0;    pScanner = pDecoder->scanner;    if (*ppElem != NULL)        return SML_ERR_XLT_INVAL_SYNCML_DOC;    if ((pGet = (SmlGetPtr_t)smlLibMalloc(sizeof(SmlGet_t))) == NULL)        return SML_ERR_NOT_ENOUGH_SPACE;    smlLibMemset(pGet, 0, sizeof(SmlGet_t));    /* initialize the element type field */    pGet->elementType = SML_PE_PUT_GET;

⌨️ 快捷键说明

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