EXTERN int asn1E_Ns1_Max_height (OSCTXT* pctxt, Ns1_Max_height *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; ll0 = 0; switch (pvalue->t) { case 1: ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|0, xe_utf8str (pctxt, pvalue->u.alt, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; break; case 2: ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|1, xe_utf8str (pctxt, pvalue->u.alt_1, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; break; default: return LOG_RTERR (pctxt, RTERR_INVOPT); } ll0 += ll1; return (ll0); }
EXTERN int asn1E_Detail (OSCTXT* pctxt, Detail *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; OSRTDListNode* pnode2; int ll2 = 0; /* encode elem_list */ pnode2 = pvalue->elem_list.tail; while (0 != pnode2) { switch (((OSXSDAny*)pnode2->data)->t) { case OSXSDAny_binary: ll = xe_OpenType (pctxt, ((OSXSDAny*)pnode2->data)->u.binary->data, ((OSXSDAny*)pnode2->data)->u.binary->numocts); break; case OSXSDAny_xmlText: ll = xe_utf8str (pctxt, ((OSXSDAny*)pnode2->data)-> u.xmlText, ASN1EXPL); break; } if (ll < 0) return LOG_RTERR (pctxt, ll); else ll2 += ll; pnode2 = pnode2->prev; } ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|1, ll2); if (ll < 0) return LOG_RTERR (pctxt, ll); else { ll1 += ll; ll2 = 0; } /* encode attr */ pnode2 = pvalue->attr.tail; while (0 != pnode2) { ll = xe_utf8str (pctxt, ((const OSUTF8CHAR*)pnode2->data), ASN1EXPL); if (ll < 0) return LOG_RTERR (pctxt, ll); ll2 += ll; pnode2 = pnode2->prev; } ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|0, ll2); if (ll < 0) return LOG_RTERR (pctxt, ll); else { ll1 += ll; ll2 = 0; } ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_InvoiceType (OSCTXT* pctxt, InvoiceType *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; OSRTDListNode* pnode2; int ll2 = 0; /* encode summary */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|2, asn1E_InvoiceSummaryType (pctxt, &pvalue->summary, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode lineItem_list */ if (!(pvalue->lineItem_list.count >= 1U)) { rtxErrAddStrParm (pctxt, "InvoiceType.lineItem_list.count"); rtxErrAddIntParm (pctxt, (int)pvalue->lineItem_list.count); return LOG_RTERR (pctxt, RTERR_CONSVIO); } pnode2 = pvalue->lineItem_list.tail; while (0 != pnode2) { ll = asn1E_InvoiceLineItemType (pctxt, ((InvoiceLineItemType*)pnode2->data), ASN1EXPL); if (ll < 0) return LOG_RTERR (pctxt, ll); ll2 += ll; pnode2 = pnode2->prev; } ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|1, ll2); if (ll < 0) return LOG_RTERR (pctxt, ll); else { ll1 += ll; ll2 = 0; } /* encode header */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|0, asn1E_InvoiceHeaderType (pctxt, &pvalue->header, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
int xe_oid64 (OSCTXT* pctxt, ASN1OID64 *object_p, ASN1TagType tagging) { OSUINT64 subid; register int aal, ll, i; /* Validate given object ID by applying ASN.1 rules */ if (0 == object_p) return LOG_RTERR(pctxt, ASN_E_INVOBJID); if (object_p->numids < 2) return LOG_RTERR(pctxt, ASN_E_INVOBJID); if (object_p->subid[0] > 2) return LOG_RTERR(pctxt, ASN_E_INVOBJID); if (object_p->subid[0] != 2 && object_p->subid[1] > 39) return LOG_RTERR(pctxt, ASN_E_INVOBJID); /* Passed checks, encode object identifier */ for (aal = 0, i = object_p->numids - 1; i >= 1 && aal >= 0; i--) { subid = (i == 1) ? (object_p->subid[0] * 40) + object_p->subid[1] : object_p->subid[i]; aal = ((ll = xe_ident64 (pctxt, subid)) >= 0) ? aal + ll : ll; } if (tagging == ASN1EXPL && aal > 0) aal = xe_tag_len (pctxt, TM_UNIV|TM_PRIM|ASN_ID_OBJID, aal); return (aal); }
EXTERN int asn1E_Model (OSCTXT* pctxt, Model *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; OSRTDListNode* pnode2; int ll2 = 0; /* encode element14_list */ pnode2 = pvalue->element14_list.tail; while (0 != pnode2) { ll = asn1E_Odf_Element14 (pctxt, (Odf_Element14*)((Odf_Element14*)pnode2->data), ASN1EXPL); if (ll < 0) return LOG_RTERR (pctxt, ll); ll2 += ll; pnode2 = pnode2->prev; } ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|1, ll2); if (ll < 0) return LOG_RTERR (pctxt, ll); else { ll1 += ll; ll2 = 0; } /* encode attr */ pnode2 = pvalue->attr.tail; while (0 != pnode2) { ll = xe_utf8str (pctxt, ((const OSUTF8CHAR*)pnode2->data), ASN1EXPL); if (ll < 0) return LOG_RTERR (pctxt, ll); ll2 += ll; pnode2 = pnode2->prev; } ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|0, ll2); if (ll < 0) return LOG_RTERR (pctxt, ll); else { ll1 += ll; ll2 = 0; } ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_Fault (OSCTXT* pctxt, Fault *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode detail */ if (pvalue->m.detailPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|3, asn1E_Detail (pctxt, &pvalue->detail, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode faultactor */ if (pvalue->m.faultactorPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|2, xe_utf8str (pctxt, pvalue->faultactor, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode faultstring */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|1, xe_utf8str (pctxt, pvalue->faultstring, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode faultcode */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|0, asn1E_XSD_QName (pctxt, &pvalue->faultcode, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_Seisdata (OSCTXT* pctxt, Seisdata *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode data */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|5, asn1E_Xcrdtype (pctxt, &pvalue->data, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode cdp */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|4, asn1E_Xcrdtype (pctxt, &pvalue->cdp, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode zval */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|3, asn1E_Xcrdtype (pctxt, &pvalue->zval, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode ycrd */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|2, asn1E_Xcrdtype (pctxt, &pvalue->ycrd, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode xcrd */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|1, asn1E_Xcrdtype (pctxt, &pvalue->xcrd, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode head */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|0, asn1E_Headtype (pctxt, &pvalue->head, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_UBL_OrderChange_1_0_EarliestDateType (OSCTXT* pctxt, UBL_OrderChange_1_0_EarliestDateType *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode base */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|0, xe_utf8str (pctxt, pvalue->base, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_UBL_OrderChange_1_0_LineItemCountNumericType (OSCTXT* pctxt, UBL_OrderChange_1_0_LineItemCountNumericType *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode base */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|0, xe_real (pctxt, &pvalue->base, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
int xe_octstr (OSCTXT* pctxt, const OSOCTET* object_p, OSUINT32 numocts, ASN1TagType tagging) { int aal = (0 == object_p) ? 0 : xe_memcpy (pctxt, object_p, numocts); if (tagging == ASN1EXPL && aal >= 0) aal = xe_tag_len (pctxt, TM_UNIV|TM_PRIM|ASN_ID_OCTSTR, aal); LCHECKBER (pctxt); return (aal); }
EXTERN int asn1E_UBL_OrderChange_1_0_ValidityDurationMeasureType (OSCTXT* pctxt, UBL_OrderChange_1_0_ValidityDurationMeasureType *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode base */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|2, xe_real (pctxt, &pvalue->base, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode measureUnitCodeListVersionID */ if (pvalue->m.measureUnitCodeListVersionIDPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|1, xe_utf8str (pctxt, pvalue->measureUnitCodeListVersionID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode measureUnitCode */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|0, xe_utf8str (pctxt, pvalue->measureUnitCode, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_PackagesCountQuantityType (OSCTXT* pctxt, PackagesCountQuantityType *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode base */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|4, xe_real (pctxt, &pvalue->base, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode quantityUnitCodeListID */ if (pvalue->m.quantityUnitCodeListIDPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|3, xe_utf8str (pctxt, pvalue->quantityUnitCodeListID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode quantityUnitCodeListAgencyName */ if (pvalue->m.quantityUnitCodeListAgencyNamePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|2, xe_utf8str (pctxt, pvalue->quantityUnitCodeListAgencyName, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode quantityUnitCodeListAgencyID */ if (pvalue->m.quantityUnitCodeListAgencyIDPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|1, xe_utf8str (pctxt, pvalue->quantityUnitCodeListAgencyID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode quantityUnitCode */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|0, xe_utf8str (pctxt, pvalue->quantityUnitCode, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_Xcrdtype (OSCTXT* pctxt, Xcrdtype *pvalue, ASN1TagType tagging) { int xx1; int ll; int ll0 = 0; int ll1 = 0; for (xx1 = (pvalue->n - 1); xx1 >= 0; xx1--) { ll = xe_real (pctxt, &pvalue->elem[xx1], ASN1EXPL); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
int xe_16BitCharStr (OSCTXT* pctxt, Asn116BitCharString* object_p, ASN1TagType tagging, ASN1TAG tag) { OSOCTET lbuf[2]; int i, ll, ll0 = 0; if (0 == object_p) return LOG_RTERR(pctxt, RTERR_BADVALUE); for (i = object_p->nchars - 1; i >= 0; i--) { lbuf[0] = (OSOCTET) (object_p->data[i] / 256); lbuf[1] = (OSOCTET) (object_p->data[i] % 256); ll = xe_memcpy (pctxt, lbuf, 2); if (ll >= 0) ll0 += ll; else return (ll); } if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, tag, ll0); return (ll0); }
EXTERN int asn1E_OrderChangeType_orderLine_list (OSCTXT* pctxt, OrderChangeType_orderLine_list *pvalue, ASN1TagType tagging) { OSRTDListNode* pnode; int ll; int ll0 = 0; int ll1 = 0; pnode = pvalue->tail; while (0 != pnode) { ll = asn1E_OrderLine (pctxt, ((OrderLine*)pnode->data), ASN1EXPL); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; pnode = pnode->prev; } ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E__SeqOfUBL_Order_1_0_AdditionalDocumentReference (OSCTXT* pctxt, _SeqOfUBL_Order_1_0_AdditionalDocumentReference *pvalue, ASN1TagType tagging) { OSRTDListNode* pnode; int ll; int ll0 = 0; int ll1 = 0; pnode = pvalue->tail; while (0 != pnode) { ll = asn1E_UBL_Order_1_0_AdditionalDocumentReference (pctxt, ((UBL_Order_1_0_AdditionalDocumentReference*)pnode->data), ASN1EXPL); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; pnode = pnode->prev; } ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_EncodingStyle_1 (OSCTXT* pctxt, EncodingStyle_1 *pvalue, ASN1TagType tagging) { OSRTDListNode* pnode; int ll; int ll0 = 0; int ll1 = 0; pnode = pvalue->tail; while (0 != pnode) { ll = xe_utf8str (pctxt, ((const OSUTF8CHAR*)pnode->data), ASN1EXPL); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; pnode = pnode->prev; } ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_OrderChangeType (OSCTXT* pctxt, OrderChangeType *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode paymentMeans */ if (pvalue->m.paymentMeansPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|36, asn1E_PaymentMeans (pctxt, &pvalue->paymentMeans, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode orderLine_list */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|35, asn1E_OrderChangeType_orderLine_list (pctxt, &pvalue->orderLine_list, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode destinationCountry */ if (pvalue->m.destinationCountryPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|34, asn1E_UBL_OrderChange_1_0_DestinationCountry (pctxt, &pvalue->destinationCountry, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode salesConditions */ if (pvalue->m.salesConditionsPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|33, asn1E_SalesConditions (pctxt, &pvalue->salesConditions, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode allowanceCharge_list */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|32, asn1E__SeqOfAllowanceCharge (pctxt, &pvalue->allowanceCharge_list, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode deliveryTerms */ if (pvalue->m.deliveryTermsPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|31, asn1E_DeliveryTerms (pctxt, &pvalue->deliveryTerms, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode delivery_list */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|30, asn1E__SeqOfDelivery (pctxt, &pvalue->delivery_list, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode freightForwarderParty */ if (pvalue->m.freightForwarderPartyPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|29, asn1E_UBL_OrderChange_1_0_FreightForwarderParty (pctxt, &pvalue->freightForwarderParty, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode originatorParty */ if (pvalue->m.originatorPartyPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|28, asn1E_UBL_OrderChange_1_0_OriginatorParty (pctxt, &pvalue->originatorParty, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode sellerParty */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|27, asn1E_SellerParty (pctxt, &pvalue->sellerParty, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode buyerParty */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|26, asn1E_BuyerParty (pctxt, &pvalue->buyerParty, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode quoteDocumentReference */ if (pvalue->m.quoteDocumentReferencePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|25, asn1E_UBL_OrderChange_1_0_QuoteDocumentReference (pctxt, &pvalue->quoteDocumentReference, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode contractDocumentReference */ if (pvalue->m.contractDocumentReferencePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|24, asn1E_UBL_OrderChange_1_0_ContractDocumentReference (pctxt, &pvalue->contractDocumentReference, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode orderReference_list */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|23, asn1E__SeqOfOrderReference (pctxt, &pvalue->orderReference_list, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode lineItemCountNumeric */ if (pvalue->m.lineItemCountNumericPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|22, asn1E_UBL_OrderChange_1_0_LineItemCountNumeric (pctxt, &pvalue->lineItemCountNumeric, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode netVolumeMeasure */ if (pvalue->m.netVolumeMeasurePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|21, asn1E_NetVolumeMeasure (pctxt, &pvalue->netVolumeMeasure, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode grossVolumeMeasure */ if (pvalue->m.grossVolumeMeasurePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|20, asn1E_GrossVolumeMeasure (pctxt, &pvalue->grossVolumeMeasure, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode netNetWeightMeasure */ if (pvalue->m.netNetWeightMeasurePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|19, asn1E_NetNetWeightMeasure (pctxt, &pvalue->netNetWeightMeasure, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode netWeightMeasure */ if (pvalue->m.netWeightMeasurePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|18, asn1E_NetWeightMeasure (pctxt, &pvalue->netWeightMeasure, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode grossWeightMeasure */ if (pvalue->m.grossWeightMeasurePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|17, asn1E_GrossWeightMeasure (pctxt, &pvalue->grossWeightMeasure, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode totalPackagesCountQuantity */ if (pvalue->m.totalPackagesCountQuantityPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|16, asn1E_TotalPackagesCountQuantity (pctxt, &pvalue->totalPackagesCountQuantity, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode lineExtensionTotalAmount */ if (pvalue->m.lineExtensionTotalAmountPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|15, asn1E_LineExtensionTotalAmount (pctxt, &pvalue->lineExtensionTotalAmount, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode taxTotalAmount */ if (pvalue->m.taxTotalAmountPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|14, asn1E_TaxTotalAmount (pctxt, &pvalue->taxTotalAmount, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode validityDurationMeasure */ if (pvalue->m.validityDurationMeasurePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|13, asn1E_UBL_OrderChange_1_0_ValidityDurationMeasure (pctxt, &pvalue->validityDurationMeasure, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode expiryDate */ if (pvalue->m.expiryDatePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|12, asn1E_ExpiryDate (pctxt, &pvalue->expiryDate, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode earliestDate */ if (pvalue->m.earliestDatePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|11, asn1E_UBL_OrderChange_1_0_EarliestDate (pctxt, &pvalue->earliestDate, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode pricingCurrencyCode */ if (pvalue->m.pricingCurrencyCodePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|10, asn1E_CurrencyCodeType (pctxt, &pvalue->pricingCurrencyCode, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode transactionCurrencyCode */ if (pvalue->m.transactionCurrencyCodePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|9, asn1E_CurrencyCodeType (pctxt, &pvalue->transactionCurrencyCode, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode acknowledgementResponseCode */ if (pvalue->m.acknowledgementResponseCodePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|8, asn1E_AcknowledgementResponseCodeType (pctxt, &pvalue->acknowledgementResponseCode, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode note */ if (pvalue->m.notePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|7, asn1E_Note (pctxt, &pvalue->note, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode sequenceNumberID */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|6, asn1E_UBL_UnspecializedDatatypes_1_0_IdentifierType (pctxt, &pvalue->sequenceNumberID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode documentStatusCode */ if (pvalue->m.documentStatusCodePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|5, asn1E_DocumentStatusCodeType (pctxt, &pvalue->documentStatusCode, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode issueDate */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|4, asn1E_IssueDate (pctxt, &pvalue->issueDate, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode gUID */ if (pvalue->m.gUIDPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|3, asn1E_UBL_UnspecializedDatatypes_1_0_IdentifierType (pctxt, &pvalue->gUID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode copyIndicator */ if (pvalue->m.copyIndicatorPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|2, asn1E_CopyIndicator (pctxt, &pvalue->copyIndicator, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode sellersID */ if (pvalue->m.sellersIDPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|1, asn1E_UBL_UnspecializedDatatypes_1_0_IdentifierType (pctxt, &pvalue->sellersID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode buyersID */ if (pvalue->m.buyersIDPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|0, asn1E_UBL_UnspecializedDatatypes_1_0_IdentifierType (pctxt, &pvalue->buyersID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_InvoiceHeaderType (OSCTXT* pctxt, InvoiceHeaderType *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode lineItemCountValue */ if (pvalue->m.lineItemCountValuePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|11, asn1E_CCT_NumericType (pctxt, &pvalue->lineItemCountValue, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode paymentMeans */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|10, asn1E_PaymentMeansType (pctxt, &pvalue->paymentMeans, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode shipment */ if (pvalue->m.shipmentPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|9, asn1E_ShipmentType (pctxt, &pvalue->shipment, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode despatchParty */ if (pvalue->m.despatchPartyPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|8, asn1E_PartyType (pctxt, &pvalue->despatchParty, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode consigneeParty */ if (pvalue->m.consigneePartyPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|7, asn1E_PartyType (pctxt, &pvalue->consigneeParty, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode sellerParty */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|6, asn1E_PartyType (pctxt, &pvalue->sellerParty, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode buyerParty */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|5, asn1E_PartyType (pctxt, &pvalue->buyerParty, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode language */ if (pvalue->m.languagePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|4, asn1E_LanguageType (pctxt, &pvalue->language, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode currencyCode */ if (pvalue->m.currencyCodePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|3, asn1E_CCT_CodeType (pctxt, &pvalue->currencyCode, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode pOIdentifier */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|2, asn1E_CCT_IdentifierType (pctxt, &pvalue->pOIdentifier, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode identifier */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|1, asn1E_CCT_IdentifierType (pctxt, &pvalue->identifier, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode issueDateTime */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|0, asn1E_CCT_DateTimeType (pctxt, &pvalue->issueDateTime, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_InvoiceLineItemType (OSCTXT* pctxt, InvoiceLineItemType *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode totalAmount */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|6, asn1E_CCT_AmountType (pctxt, &pvalue->totalAmount, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode itemTax */ if (pvalue->m.itemTaxPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|5, asn1E_CCT_AmountType (pctxt, &pvalue->itemTax, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode pricingVariation */ if (pvalue->m.pricingVariationPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|4, asn1E_PricingVariationType (pctxt, &pvalue->pricingVariation, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode pricing */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|3, asn1E_PricingType (pctxt, &pvalue->pricing, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode orderStatus */ if (pvalue->m.orderStatusPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|2, asn1E_CCT_CodeType (pctxt, &pvalue->orderStatus, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode item */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|1, asn1E_ItemType (pctxt, &pvalue->item, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode lineID */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|0, asn1E_CCT_IdentifierType (pctxt, &pvalue->lineID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_OperatorCodeType (OSCTXT* pctxt, OperatorCodeType *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode base */ if(pvalue->base < 0 || pvalue->base > 1) return LOG_RTERR (pctxt, RTERR_INVENUM); ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|9, asn1E_OperatorCodeContentType (pctxt, &pvalue->base, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode name */ if (pvalue->m.namePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|8, xe_utf8str (pctxt, pvalue->name, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode languageID */ if (pvalue->m.languageIDPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|7, xe_utf8str (pctxt, pvalue->languageID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode codeListVersionID */ if (pvalue->m.codeListVersionIDPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|6, xe_utf8str (pctxt, pvalue->codeListVersionID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode codeListURI */ if (pvalue->m.codeListURIPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|5, xe_utf8str (pctxt, pvalue->codeListURI, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode codeListSchemeURI */ if (pvalue->m.codeListSchemeURIPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|4, xe_utf8str (pctxt, pvalue->codeListSchemeURI, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode codeListName */ if (pvalue->m.codeListNamePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|3, xe_utf8str (pctxt, pvalue->codeListName, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode codeListID */ if (pvalue->m.codeListIDPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|2, xe_utf8str (pctxt, pvalue->codeListID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode codeListAgencyName */ if (pvalue->m.codeListAgencyNamePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|1, xe_utf8str (pctxt, pvalue->codeListAgencyName, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode codeListAgencyID */ if (pvalue->m.codeListAgencyIDPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|0, xe_utf8str (pctxt, pvalue->codeListAgencyID, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
int xe_derReal10 (OSCTXT *pctxt, const char* object_p, ASN1TagType tagging) { int ll0 = 0; int stat; const char* p; const char* mantBeg = 0; const char* mantEnd = 0; int digits = 0; int trailZeros = 0; int mantExpVal = 0; int expVal = 0; int tm; char mantMinus = 0; char expMinus = 0; char flFrac = 0; char c; if (!object_p) return LOG_RTERRNEW (pctxt, RTERR_INVPARAM); /* skip ws and leading zeros and plus */ for (p = object_p; (c = *p) != 0; p++) { if (c == '-') mantMinus = 1; else if (c != ' ' && c != '0' && c != '+') break; } mantBeg = mantEnd = p; /* count mantissa digits */ for (; (c = *p) != 0; p++) { if (c == '0') trailZeros++; else if (c > '0' && c <= '9') { if (digits == 0 && flFrac) { mantExpVal = -trailZeros; digits = 1; mantBeg = p; } else digits += trailZeros + 1; trailZeros = 0; mantEnd = p + 1; } else if (c == '.') { mantExpVal = digits + trailZeros; flFrac = 1; } else if (c == 'e' || c == 'E') { p++; break; } else if (c != ' ') break; } if (digits > 0) { if (!flFrac) mantExpVal = digits + trailZeros; /* skip ws and leading zeros and plus */ for (; (c = *p) != 0; p++) { if (c == '-') expMinus = 1; else if (c != ' ' && c != '0' && c != '+') break; } /* get exponent */ for (; (c = *p) != 0; p++) { if (c >= '0' && c <= '9') expVal = expVal * 10 + (c - '0'); else if (c != ' ') break; } if (expMinus) expVal = -expVal; expVal += mantExpVal; expVal -= digits; /* put exponent */ if (expVal != 0) { if (expVal < 0) { expMinus = 1; expVal = -expVal; } else expMinus = 0; while (expVal) { c = expVal % 10; expVal /= 10; XE_SAFEPUT1(pctxt, '0' + c); ll0++; } if (expMinus) { XE_SAFEPUT1(pctxt, '-'); ll0++; } } else { XE_CHKBUF(pctxt, 2) XE_PUT1(pctxt, '0') XE_PUT1(pctxt, '+') ll0 += 2; } tm = digits + 3 + mantMinus; XE_CHKBUF(pctxt, (unsigned)(tm)) ll0 += tm; XE_PUT1(pctxt, 'E'); XE_PUT1(pctxt, '.'); do { c = *(--mantEnd); if (c < '0' || c > '9') continue; XE_PUT1(pctxt, c); } while (mantEnd != mantBeg); if (mantMinus) XE_PUT1(pctxt, '-'); XE_PUT1(pctxt, 3) } if (tagging == ASN1EXPL) { stat = xe_tag_len (pctxt, TM_UNIV|TM_PRIM|9, ll0); if (stat < 0) return LOG_RTERR (pctxt, stat); ll0 = stat; } return ll0; }
EXTERN int asn1E_InvoiceSummaryType (OSCTXT* pctxt, InvoiceSummaryType *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; OSRTDListNode* pnode2; int ll2 = 0; /* encode summaryNote */ if (pvalue->m.summaryNotePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|6, asn1E_NoteType (pctxt, &pvalue->summaryNote, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode packingSlipIdentifier */ if (pvalue->m.packingSlipIdentifierPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|5, asn1E_CCT_IdentifierType (pctxt, &pvalue->packingSlipIdentifier, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode priceAmount */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|4, asn1E_CCT_AmountType (pctxt, &pvalue->priceAmount, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode totalTax */ if (pvalue->m.totalTaxPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|3, asn1E_TaxType (pctxt, &pvalue->totalTax, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode pricingVariation_list */ pnode2 = pvalue->pricingVariation_list.tail; while (0 != pnode2) { ll = asn1E_PricingVariationType (pctxt, ((PricingVariationType*)pnode2->data), ASN1EXPL); if (ll < 0) return LOG_RTERR (pctxt, ll); ll2 += ll; pnode2 = pnode2->prev; } ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|2, ll2); if (ll < 0) return LOG_RTERR (pctxt, ll); else { ll1 += ll; ll2 = 0; } /* encode subtotalAmount */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|1, asn1E_CCT_AmountType (pctxt, &pvalue->subtotalAmount, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode lineItemCountValue */ if (pvalue->m.lineItemCountValuePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|0, asn1E_CCT_NumericType (pctxt, &pvalue->lineItemCountValue, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_Headtype (OSCTXT* pctxt, Headtype *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; /* encode xyzs_field_precisions */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|9, xe_utf8str (pctxt, pvalue->xyzs_field_precisions, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode xyzs_field_names */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|8, xe_utf8str (pctxt, pvalue->xyzs_field_names, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode num_xyzs_fields */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|7, xe_int8 (pctxt, &pvalue->num_xyzs_fields, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode zinc */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|6, xe_real (pctxt, &pvalue->zinc, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode zstart */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|5, xe_real (pctxt, &pvalue->zstart, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode precision */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|4, xe_int8 (pctxt, &pvalue->precision, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode nsamp */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|3, xe_int16 (pctxt, &pvalue->nsamp, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode ntrace */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|2, xe_integer (pctxt, &pvalue->ntrace, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode area */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|1, xe_utf8str (pctxt, pvalue->area, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode name */ ll = xe_tag_len (pctxt, TM_CTXT|TM_PRIM|0, xe_utf8str (pctxt, pvalue->name, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }
EXTERN int asn1E_Envelope (OSCTXT* pctxt, Envelope *pvalue, ASN1TagType tagging) { int ll; int ll0 = 0; int ll1 = 0; OSRTDListNode* pnode2; int ll2 = 0; /* encode elem_list */ pnode2 = pvalue->elem_list.tail; while (0 != pnode2) { switch (((OSXSDAny*)pnode2->data)->t) { case OSXSDAny_binary: ll = xe_OpenType (pctxt, ((OSXSDAny*)pnode2->data)->u.binary->data, ((OSXSDAny*)pnode2->data)->u.binary->numocts); break; case OSXSDAny_xmlText: ll = xe_utf8str (pctxt, ((OSXSDAny*)pnode2->data)-> u.xmlText, ASN1EXPL); break; } if (ll < 0) return LOG_RTERR (pctxt, ll); else ll2 += ll; pnode2 = pnode2->prev; } ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|4, ll2); if (ll < 0) return LOG_RTERR (pctxt, ll); else { ll1 += ll; ll2 = 0; } /* encode body */ ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|3, asn1E_Body (pctxt, &pvalue->body, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; /* encode header */ if (pvalue->m.headerPresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|2, asn1E_Header (pctxt, &pvalue->header, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } /* encode attr */ pnode2 = pvalue->attr.tail; while (0 != pnode2) { ll = xe_utf8str (pctxt, ((const OSUTF8CHAR*)pnode2->data), ASN1EXPL); if (ll < 0) return LOG_RTERR (pctxt, ll); ll2 += ll; pnode2 = pnode2->prev; } ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|1, ll2); if (ll < 0) return LOG_RTERR (pctxt, ll); else { ll1 += ll; ll2 = 0; } /* encode encodingStyle */ if (pvalue->m.encodingStylePresent) { ll = xe_tag_len (pctxt, TM_CTXT|TM_CONS|0, asn1E_EncodingStyle (pctxt, &pvalue->encodingStyle, ASN1IMPL)); if (ll < 0) return LOG_RTERR (pctxt, ll); ll1 += ll; } ll0 += ll1; if (tagging == ASN1EXPL) ll0 = xe_tag_len (pctxt, TM_UNIV|TM_CONS|16, ll0); return (ll0); }