Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
0
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;
         }
      }
   }
Пример #5
0
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;
}
Пример #6
0
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;
}
Пример #7
0
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;
}
Пример #8
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);
}
Пример #9
0
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;
}
Пример #10
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;
}
Пример #11
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;
}
Пример #12
0
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;
}
Пример #13
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);
}
Пример #14
0
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);
}
Пример #15
0
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;
}
Пример #16
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);
}
Пример #17
0
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);
}
Пример #18
0
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;
}
Пример #19
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;
}
Пример #20
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;
}
Пример #21
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);
}