void asn1DOMTest_OrderCancellationType_orderReference_list (OSCTXT* pctxt, OrderCancellationType_orderReference_list* pvalue, xmlNodePtr pXmlNode, OSBOOL setChild) { OrderReference* pdata = rtxMemAllocTypeZ (pctxt, OrderReference); asn1DOMTest_OrderReference (pctxt, pdata, pXmlNode, setChild); if (0 != pdata) rtxDListAppend (pctxt, pvalue, (void*)pdata); }
EXTRTMETHOD int rtxStreamInit (OSCTXT* pctxt) { pctxt->pStream = rtxMemAllocTypeZ (pctxt, OSRTSTREAM); if (pctxt->pStream == NULL) return LOG_RTERRNEW (pctxt, RTERR_NOMEM); rtxMemHeapMarkSaved (&pctxt->pMemHeap, pctxt->pStream, TRUE); rtxCtxtClearFlag (pctxt, OSDISSTRM); LCHECKX (pctxt); return 0; }
EXTERN int asn1D_Math (OSCTXT* pctxt, Math *pvalue, ASN1TagType tagging, int length) { int stat = 0; int reqcnt = 0; ASN1CCB ccb; if (tagging == ASN1EXPL) { stat = xd_match1 (pctxt, 0x10, &length); if (stat != 0) return LOG_RTERR (pctxt, stat); } /* decode SEQUENCE */ ccb.len = length; ccb.ptr = OSRTBUFPTR(pctxt); ccb.seqx = 0; while (!XD_CHKEND (pctxt, &ccb)) { switch (ccb.seqx) { case 0: /* decode attr */ if (XD_PEEKTAG (pctxt, 0x80)) { stat = xd_Tag1AndLen (pctxt, &length); if (stat != 0) return LOG_RTERR (pctxt, stat); /* decode inline SEQUENCE OF type */ { int stat = 0; const OSUTF8CHAR* pdata2; OSRTDListNode* pnode; ASN1CCB ccb; /* decode SEQUENCE OF or SET OF */ rtxDListInit (&pvalue->attr); ccb.len = length; ccb.ptr = OSRTBUFPTR(pctxt); while (!XD_CHKEND (pctxt, &ccb)) { pnode = rtxMemAllocTypeZ (pctxt, OSRTDListNode); if (pnode == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); stat = xd_utf8str (pctxt, &pdata2, ASN1EXPL, length); if (stat != 0) return LOG_RTERR (pctxt, stat); pnode->data = (void*)pdata2; rtxDListAppendNode (&pvalue->attr, pnode); } } if (stat == 0) { if (length == ASN_K_INDEFLEN) { if (XD_MATCHEOC (pctxt)) XD_BUMPIDX (pctxt, 2); else return LOG_RTERR (pctxt, ASN_E_INVLEN); } } else return LOG_RTERR (pctxt, stat); reqcnt++; } break; case 1: /* decode element446_list */ if (XD_PEEKTAG (pctxt, 0x81)) { stat = xd_Tag1AndLen (pctxt, &length); if (stat != 0) return LOG_RTERR (pctxt, stat); /* decode inline SEQUENCE OF type */ { int stat = 0; Odf_Element446* pdata2; OSRTDListNode* pnode; ASN1CCB ccb; /* decode SEQUENCE OF or SET OF */ rtxDListInit (&pvalue->element446_list); ccb.len = length; ccb.ptr = OSRTBUFPTR(pctxt); while (!XD_CHKEND (pctxt, &ccb)) { rtxDListAllocNodeAndData (pctxt, Odf_Element446, &pnode, &pdata2); if (pnode == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); stat = asn1D_Odf_Element446 (pctxt, (Odf_Element446*)pdata2, ASN1EXPL, length); if (stat != 0) return LOG_RTERR (pctxt, stat); rtxDListAppendNode (&pvalue->element446_list, pnode); } } if (stat == 0) { if (length == ASN_K_INDEFLEN) { if (XD_MATCHEOC (pctxt)) XD_BUMPIDX (pctxt, 2); else return LOG_RTERR (pctxt, ASN_E_INVLEN); } } else return LOG_RTERR (pctxt, stat); reqcnt++; } break; default: { ASN1TAG tag; int len; stat = xd_tag_len (pctxt, &tag, &len, 0); if (stat != 0) return LOG_RTERR (pctxt, stat); switch (tag) { case (TM_CTXT|TM_CONS|0): case (TM_CTXT|TM_CONS|1): stat = RTERR_SEQORDER; break; default: stat = RTERR_SEQOVFLW; break; }} } if (stat != 0) return LOG_RTERR (pctxt, stat); else ccb.seqx++; } if (reqcnt < 2) { return LOG_RTERR (pctxt, RTERR_SETMISRQ); } if (tagging == ASN1EXPL && ccb.len == ASN_K_INDEFLEN) { if (XD_MATCHEOC (pctxt)) XD_BUMPIDX (pctxt, 2); else return LOG_RTERR (pctxt, ASN_E_INVLEN); } return (stat); }