EXTERN int asn1PD_RUA_IntraDomainNasNodeSelector_version (OSCTXT* pctxt, RUA_IntraDomainNasNodeSelector_version* pvalue) { int stat = 0; OSUINT32 ui; stat = pd_ConsUnsigned (pctxt, &ui, 0, OSUINTCONST(1)); if (stat != 0) return LOG_RTERR (pctxt, stat); else pvalue->t = ui + 1; switch (ui) { /* release99 */ case 0: pvalue->u.release99 = rtxMemAllocType (pctxt, RUA_IntraDomainNasNodeSelector_version_release99); if (pvalue->u.release99 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_IntraDomainNasNodeSelector_version_release99 (pvalue->u.release99); asn1Init_RUA_IntraDomainNasNodeSelector_version_release99 (pvalue->u.release99); stat = asn1PD_RUA_IntraDomainNasNodeSelector_version_release99 (pctxt, pvalue->u.release99); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* later */ case 1: pvalue->u.later = rtxMemAllocType (pctxt, RUA_IntraDomainNasNodeSelector_version_later); if (pvalue->u.later == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_IntraDomainNasNodeSelector_version_later (pvalue->u.later); asn1Init_RUA_IntraDomainNasNodeSelector_version_later (pvalue->u.later); stat = asn1PD_RUA_IntraDomainNasNodeSelector_version_later (pctxt, pvalue->u.later); if (stat != 0) return LOG_RTERR (pctxt, stat); break; default: return LOG_RTERR (pctxt, RTERR_INVOPT); } return (stat); }
EXTERN int asn1PD_RUA_IntraDomainNasNodeSelector_version_release99_cn_Type (OSCTXT* pctxt, RUA_IntraDomainNasNodeSelector_version_release99_cn_Type* pvalue) { int stat = 0; OSUINT32 ui; stat = pd_ConsUnsigned (pctxt, &ui, 0, OSUINTCONST(1)); if (stat != 0) return LOG_RTERR (pctxt, stat); else pvalue->t = ui + 1; switch (ui) { /* gsm_Map_IDNNS */ case 0: pvalue->u.gsm_Map_IDNNS = rtxMemAllocType (pctxt, RUA_Gsm_map_IDNNS); if (pvalue->u.gsm_Map_IDNNS == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_Gsm_map_IDNNS (pvalue->u.gsm_Map_IDNNS); asn1Init_RUA_Gsm_map_IDNNS (pvalue->u.gsm_Map_IDNNS); stat = asn1PD_RUA_Gsm_map_IDNNS (pctxt, pvalue->u.gsm_Map_IDNNS); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* ansi_41_IDNNS */ case 1: pvalue->u.ansi_41_IDNNS = rtxMemAllocType (pctxt, RUA_Ansi_41_IDNNS); if (pvalue->u.ansi_41_IDNNS == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_Ansi_41_IDNNS (pvalue->u.ansi_41_IDNNS); asn1Init_RUA_Ansi_41_IDNNS (pvalue->u.ansi_41_IDNNS); stat = asn1PD_RUA_Ansi_41_IDNNS (pctxt, pvalue->u.ansi_41_IDNNS); if (stat != 0) return LOG_RTERR (pctxt, stat); break; default: return LOG_RTERR (pctxt, RTERR_INVOPT); } return (stat); }
EXTERN int asn1PD_HnbPrivateMessage (OSCTXT* pctxt, HnbPrivateMessage* pvalue) { int stat = 0; OSCTXT lctxt; ASN1OpenType openType; ASN1OpenType* pOpenType; OSUINT32 bitcnt; OSUINT32 i; OSBOOL optbit = FALSE; OSBOOL extbit = FALSE; /* extension bit */ stat = PD_BIT (pctxt, &extbit); if (stat != 0) return LOG_RTERR (pctxt, stat); rtxDListInit (&pvalue->extElem1); /* decode privateIEs */ asn1Init_PrivateIE_Container (&pvalue->privateIEs); stat = asn1PD_PrivateIE_Container (pctxt, &pvalue->privateIEs); if (stat != 0) return LOG_RTERR (pctxt, stat); if (extbit) { /* decode extension optional bits length */ stat = pd_SmallNonNegWholeNumber (pctxt, &bitcnt); if (stat != 0) return LOG_RTERR (pctxt, stat); bitcnt += 1; rtxPreInitContext (&lctxt); rtxCopyContext (&lctxt, pctxt); stat = pd_moveBitCursor (pctxt, bitcnt); if (stat != 0) return LOG_RTERR (pctxt, stat); for (i = 0; i < bitcnt; i++) { PD_BIT (&lctxt, &optbit); if (optbit) { stat = pd_OpenType (pctxt, &openType.data, &openType.numocts); if (stat != 0) return LOG_RTERR (pctxt, stat); pOpenType = rtxMemAllocType (pctxt, ASN1OpenType); pOpenType->numocts = openType.numocts; pOpenType->data = openType.data; rtxDListAppend (pctxt, &pvalue->extElem1, pOpenType); } else { /* unknown element */ rtxDListAppend (pctxt, &pvalue->extElem1, 0); } } } return (stat); }
EXTRTMETHOD HASHMAPTYPENAME* HASHMAPCOPYFUNC (OSCTXT* pctxt, HASHMAPTYPENAME* pHashMap) { HASHMAPTYPENAME* pNewHashMap = rtxMemAllocType (pctxt, HASHMAPTYPENAME); if (0 != pNewHashMap) { HASHMAPENTRYTYPE* pEntry; OSUINT32 i; pNewHashMap->tableLength = pHashMap->tableLength; pNewHashMap->primeIndex = pHashMap->primeIndex; pNewHashMap->entryCount = 0; pNewHashMap->hashFunc = pHashMap->hashFunc; pNewHashMap->equalsFunc = pHashMap->equalsFunc; pNewHashMap->loadLimit = pHashMap->loadLimit; pNewHashMap->table = rtxMemAllocArrayZ (pctxt, pHashMap->tableLength, HASHMAPENTRYTYPE*); /* Insert all entries from old table into new table */ for (i = 0; i < pHashMap->tableLength; i++) { pEntry = pHashMap->table[i]; while (0 != pEntry) { HASHMAPINSERTFUNC (pctxt, pNewHashMap, pEntry->key, pEntry->value); pEntry = pEntry->next; } } }
EXTRTMETHOD HASHMAPTYPENAME* HASHMAPNEWFUNC (OSCTXT* pctxt, size_t capacity, OSUINT32 (*hashFunc)(HASHMAPKEYTYPE), OSBOOL (*keyEqualsFunc)(HASHMAPKEYTYPE,HASHMAPKEYTYPE)) { HASHMAPTYPENAME* pHashMap = rtxMemAllocType (pctxt, HASHMAPTYPENAME); if (0 != pHashMap) { HASHMAPINITFUNC (pctxt, pHashMap, capacity, hashFunc, keyEqualsFunc); } return pHashMap; }
EXTRTMETHOD OSXMLFullQName* rtxNewFullQName (OSCTXT* pctxt, const OSUTF8CHAR* localName, const OSUTF8CHAR* prefix, const OSUTF8CHAR* nsuri) { OSXMLFullQName* pqname = rtxMemAllocType (pctxt, OSXMLFullQName); if (0 != pqname) { pqname->nsPrefix = rtxUTF8StrRefOrDup (pctxt, prefix); pqname->nsURI = rtxUTF8StrRefOrDup (pctxt, nsuri); pqname->localName = rtxUTF8StrRefOrDup (pctxt, localName); } return pqname; }
EXTRTMETHOD OSXMLFullQName* rtxNewFullQNameDeepCopy (OSCTXT* pctxt, const OSXMLFullQName* pqname) { if (0 != pqname) { OSXMLFullQName* pNewQName = rtxMemAllocType (pctxt, OSXMLFullQName); if (0 != pNewQName) { pNewQName->nsPrefix = rtxUTF8Strdup (pctxt, pqname->nsPrefix); pNewQName->nsURI = rtxUTF8Strdup (pctxt, pqname->nsURI); pNewQName->localName = rtxUTF8Strdup (pctxt, pqname->localName); } return pNewQName; } else return 0; }
int XmlDec_Math (OSCTXT* pctxt, Math* pvalue) { int stat = 0; /* decode attributes */ if (rtXmlpHasAttributes (pctxt)) { size_t i, nAttrs = 0; const OSUTF8CHAR* attrStr; stat = rtXmlpGetAttributeCount (pctxt); if (stat < 0) return LOG_RTERR (pctxt, stat); else nAttrs = (size_t)stat; for (i = 0; i < nAttrs; i++) { stat = rtXmlpDecAnyAttrStr (pctxt, &attrStr, i); if (stat != 0) return LOG_RTERR (pctxt, stat); rtxDListAppend (pctxt, &pvalue->attr, (void*)attrStr); } } { OSXSDAny* pdata1; OSXMLElemDescr elemDescr; const OSUTF8CHAR* pxmlstr; for (;;) { stat = rtXmlpGetNextElem (pctxt, &elemDescr, -1); if (0 != stat) break; stat = rtXmlpDecAnyElem (pctxt, &pxmlstr); if (0 != stat) break; stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); pdata1 = rtxMemAllocType (pctxt, OSXSDAny); if (0 == pdata1) return LOG_RTERR (pctxt, RTERR_NOMEM); pdata1->t = OSXSDAny_xmlText; pdata1->u.xmlText = pxmlstr; if (0 == rtxDListAppend (pctxt, &pvalue->element446_list, pdata1)) return LOG_RTERR (pctxt, RTERR_NOMEM); } if (stat == XML_OK_EOB) stat = 0; else return LOG_RTERR (pctxt, stat); } return (stat); }
int DOMTest_Config_item_map_entry (OSCTXT* pctxt, Config_item_map_entry* pvalue, xmlNodePtr pXmlNode, OSBOOL setChild) { xmlAttrPtr pXmlAttr = pXmlNode->properties; /* Populate attributes */ for ( ; 0 != pXmlAttr; pXmlAttr = pXmlAttr->next) { if (pXmlAttr->type == XML_ATTRIBUTE_NODE) { if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("name"))) { pvalue->m.namePresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->name = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->name = (const OSUTF8CHAR*)""; } } } } /* Populate elements */ if (setChild) pXmlNode = pXmlNode->children; for ( ; 0 != pXmlNode; pXmlNode = pXmlNode->next) { if (pXmlNode->type == XML_ELEMENT_NODE) { if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("config-item")) || rtxUTF8StrEqual (pXmlNode->name, OSUTF8("config-item-set")) || rtxUTF8StrEqual (pXmlNode->name, OSUTF8("config-item-map-named")) || rtxUTF8StrEqual (pXmlNode->name, OSUTF8("config-item-map-indexed"))) { { Config_item_map_entry_element* pdata2; pdata2 = rtxMemAllocType (pctxt, Config_item_map_entry_element); if (pdata2 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Config_item_map_entry_element (pdata2); DOMTest_Config_item_map_entry_element (pctxt, pdata2, pXmlNode, FALSE); if (0 != pdata2) rtxDListAppend (pctxt, &pvalue->choice_list, (void*)pdata2); } } } } return 0; }
EXTRTMETHOD int rtxStreamMemoryAttach (OSCTXT* pctxt, OSOCTET* pMemBuf, size_t bufSize, OSUINT16 flags) { OSRTSTREAM *pStream; MemDesc* mdesc; if (0 == pctxt->pStream) { int stat = rtxStreamInit (pctxt); if (0 != stat) return LOG_RTERR (pctxt, stat); } pStream = pctxt->pStream; if (pMemBuf == 0 || (!(flags & OSRTSTRMF_OUTPUT) && !(flags & OSRTSTRMF_INPUT))) return LOG_RTERRNEW (pctxt, RTERR_INVPARAM); mdesc = rtxMemAllocType (pctxt, MemDesc); if (mdesc == NULL) return LOG_RTERRNEW (pctxt, RTERR_NOMEM); rtxMemHeapMarkSaved (&pctxt->pMemHeap, mdesc, TRUE); mdesc->pctxt = pctxt; mdesc->pMemBuf = pMemBuf; mdesc->bufSize = bufSize; mdesc->curIndex = 0; mdesc->attached = TRUE; mdesc->savedIndex = 0; if (flags & OSRTSTRMF_OUTPUT) { pStream->write = memWrite; pStream->flush = 0; } else if (flags & OSRTSTRMF_INPUT) { pStream->read = memRead; pStream->blockingRead = memRead; pStream->skip = memSkip; pStream->mark = memMark; pStream->reset = memReset; pctxt->buffer.size = 0; } pStream->flags = (OSUINT16) (flags | OSRTSTRMF_POSMARKED); pStream->id = OSRTSTRMID_MEMORY; pStream->extra = mdesc; pStream->close = memClose; return 0; }
/* * Returns namespace count if successful or negative status code on failure. */ EXTXMLMETHOD int rtSaxParseNSAttrs (OSCTXT* pctxt, const OSUTF8CHAR* const* attrs, OSRTDList* pNSAttrs, const OSUTF8CHAR* nsTable[], OSUINT32 nsTableRowCount) { int count = 0, stat; if (0 != attrs) { size_t i; const OSUTF8CHAR* nsPrefix; for (i = 0; 0 != attrs[i]; i += 2) { if (rtXmlStrnCmpAsc (attrs[i], "xmlns", 5)) { if (0 == count++) { /* Push new namespace level onto stack */ rtXmlNSPush (pctxt); } nsPrefix = (attrs[i][5] == ':') ? &attrs[i][6] : 0; stat = rtXmlNSAddPrefixLink (pctxt, nsPrefix, attrs[i+1], nsTable, nsTableRowCount); if (0 != stat) return LOG_RTERR (pctxt, stat); /* If output namespace list pointer provided, add a record */ /* to this list.. */ if (0 != pNSAttrs) { OSXMLNamespace* pNS = rtxMemAllocType (pctxt, OSXMLNamespace); if (0 == pNS) return LOG_RTERR (pctxt, RTERR_NOMEM); pNS->prefix = (0 != nsPrefix) ? rtxUTF8Strdup (pctxt, nsPrefix) : 0; pNS->uri = rtxUTF8Strdup (pctxt, attrs[i+1]); rtxDListAppend (pctxt, pNSAttrs, (void*)pNS); } } } } return count; }
EXTRTMETHOD int rtxStreamSocketAttach (OSCTXT* pctxt, OSRTSOCKET socket, OSUINT16 flags) { OSRTSTREAM *pStream; SocketDesc* sdesc; if (0 == pctxt->pStream) { int stat = rtxStreamInit (pctxt); if (0 != stat) return LOG_RTERR (pctxt, stat); } pStream = pctxt->pStream; if (socket == OSRTSOCKET_INVALID) return LOG_RTERRNEW (pctxt, RTERR_INVSOCKET); sdesc = rtxMemAllocType (pctxt, SocketDesc); if (sdesc == NULL) return LOG_RTERRNEW (pctxt, RTERR_NOMEM); rtxMemHeapMarkSaved (&pctxt->pMemHeap, sdesc, TRUE); sdesc->pctxt = pctxt; sdesc->socket = socket; sdesc->ownSocket = TRUE; if (flags & OSRTSTRMF_INPUT) { pctxt->buffer.size = 0; pStream->read = socketRead; pStream->blockingRead = socketBlockingRead; pStream->skip = socketSkip; } if (flags & OSRTSTRMF_OUTPUT) { pStream->write = socketWrite; pStream->flush = socketFlush; } pStream->flags = flags; pStream->id = OSRTSTRMID_SOCKET; pStream->extra = sdesc; pStream->close = socketClose; return 0; }
EXTERN int asn1PD_RUA_CriticalityDiagnostics (OSCTXT* pctxt, RUA_CriticalityDiagnostics* pvalue) { int stat = 0; OSCTXT lctxt; ASN1OpenType openType; ASN1OpenType* pOpenType; OSUINT32 bitcnt; OSUINT32 i; OSBOOL optbit = FALSE; OSBOOL extbit = FALSE; /* extension bit */ stat = PD_BIT (pctxt, &extbit); if (stat != 0) return LOG_RTERR (pctxt, stat); /* optional bits */ memset (&pvalue->m, 0, sizeof(pvalue->m)); rtxDListInit (&pvalue->extElem1); stat = PD_BIT (pctxt, &optbit); if (stat != 0) return LOG_RTERR (pctxt, stat); pvalue->m.procedureCodePresent = optbit; stat = PD_BIT (pctxt, &optbit); if (stat != 0) return LOG_RTERR (pctxt, stat); pvalue->m.triggeringMessagePresent = optbit; stat = PD_BIT (pctxt, &optbit); if (stat != 0) return LOG_RTERR (pctxt, stat); pvalue->m.procedureCriticalityPresent = optbit; stat = PD_BIT (pctxt, &optbit); if (stat != 0) return LOG_RTERR (pctxt, stat); pvalue->m.iEsCriticalityDiagnosticsPresent = optbit; stat = PD_BIT (pctxt, &optbit); if (stat != 0) return LOG_RTERR (pctxt, stat); pvalue->m.iE_ExtensionsPresent = optbit; /* decode procedureCode */ if (pvalue->m.procedureCodePresent) { stat = asn1PD_RUA_ProcedureCode (pctxt, &pvalue->procedureCode); if (stat != 0) return LOG_RTERR (pctxt, stat); } /* decode triggeringMessage */ if (pvalue->m.triggeringMessagePresent) { stat = asn1PD_RUA_TriggeringMessage (pctxt, &pvalue->triggeringMessage); if (stat != 0) return LOG_RTERR (pctxt, stat); } /* decode procedureCriticality */ if (pvalue->m.procedureCriticalityPresent) { stat = asn1PD_RUA_Criticality (pctxt, &pvalue->procedureCriticality); if (stat != 0) return LOG_RTERR (pctxt, stat); } /* decode iEsCriticalityDiagnostics */ if (pvalue->m.iEsCriticalityDiagnosticsPresent) { asn1Init_RUA_CriticalityDiagnostics_IE_List (&pvalue->iEsCriticalityDiagnostics); stat = asn1PD_RUA_CriticalityDiagnostics_IE_List (pctxt, &pvalue->iEsCriticalityDiagnostics); if (stat != 0) return LOG_RTERR (pctxt, stat); } /* decode iE_Extensions */ if (pvalue->m.iE_ExtensionsPresent) { asn1Init_RUA_ProtocolExtensionContainer (&pvalue->iE_Extensions); stat = asn1PD_RUA_ProtocolExtensionContainer (pctxt, &pvalue->iE_Extensions); if (stat != 0) return LOG_RTERR (pctxt, stat); } if (extbit) { /* decode extension optional bits length */ stat = pd_SmallNonNegWholeNumber (pctxt, &bitcnt); if (stat != 0) return LOG_RTERR (pctxt, stat); bitcnt += 1; rtxPreInitContext (&lctxt); rtxCopyContext (&lctxt, pctxt); stat = pd_moveBitCursor (pctxt, bitcnt); if (stat != 0) return LOG_RTERR (pctxt, stat); for (i = 0; i < bitcnt; i++) { PD_BIT (&lctxt, &optbit); if (optbit) { stat = pd_OpenType (pctxt, &openType.data, &openType.numocts); if (stat != 0) return LOG_RTERR (pctxt, stat); pOpenType = rtxMemAllocType (pctxt, ASN1OpenType); pOpenType->numocts = openType.numocts; pOpenType->data = openType.data; rtxDListAppend (pctxt, &pvalue->extElem1, pOpenType); } else { /* unknown element */ rtxDListAppend (pctxt, &pvalue->extElem1, 0); } } } return (stat); }
EXTERN int asn1PD_RUA_Cause (OSCTXT* pctxt, RUA_Cause* pvalue) { int stat = 0; OSUINT32 ui; ASN1OpenType openType; OSBOOL extbit = FALSE; /* extension bit */ stat = PD_BIT (pctxt, &extbit); if (stat != 0) return LOG_RTERR (pctxt, stat); if (!extbit) { stat = pd_ConsUnsigned (pctxt, &ui, 0, OSUINTCONST(3)); if (stat != 0) return LOG_RTERR (pctxt, stat); else pvalue->t = ui + 1; switch (ui) { /* radioNetwork */ case 0: stat = asn1PD_RUA_CauseRadioNetwork (pctxt, &pvalue->u.radioNetwork); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* transport */ case 1: stat = asn1PD_RUA_CauseTransport (pctxt, &pvalue->u.transport); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* protocol */ case 2: stat = asn1PD_RUA_CauseProtocol (pctxt, &pvalue->u.protocol); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* misc */ case 3: stat = asn1PD_RUA_CauseMisc (pctxt, &pvalue->u.misc); if (stat != 0) return LOG_RTERR (pctxt, stat); break; default: return LOG_RTERR (pctxt, RTERR_INVOPT); } } else { stat = pd_SmallNonNegWholeNumber (pctxt, &ui); if (stat != 0) return LOG_RTERR (pctxt, stat); else pvalue->t = ui + 5; if (pvalue->t < 5) return LOG_RTERR (pctxt, RTERR_INVOPT); stat = PD_BYTE_ALIGN (pctxt); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = pd_OpenType (pctxt, &openType.data, &openType.numocts); if (stat != 0) return LOG_RTERR (pctxt, stat); pvalue->u.extElem1 = rtxMemAllocType (pctxt, ASN1OpenType); if (pvalue->u.extElem1 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); pvalue->t = 5; pvalue->u.extElem1->data = openType.data; pvalue->u.extElem1->numocts = openType.numocts; } return (stat); }
int DOMTest_Config_item_map_entry_element (OSCTXT* pctxt, Config_item_map_entry_element* pvalue, xmlNodePtr pXmlNode, OSBOOL setChild) { if (setChild) pXmlNode = pXmlNode->children; for ( ; 0 != pXmlNode; pXmlNode = pXmlNode->next) { if (pXmlNode->type == XML_ELEMENT_NODE) { if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("config-item"))) { pvalue->t = 1; pvalue->u.config_item = rtxMemAllocType (pctxt, Config_item); if (pvalue->u.config_item == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Config_item (pvalue->u.config_item); DOMTest_Config_item (pctxt, pvalue->u.config_item, pXmlNode, TRUE); break; } else if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("config-item-set"))) { pvalue->t = 2; pvalue->u.config_item_set = rtxMemAllocType (pctxt, Config_item_set); if (pvalue->u.config_item_set == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Config_item_set ((Config_item_set*)pvalue->u.config_item_set); DOMTest_Config_item_set (pctxt, (Config_item_set*)pvalue->u.config_item_set, pXmlNode, TRUE); break; } else if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("config-item-map-named"))) { pvalue->t = 3; pvalue->u.config_item_map_named = rtxMemAllocType (pctxt, Config_item_map_named); if (pvalue->u.config_item_map_named == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Config_item_map_named ((Config_item_map_named*)pvalue->u.config_item_map_named); DOMTest_Config_item_map_named (pctxt, (Config_item_map_named*)pvalue->u.config_item_map_named, pXmlNode, TRUE); break; } else if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("config-item-map-indexed"))) { pvalue->t = 4; pvalue->u.config_item_map_indexed = rtxMemAllocType (pctxt, Config_item_map_indexed); if (pvalue->u.config_item_map_indexed == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Config_item_map_indexed (pvalue->u.config_item_map_indexed); DOMTest_Config_item_map_indexed (pctxt, pvalue->u.config_item_map_indexed, pXmlNode, TRUE); break; } else { LOG_RTERR1 (pctxt, RTERR_INVOPT, rtxErrAddStrParm (pctxt, (const char*)pXmlNode->name)); } } } return 0; }
int XmlDec_InvoiceSummaryType (OSCTXT* pctxt, InvoiceSummaryType* pvalue) { int stat = 0; memset (&pvalue->m, 0, sizeof(pvalue->m)); { int elemID; static const OSXMLElemIDRec elemtab[] = { {{{OSUTF8("LineItemCountValue"), 18}, 0}, 0 }, {{{OSUTF8("SubtotalAmount"), 14}, 0}, 1 }, {{{OSUTF8("PricingVariation"), 16}, 0}, 2 }, {{{OSUTF8("TotalTax"), 8}, 0}, 3 }, {{{OSUTF8("PriceAmount"), 11}, 0}, 4 }, {{{OSUTF8("PackingSlipIdentifier"), 21}, 0}, 5 }, {{{OSUTF8("SummaryNote"), 11}, 0}, 6 } } ; static const struct { int row; int num; int anyCase; } groupDesc[] = { {0, 2, -1}, {2, 3, -1}, {5, 2, -1}}; int group = 0; int i; for (i = 0; i < 7; i++) { int fromrow = groupDesc[group].row; int rows = groupDesc[group].num; int anyCase = groupDesc[group].anyCase; elemID = rtXmlpGetNextElemID (pctxt, elemtab + fromrow, rows, -1, FALSE); if (elemID == RTERR_UNEXPELEM && anyCase >= 0 && i == anyCase) elemID = anyCase; else if (elemID < 0) return LOG_RTERR (pctxt, elemID); else if (elemID == XML_OK_EOB) break; else if (elemID == elemtab[fromrow + rows - 1].id) group++; switch (elemID) { case 0: { /* LineItemCountValue */ stat = XmlDec_CCT_NumericType (pctxt, &pvalue->lineItemCountValue); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); pvalue->m.lineItemCountValuePresent = TRUE; break; } case 1: { /* SubtotalAmount */ stat = XmlDec_CCT_AmountType (pctxt, &pvalue->subtotalAmount); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); break; } case 2: { PricingVariationType* pdata1; do { pdata1 = rtxMemAllocType (pctxt, PricingVariationType); if (pdata1 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_PricingVariationType (pdata1); stat = XmlDec_PricingVariationType (pctxt, pdata1); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); rtxDListAppend (pctxt, &pvalue->pricingVariation_list , (void*)pdata1); stat = rtXmlpGetNextElemID (pctxt, elemtab + 2, 1, -1, FALSE); if (stat < 0 && stat != RTERR_UNEXPELEM) return LOG_RTERR (pctxt, stat); } while (stat == 2); rtXmlpMarkLastEventActive (pctxt); stat = 0; break; } case 3: { /* TotalTax */ stat = XmlDec_TaxType (pctxt, &pvalue->totalTax); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); pvalue->m.totalTaxPresent = TRUE; break; } case 4: { /* PriceAmount */ stat = XmlDec_CCT_AmountType (pctxt, &pvalue->priceAmount); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); break; } case 5: { /* PackingSlipIdentifier */ stat = XmlDec_CCT_IdentifierType (pctxt, &pvalue-> packingSlipIdentifier); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); pvalue->m.packingSlipIdentifierPresent = TRUE; break; } case 6: { /* SummaryNote */ stat = XmlDec_NoteType (pctxt, &pvalue->summaryNote); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); pvalue->m.summaryNotePresent = TRUE; break; } } i = elemID; } } return (stat); }
EXTERN int asn1PD_RUA_Gsm_map_IDNNS_routingbasis (OSCTXT* pctxt, RUA_Gsm_map_IDNNS_routingbasis* pvalue) { int stat = 0; OSUINT32 ui; stat = pd_ConsUnsigned (pctxt, &ui, 0, OSUINTCONST(7)); if (stat != 0) return LOG_RTERR (pctxt, stat); else pvalue->t = ui + 1; switch (ui) { /* localPTMSI */ case 0: pvalue->u.localPTMSI = rtxMemAllocType (pctxt, RUA_Gsm_map_IDNNS_routingbasis_localPTMSI); if (pvalue->u.localPTMSI == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_localPTMSI (pvalue->u.localPTMSI); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_localPTMSI (pvalue->u.localPTMSI); stat = asn1PD_RUA_Gsm_map_IDNNS_routingbasis_localPTMSI (pctxt, pvalue->u.localPTMSI); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* tMSIofsamePLMN */ case 1: pvalue->u.tMSIofsamePLMN = rtxMemAllocType (pctxt, RUA_Gsm_map_IDNNS_routingbasis_tMSIofsamePLMN); if (pvalue->u.tMSIofsamePLMN == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_tMSIofsamePLMN (pvalue->u.tMSIofsamePLMN); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_tMSIofsamePLMN (pvalue->u.tMSIofsamePLMN); stat = asn1PD_RUA_Gsm_map_IDNNS_routingbasis_tMSIofsamePLMN (pctxt, pvalue->u.tMSIofsamePLMN); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* tMSIofdifferentPLMN */ case 2: pvalue->u.tMSIofdifferentPLMN = rtxMemAllocType (pctxt, RUA_Gsm_map_IDNNS_routingbasis_tMSIofdifferentPLMN); if (pvalue->u.tMSIofdifferentPLMN == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_tMSIofdifferentPLMN (pvalue->u.tMSIofdifferentPLMN); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_tMSIofdifferentPLMN (pvalue->u.tMSIofdifferentPLMN); stat = asn1PD_RUA_Gsm_map_IDNNS_routingbasis_tMSIofdifferentPLMN (pctxt, pvalue->u.tMSIofdifferentPLMN); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* iMSIresponsetopaging */ case 3: pvalue->u.iMSIresponsetopaging = rtxMemAllocType (pctxt, RUA_Gsm_map_IDNNS_routingbasis_iMSIresponsetopaging); if (pvalue->u.iMSIresponsetopaging == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_iMSIresponsetopaging (pvalue->u.iMSIresponsetopaging); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_iMSIresponsetopaging (pvalue->u.iMSIresponsetopaging); stat = asn1PD_RUA_Gsm_map_IDNNS_routingbasis_iMSIresponsetopaging (pctxt, pvalue->u.iMSIresponsetopaging); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* iMSIcauseUEinitiatedEvent */ case 4: pvalue->u.iMSIcauseUEinitiatedEvent = rtxMemAllocType (pctxt, RUA_Gsm_map_IDNNS_routingbasis_iMSIcauseUEinitiatedEvent); if (pvalue->u.iMSIcauseUEinitiatedEvent == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_iMSIcauseUEinitiatedEvent (pvalue->u.iMSIcauseUEinitiatedEvent); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_iMSIcauseUEinitiatedEvent (pvalue->u.iMSIcauseUEinitiatedEvent); stat = asn1PD_RUA_Gsm_map_IDNNS_routingbasis_iMSIcauseUEinitiatedEvent (pctxt, pvalue->u.iMSIcauseUEinitiatedEvent); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* iMEI */ case 5: pvalue->u.iMEI = rtxMemAllocType (pctxt, RUA_Gsm_map_IDNNS_routingbasis_iMEI); if (pvalue->u.iMEI == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_iMEI (pvalue->u.iMEI); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_iMEI (pvalue->u.iMEI); stat = asn1PD_RUA_Gsm_map_IDNNS_routingbasis_iMEI (pctxt, pvalue->u.iMEI); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* spare2 */ case 6: pvalue->u.spare2 = rtxMemAllocType (pctxt, RUA_Gsm_map_IDNNS_routingbasis_spare2); if (pvalue->u.spare2 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_spare2 (pvalue->u.spare2); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_spare2 (pvalue->u.spare2); stat = asn1PD_RUA_Gsm_map_IDNNS_routingbasis_spare2 (pctxt, pvalue->u.spare2); if (stat != 0) return LOG_RTERR (pctxt, stat); break; /* spare1 */ case 7: pvalue->u.spare1 = rtxMemAllocType (pctxt, RUA_Gsm_map_IDNNS_routingbasis_spare1); if (pvalue->u.spare1 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_spare1 (pvalue->u.spare1); asn1Init_RUA_Gsm_map_IDNNS_routingbasis_spare1 (pvalue->u.spare1); stat = asn1PD_RUA_Gsm_map_IDNNS_routingbasis_spare1 (pctxt, pvalue->u.spare1); if (stat != 0) return LOG_RTERR (pctxt, stat); break; default: return LOG_RTERR (pctxt, RTERR_INVOPT); } return (stat); }
int DOMTest_Ns7_Extrude (OSCTXT* pctxt, Ns7_Extrude* pvalue, xmlNodePtr pXmlNode, OSBOOL setChild) { xmlAttrPtr pXmlAttr = pXmlNode->properties; /* Populate attributes */ for ( ; 0 != pXmlAttr; pXmlAttr = pXmlAttr->next) { if (pXmlAttr->type == XML_ATTRIBUTE_NODE) { if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("transform"))) { pvalue->m.transformPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->transform = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->transform = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("class-names"))) { pvalue->m.class_namesPresent = 1; DOMTest_Ns3_Class_names (pctxt, (Ns3_Class_names*)&pvalue->class_names, pXmlAttr, FALSE); } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("id"))) { pvalue->m.idPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->id = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->id = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("layer"))) { pvalue->m.layerPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->layer = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->layer = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("style-name"))) { pvalue->m.style_namePresent = 1; pvalue->style_name = rtxMemAllocType (pctxt, Ns3_Style_name); if (pvalue->style_name == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns3_Style_name ((Ns3_Style_name*)pvalue->style_name); DOMTest_Ns3_Style_name (pctxt, (Ns3_Style_name*)pvalue->style_name, pXmlAttr, FALSE); } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("z-index"))) { pvalue->m.z_indexPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->z_index = atoi ((const char*)((xmlNodePtr)pXmlAttr)->children->content); } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("class-names"))) { pvalue->m.class_names_1Present = 1; DOMTest_Ns3_Class_names (pctxt, (Ns3_Class_names*)&pvalue->class_names_1, pXmlAttr, FALSE); } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("style-name"))) { pvalue->m.style_name_1Present = 1; pvalue->style_name_1 = rtxMemAllocType (pctxt, Ns3_Style_name); if (pvalue->style_name_1 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns3_Style_name ((Ns3_Style_name*)pvalue->style_name_1); DOMTest_Ns3_Style_name (pctxt, (Ns3_Style_name*)pvalue->style_name_1, pXmlAttr, FALSE); } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("d"))) { if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->d = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->d = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("viewBox"))) { DOMTest_ViewBox (pctxt, (ViewBox*)&pvalue->viewBox, pXmlAttr, FALSE); } } } /* Populate elements */ if (setChild) pXmlNode = pXmlNode->children; for ( ; 0 != pXmlNode; pXmlNode = pXmlNode->next) { if (pXmlNode->type == XML_ELEMENT_NODE) { } } return 0; }
int DOMTest_Ns7_Scene (OSCTXT* pctxt, Ns7_Scene* pvalue, xmlNodePtr pXmlNode, OSBOOL setChild) { xmlAttrPtr pXmlAttr = pXmlNode->properties; /* Populate attributes */ for ( ; 0 != pXmlAttr; pXmlAttr = pXmlAttr->next) { if (pXmlAttr->type == XML_ATTRIBUTE_NODE) { if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("ambient-color"))) { pvalue->m.ambient_colorPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->ambient_color = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->ambient_color = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("distance"))) { pvalue->m.distancePresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->distance = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->distance = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("focal-length"))) { pvalue->m.focal_lengthPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->focal_length = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->focal_length = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("lighting-mode"))) { pvalue->m.lighting_modePresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { Ns7_Lighting_mode_ToEnum (pctxt, ((xmlNodePtr)pXmlAttr)->children->content, &pvalue->lighting_mode); } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("projection"))) { pvalue->m.projectionPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { Ns7_Projection_ToEnum (pctxt, ((xmlNodePtr)pXmlAttr)->children->content, &pvalue->projection); } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("shade-mode"))) { pvalue->m.shade_modePresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { Ns7_Shade_mode_ToEnum (pctxt, ((xmlNodePtr)pXmlAttr)->children->content, &pvalue->shade_mode); } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("shadow-slant"))) { pvalue->m.shadow_slantPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->shadow_slant = atoi ((const char*)((xmlNodePtr)pXmlAttr)->children->content); } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("transform"))) { pvalue->m.transformPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->transform = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->transform = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("vpn"))) { pvalue->m.vpnPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->vpn = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->vpn = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("vrp"))) { pvalue->m.vrpPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->vrp = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->vrp = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("vup"))) { pvalue->m.vupPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->vup = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->vup = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("class-names"))) { pvalue->m.class_namesPresent = 1; DOMTest_Ns3_Class_names (pctxt, (Ns3_Class_names*)&pvalue->class_names, pXmlAttr, FALSE); } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("id"))) { pvalue->m.idPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->id = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->id = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("layer"))) { pvalue->m.layerPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->layer = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->layer = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("style-name"))) { pvalue->m.style_namePresent = 1; pvalue->style_name = rtxMemAllocType (pctxt, Ns3_Style_name); if (pvalue->style_name == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns3_Style_name ((Ns3_Style_name*)pvalue->style_name); DOMTest_Ns3_Style_name (pctxt, (Ns3_Style_name*)pvalue->style_name, pXmlAttr, FALSE); } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("z-index"))) { pvalue->m.z_indexPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->z_index = atoi ((const char*)((xmlNodePtr)pXmlAttr)->children->content); } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("class-names"))) { pvalue->m.class_names_1Present = 1; DOMTest_Ns3_Class_names (pctxt, (Ns3_Class_names*)&pvalue->class_names_1, pXmlAttr, FALSE); } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("style-name"))) { pvalue->m.style_name_1Present = 1; pvalue->style_name_1 = rtxMemAllocType (pctxt, Ns3_Style_name); if (pvalue->style_name_1 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns3_Style_name ((Ns3_Style_name*)pvalue->style_name_1); DOMTest_Ns3_Style_name (pctxt, (Ns3_Style_name*)pvalue->style_name_1, pXmlAttr, FALSE); } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("height"))) { pvalue->m.heightPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->height = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->height = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("width"))) { pvalue->m.widthPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->width = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->width = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("x"))) { pvalue->m.xPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->x = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->x = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("y"))) { pvalue->m.yPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->y = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->y = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("end-cell-address"))) { pvalue->m.end_cell_addressPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->end_cell_address = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->end_cell_address = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("end-x"))) { pvalue->m.end_xPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->end_x = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->end_x = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("end-y"))) { pvalue->m.end_yPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->end_y = ((xmlNodePtr)pXmlAttr)->children->content; } else { pvalue->end_y = (const OSUTF8CHAR*)""; } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("table-background"))) { pvalue->m.table_backgroundPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { Table_background_ToEnum (pctxt, ((xmlNodePtr)pXmlAttr)->children->content, &pvalue->table_background); } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("anchor-page-number"))) { pvalue->m.anchor_page_numberPresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { pvalue->anchor_page_number = atoi ((const char*)((xmlNodePtr)pXmlAttr)->children->content); } } else if (rtxUTF8StrEqual (pXmlAttr->name, OSUTF8("anchor-type"))) { pvalue->m.anchor_typePresent = 1; if (0 != ((xmlNodePtr)pXmlAttr)->children) { Odf_Anchor_type_ToEnum (pctxt, ((xmlNodePtr)pXmlAttr)->children->content, &pvalue->anchor_type); } } } } /* Populate elements */ if (setChild) pXmlNode = pXmlNode->children; for ( ; 0 != pXmlNode; pXmlNode = pXmlNode->next) { if (pXmlNode->type == XML_ELEMENT_NODE) { if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("light"))) { { Ns7_Light* pdata2; pdata2 = rtxMemAllocType (pctxt, Ns7_Light); if (pdata2 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns7_Light (pdata2); DOMTest_Ns7_Light (pctxt, pdata2, pXmlNode, FALSE); if (0 != pdata2) rtxDListAppend (pctxt, &pvalue->light_list, (void*)pdata2); } } else if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("scene")) || rtxUTF8StrEqual (pXmlNode->name, OSUTF8("extrude")) || rtxUTF8StrEqual (pXmlNode->name, OSUTF8("sphere")) || rtxUTF8StrEqual (pXmlNode->name, OSUTF8("rotate")) || rtxUTF8StrEqual (pXmlNode->name, OSUTF8("cube"))) { { Ns7_Scene_element* pdata2; pdata2 = rtxMemAllocType (pctxt, Ns7_Scene_element); if (pdata2 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns7_Scene_element (pdata2); DOMTest_Ns7_Scene_element (pctxt, pdata2, pXmlNode, FALSE); if (0 != pdata2) rtxDListAppend (pctxt, &pvalue->choice_list, (void*)pdata2); } } } } return 0; }
int DOMTest_Ns7_Scene_element (OSCTXT* pctxt, Ns7_Scene_element* pvalue, xmlNodePtr pXmlNode, OSBOOL setChild) { if (setChild) pXmlNode = pXmlNode->children; for ( ; 0 != pXmlNode; pXmlNode = pXmlNode->next) { if (pXmlNode->type == XML_ELEMENT_NODE) { if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("scene"))) { pvalue->t = 1; pvalue->u.scene = rtxMemAllocType (pctxt, Ns7_Scene); if (pvalue->u.scene == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns7_Scene ((Ns7_Scene*)pvalue->u.scene); DOMTest_Ns7_Scene (pctxt, (Ns7_Scene*)pvalue->u.scene, pXmlNode, TRUE); break; } else if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("extrude"))) { pvalue->t = 2; pvalue->u.extrude = rtxMemAllocType (pctxt, Ns7_Extrude); if (pvalue->u.extrude == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns7_Extrude (pvalue->u.extrude); DOMTest_Ns7_Extrude (pctxt, pvalue->u.extrude, pXmlNode, TRUE); break; } else if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("sphere"))) { pvalue->t = 3; pvalue->u.sphere = rtxMemAllocType (pctxt, Ns7_Sphere); if (pvalue->u.sphere == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns7_Sphere (pvalue->u.sphere); DOMTest_Ns7_Sphere (pctxt, pvalue->u.sphere, pXmlNode, TRUE); break; } else if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("rotate"))) { pvalue->t = 4; pvalue->u.rotate = rtxMemAllocType (pctxt, Ns7_Rotate); if (pvalue->u.rotate == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns7_Rotate (pvalue->u.rotate); DOMTest_Ns7_Rotate (pctxt, pvalue->u.rotate, pXmlNode, TRUE); break; } else if (rtxUTF8StrEqual (pXmlNode->name, OSUTF8("cube"))) { pvalue->t = 5; pvalue->u.cube = rtxMemAllocType (pctxt, Ns7_Cube); if (pvalue->u.cube == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_Ns7_Cube (pvalue->u.cube); DOMTest_Ns7_Cube (pctxt, pvalue->u.cube, pXmlNode, TRUE); break; } else { LOG_RTERR1 (pctxt, RTERR_INVOPT, rtxErrAddStrParm (pctxt, (const char*)pXmlNode->name)); } } } return 0; }
int XmlDec_InvoiceType (OSCTXT* pctxt, InvoiceType* pvalue) { int stat = 0; { int elemID; static const OSXMLElemIDRec elemtab[] = { {{{OSUTF8("Header"), 6}, 0}, 0 }, {{{OSUTF8("LineItem"), 8}, 0}, 1 }, {{{OSUTF8("Summary"), 7}, 0}, 2 } } ; static const struct { int row; int num; int anyCase; } groupDesc[] = { {0, 1, -1}, {1, 2, -1}, {3, 0, -1}}; int group = 0; int i; for (i = 0; i < 3; i++) { int fromrow = groupDesc[group].row; int rows = groupDesc[group].num; int anyCase = groupDesc[group].anyCase; elemID = rtXmlpGetNextElemID (pctxt, elemtab + fromrow, rows, -1, FALSE); if (elemID == RTERR_UNEXPELEM && anyCase >= 0 && i == anyCase) elemID = anyCase; else if (elemID < 0) return LOG_RTERR (pctxt, elemID); else if (elemID == XML_OK_EOB) break; else if (elemID == elemtab[fromrow + rows - 1].id) group++; switch (elemID) { case 0: { /* Header */ stat = XmlDec_InvoiceHeaderType (pctxt, &pvalue->header); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); break; } case 1: { InvoiceLineItemType* pdata1; do { pdata1 = rtxMemAllocType (pctxt, InvoiceLineItemType); if (pdata1 == NULL) return LOG_RTERR (pctxt, RTERR_NOMEM); asn1Init_InvoiceLineItemType (pdata1); stat = XmlDec_InvoiceLineItemType (pctxt, pdata1); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); rtxDListAppend (pctxt, &pvalue->lineItem_list, (void*)pdata1); stat = rtXmlpGetNextElemID (pctxt, elemtab + 1, 1, -1, FALSE); if (stat < 0 && stat != RTERR_UNEXPELEM) return LOG_RTERR (pctxt, stat); } while (stat == 1); rtXmlpMarkLastEventActive (pctxt); stat = 0; break; } case 2: { /* Summary */ stat = XmlDec_InvoiceSummaryType (pctxt, &pvalue->summary); if (stat != 0) return LOG_RTERR (pctxt, stat); stat = rtXmlpMatchEndTag (pctxt, -1); if (stat < 0) return LOG_RTERR (pctxt, stat); break; } } i = elemID; } } return (stat); }