|
@@ -26,6 +26,7 @@ typedef struct
|
26
|
26
|
cmDtTypeInfo_t _cmDtTypeInfoArray[] =
|
27
|
27
|
{
|
28
|
28
|
{ kNullDtId, 0, "null" },
|
|
29
|
+ { kBoolDtId, sizeof(bool), "bool" },
|
29
|
30
|
{ kUCharDtId, sizeof(unsigned char), "uchar" },
|
30
|
31
|
{ kCharDtId, sizeof(char), "char" },
|
31
|
32
|
{ kUShortDtId, sizeof(unsigned short), "ushort" },
|
|
@@ -235,6 +236,8 @@ cmDtRC_t cmDataNewScalar( cmData_t* parent, cmDataTypeId_t tid, unsigned flags,
|
235
|
236
|
|
236
|
237
|
cmDtRC_t cmDataNewNull( cmData_t* parent, unsigned flags, cmData_t** ref )
|
237
|
238
|
{ *ref = _cmDataNew(parent, kScalarDtId, kNullDtId); return kOkDtRC; }
|
|
239
|
+cmDtRC_t cmDataNewBool( cmData_t* parent, unsigned flags, bool v, cmData_t** ref )
|
|
240
|
+{ return cmDataNewScalar(parent,kBoolDtId,flags,&v,0,ref); }
|
238
|
241
|
cmDtRC_t cmDataNewChar( cmData_t* parent, unsigned flags, char v, cmData_t** ref )
|
239
|
242
|
{ return cmDataNewScalar(parent,kCharDtId,flags,&v,0,ref); }
|
240
|
243
|
cmDtRC_t cmDataNewUChar( cmData_t* parent, unsigned flags, unsigned char v, cmData_t** ref )
|
|
@@ -297,6 +300,7 @@ cmDtRC_t cmDataSetScalarValue( cmData_t* d, cmDataTypeId_t tid, void* vp, unsig
|
297
|
300
|
case kNullDtId: // 'd' is already NULL.
|
298
|
301
|
break;
|
299
|
302
|
|
|
303
|
+ case kBoolDtId: d->u.b = *(bool*)vp; break;
|
300
|
304
|
case kUCharDtId: d->u.uc = *(unsigned char*)vp; break;
|
301
|
305
|
case kCharDtId: d->u.c = *(char*)vp; break;
|
302
|
306
|
case kUShortDtId: d->u.us = *(unsigned short*)vp; break;
|
|
@@ -379,6 +383,8 @@ cmDtRC_t cmDataSetScalarValue( cmData_t* d, cmDataTypeId_t tid, void* vp, unsig
|
379
|
383
|
|
380
|
384
|
cmDtRC_t cmDataSetNull( cmData_t* d )
|
381
|
385
|
{ return cmDataSetScalarValue(d, kNullDtId, NULL, 0, kNoFlagsDtFl ); }
|
|
386
|
+cmDtRC_t cmDataSetBool( cmData_t* d, bool v )
|
|
387
|
+{ return cmDataSetScalarValue(d, kBoolDtId, &v, 0, kNoFlagsDtFl ); }
|
382
|
388
|
cmDtRC_t cmDataSetChar( cmData_t* d, char v )
|
383
|
389
|
{ return cmDataSetScalarValue(d, kCharDtId, &v, 0, kNoFlagsDtFl ); }
|
384
|
390
|
cmDtRC_t cmDataSetUChar( cmData_t* d, unsigned char v )
|
|
@@ -413,6 +419,13 @@ cmDtRC_t cmDataSetConstBlob( cmData_t* d, unsigned flags, const void* v, unsigne
|
413
|
419
|
{ return cmDataSetScalarValue(d, kBlobDtId, (void*)v, byteCnt, flags |= kConstValueDtFl); }
|
414
|
420
|
|
415
|
421
|
|
|
422
|
+cmDtRC_t cmDataBool( const cmData_t* d, bool* v )
|
|
423
|
+{
|
|
424
|
+ if( d->tid != kBoolDtId )
|
|
425
|
+ return _cmDtErrMsg(d,kInvalidTypeDtRC,"Expected type:bool but encountered type:%s.",cmDataTypeToLabel(d->tid));
|
|
426
|
+ *v = d->u.c;
|
|
427
|
+ return kOkDtRC;
|
|
428
|
+}
|
416
|
429
|
|
417
|
430
|
cmDtRC_t cmDataChar( const cmData_t* d, char* v )
|
418
|
431
|
{
|
|
@@ -555,6 +568,13 @@ cmDtRC_t cmDataConstBlob( const cmData_t* d, const void** v, unsigned* byteCntR
|
555
|
568
|
return kOkDtRC;
|
556
|
569
|
}
|
557
|
570
|
|
|
571
|
+bool cmDtBool( const cmData_t* p )
|
|
572
|
+{
|
|
573
|
+ bool v;
|
|
574
|
+ if( cmDataBool(p,&v) != kOkDtRC )
|
|
575
|
+ v = kInvalidDtBool;
|
|
576
|
+ return v;
|
|
577
|
+}
|
558
|
578
|
|
559
|
579
|
char cmDtChar( const cmData_t* p )
|
560
|
580
|
{
|
|
@@ -668,6 +688,29 @@ const void* cmDtConstBlob( const cmData_t* p, unsigned* byteCntRef )
|
668
|
688
|
return v;
|
669
|
689
|
}
|
670
|
690
|
|
|
691
|
+cmDtRC_t cmDataGetBool( const cmData_t* p, bool* vp )
|
|
692
|
+{
|
|
693
|
+ if( p->cid != kScalarDtId )
|
|
694
|
+ return _cmDtErrMsg(p,kInvalidContDtRC,"Cannot convert a non-scalar value to a scalar value.");
|
|
695
|
+
|
|
696
|
+ switch( p->tid )
|
|
697
|
+ {
|
|
698
|
+ case kBoolDtId: *vp = p->u.b; break;
|
|
699
|
+ case kUCharDtId: *vp = (bool)p->u.uc; break;
|
|
700
|
+ case kCharDtId: *vp = (bool)p->u.c; break;
|
|
701
|
+ case kUShortDtId: *vp = (bool)p->u.us; break;
|
|
702
|
+ case kShortDtId: *vp = (bool)p->u.s; break;
|
|
703
|
+ case kUIntDtId: *vp = (bool)p->u.ui; break;
|
|
704
|
+ case kIntDtId: *vp = (bool)p->u.i; break;
|
|
705
|
+ case kULongDtId: *vp = (bool)p->u.ul; break;
|
|
706
|
+ case kLongDtId: *vp = (bool)p->u.l; break;
|
|
707
|
+ case kFloatDtId: *vp = (bool)p->u.f; break;
|
|
708
|
+ case kDoubleDtId: *vp = (bool)p->u.d; break;
|
|
709
|
+ default:
|
|
710
|
+ return _cmDtErrMsg(p,kCvtErrDtRC,"Cannot convert '%s' to 'bool'.",cmDataTypeToLabel(p->tid));
|
|
711
|
+ }
|
|
712
|
+ return kOkDtRC;
|
|
713
|
+}
|
671
|
714
|
|
672
|
715
|
cmDtRC_t cmDataGetUChar( const cmData_t* p, unsigned char* vp )
|
673
|
716
|
{
|
|
@@ -677,6 +720,7 @@ cmDtRC_t cmDataGetUChar( const cmData_t* p, unsigned char* vp )
|
677
|
720
|
switch( p->tid )
|
678
|
721
|
{
|
679
|
722
|
case kUCharDtId: *vp = p->u.uc; break;
|
|
723
|
+ case kBoolDtId: *vp = (unsigned char)p->u.b; break;
|
680
|
724
|
case kCharDtId: *vp = (unsigned char)p->u.c; break;
|
681
|
725
|
case kUShortDtId: *vp = (unsigned char)p->u.us; break;
|
682
|
726
|
case kShortDtId: *vp = (unsigned char)p->u.s; break;
|
|
@@ -699,6 +743,7 @@ cmDtRC_t cmDataGetChar( const cmData_t* p, char* vp )
|
699
|
743
|
|
700
|
744
|
switch( p->tid )
|
701
|
745
|
{
|
|
746
|
+ case kBoolDtId: *vp = (char)p->u.b; break;
|
702
|
747
|
case kUCharDtId: *vp = (char)p->u.uc; break;
|
703
|
748
|
case kCharDtId: *vp = p->u.c; break;
|
704
|
749
|
case kUShortDtId: *vp = (char)p->u.us; break;
|
|
@@ -722,6 +767,7 @@ cmDtRC_t cmDataGetShort( const cmData_t* p, short* vp )
|
722
|
767
|
|
723
|
768
|
switch( p->tid )
|
724
|
769
|
{
|
|
770
|
+ case kBoolDtId: *vp = (short)p->u.b; break;
|
725
|
771
|
case kUCharDtId: *vp = (short)p->u.uc; break;
|
726
|
772
|
case kCharDtId: *vp = (short)p->u.c; break;
|
727
|
773
|
case kUShortDtId: *vp = (short)p->u.us; break;
|
|
@@ -747,6 +793,7 @@ cmDtRC_t cmDataGetUShort( const cmData_t* p, unsigned short* vp )
|
747
|
793
|
|
748
|
794
|
switch( p->tid )
|
749
|
795
|
{
|
|
796
|
+ case kBoolDtId: *vp = (unsigned short)p->u.b; break;
|
750
|
797
|
case kUCharDtId: *vp = (unsigned short)p->u.uc; break;
|
751
|
798
|
case kCharDtId: *vp = (unsigned short)p->u.c; break;
|
752
|
799
|
case kUShortDtId: *vp = p->u.us; break;
|
|
@@ -771,6 +818,7 @@ cmDtRC_t cmDataGetInt( const cmData_t* p, int* vp )
|
771
|
818
|
|
772
|
819
|
switch( p->tid )
|
773
|
820
|
{
|
|
821
|
+ case kBoolDtId: *vp = (int)p->u.b; break;
|
774
|
822
|
case kUCharDtId: *vp = (int)p->u.uc; break;
|
775
|
823
|
case kCharDtId: *vp = (int)p->u.c; break;
|
776
|
824
|
case kUShortDtId: *vp = (int)p->u.us; break;
|
|
@@ -795,6 +843,7 @@ cmDtRC_t cmDataGetUInt( const cmData_t* p, unsigned int* vp )
|
795
|
843
|
|
796
|
844
|
switch( p->tid )
|
797
|
845
|
{
|
|
846
|
+ case kBoolDtId: *vp = (unsigned int)p->u.b; break;
|
798
|
847
|
case kUCharDtId: *vp = (unsigned int)p->u.uc; break;
|
799
|
848
|
case kCharDtId: *vp = (unsigned int)p->u.c; break;
|
800
|
849
|
case kUShortDtId: *vp = (unsigned int)p->u.us; break;
|
|
@@ -819,6 +868,7 @@ cmDtRC_t cmDataGetLong( const cmData_t* p, long* vp )
|
819
|
868
|
|
820
|
869
|
switch( p->tid )
|
821
|
870
|
{
|
|
871
|
+ case kBoolDtId: *vp = (long)p->u.b; break;
|
822
|
872
|
case kUCharDtId: *vp = (long)p->u.uc; break;
|
823
|
873
|
case kCharDtId: *vp = (long)p->u.c; break;
|
824
|
874
|
case kUShortDtId: *vp = (long)p->u.us; break;
|
|
@@ -843,6 +893,7 @@ cmDtRC_t cmDataGetULong( const cmData_t* p, unsigned long* vp )
|
843
|
893
|
|
844
|
894
|
switch( p->tid )
|
845
|
895
|
{
|
|
896
|
+ case kBoolDtId: *vp = (unsigned long)p->u.b; break;
|
846
|
897
|
case kUCharDtId: *vp = (unsigned long)p->u.uc; break;
|
847
|
898
|
case kCharDtId: *vp = (unsigned long)p->u.c; break;
|
848
|
899
|
case kUShortDtId: *vp = (unsigned long)p->u.us; break;
|
|
@@ -867,6 +918,7 @@ cmDtRC_t cmDataGetFloat( const cmData_t* p, float* vp )
|
867
|
918
|
|
868
|
919
|
switch( p->tid )
|
869
|
920
|
{
|
|
921
|
+ case kBoolDtId: *vp = (float)p->u.b; break;
|
870
|
922
|
case kUCharDtId: *vp = (float)p->u.uc; break;
|
871
|
923
|
case kCharDtId: *vp = (float)p->u.c; break;
|
872
|
924
|
case kUShortDtId: *vp = (float)p->u.us; break;
|
|
@@ -891,6 +943,7 @@ cmDtRC_t cmDataGetDouble( const cmData_t* p, double* vp )
|
891
|
943
|
|
892
|
944
|
switch( p->tid )
|
893
|
945
|
{
|
|
946
|
+ case kBoolDtId: *vp = (double)p->u.b; break;
|
894
|
947
|
case kUCharDtId: *vp = (double)p->u.uc; break;
|
895
|
948
|
case kCharDtId: *vp = (double)p->u.c; break;
|
896
|
949
|
case kUShortDtId: *vp = (double)p->u.us; break;
|
|
@@ -1014,6 +1067,8 @@ cmDtRC_t cmDataNewArray( cmData_t* parent, cmDataTypeId_t tid, void* vp, unsigne
|
1014
|
1067
|
|
1015
|
1068
|
}
|
1016
|
1069
|
|
|
1070
|
+cmDtRC_t cmDataNewBoolArray( cmData_t* parent, bool* v, unsigned eleCnt, unsigned flags, cmData_t** ref )
|
|
1071
|
+{ return cmDataNewArray(parent, kBoolDtId, v, eleCnt, flags, ref ); }
|
1017
|
1072
|
cmDtRC_t cmDataNewCharArray( cmData_t* parent, char* v, unsigned eleCnt, unsigned flags, cmData_t** ref )
|
1018
|
1073
|
{ return cmDataNewArray(parent, kCharDtId, v, eleCnt, flags, ref ); }
|
1019
|
1074
|
cmDtRC_t cmDataNewUCharArray( cmData_t* parent, unsigned char* v, unsigned eleCnt, unsigned flags, cmData_t** ref )
|
|
@@ -1099,6 +1154,8 @@ cmDtRC_t cmDataSetArrayValue( cmData_t* d, cmDataTypeId_t tid, void* vp, unsigne
|
1099
|
1154
|
|
1100
|
1155
|
}
|
1101
|
1156
|
|
|
1157
|
+cmDtRC_t cmDataSetBoolArray( cmData_t* d, bool* v, unsigned eleCnt, unsigned flags )
|
|
1158
|
+{ return cmDataSetArrayValue(d, kBoolDtId, v, eleCnt, flags ); }
|
1102
|
1159
|
cmDtRC_t cmDataSetCharArray( cmData_t* d, char* v, unsigned eleCnt, unsigned flags )
|
1103
|
1160
|
{ return cmDataSetArrayValue(d, kCharDtId, v, eleCnt, flags ); }
|
1104
|
1161
|
cmDtRC_t cmDataSetUCharArray( cmData_t* d, unsigned char* v, unsigned eleCnt, unsigned flags )
|
|
@@ -1128,6 +1185,13 @@ cmDtRC_t cmDataSetConstStrArray(cmData_t* d,const cmChar_t** v,unsigned eleCnt,
|
1128
|
1185
|
unsigned cmDataArrayEleCount( const cmData_t* d )
|
1129
|
1186
|
{ return d->cid==kArrayDtId ? d->cnt : 0; }
|
1130
|
1187
|
|
|
1188
|
+cmDtRC_t cmDataBoolArray( const cmData_t* d, bool** v )
|
|
1189
|
+{
|
|
1190
|
+ if( d->cid != kArrayDtId )
|
|
1191
|
+ return _cmDtErrMsg(d,kInvalidContDtRC,"Cannot return an array base for a %s container.",cmDataContainerIdToLabel(d->cid));
|
|
1192
|
+ *v = (bool*)d->u.vp;
|
|
1193
|
+ return kOkDtRC;
|
|
1194
|
+}
|
1131
|
1195
|
|
1132
|
1196
|
cmDtRC_t cmDataCharArray( const cmData_t* d, char** v )
|
1133
|
1197
|
{
|
|
@@ -1209,6 +1273,14 @@ cmDtRC_t cmDataDoubleArray( const cmData_t* d, double** v )
|
1209
|
1273
|
return kOkDtRC;
|
1210
|
1274
|
}
|
1211
|
1275
|
|
|
1276
|
+bool* cmDtBoolArray( const cmData_t* d )
|
|
1277
|
+{
|
|
1278
|
+ bool* v = NULL;
|
|
1279
|
+ if( cmDataBoolArray(d,&v) != kOkDtRC )
|
|
1280
|
+ return NULL;
|
|
1281
|
+ return v;
|
|
1282
|
+}
|
|
1283
|
+
|
1212
|
1284
|
char* cmDtCharArray( const cmData_t* d )
|
1213
|
1285
|
{
|
1214
|
1286
|
char* v = NULL;
|
|
@@ -1612,46 +1684,108 @@ cmData_t* cmDataPairMake( cmData_t* parent, cmData_t* p, cmData_t* key, cmData_t
|
1612
|
1684
|
}
|
1613
|
1685
|
|
1614
|
1686
|
// Dynamically allocate a pair node
|
1615
|
|
-cmData_t* cmDataPairAlloc( cmData_t* parent, const cmData_t* key, const cmData_t* value )
|
|
1687
|
+cmRC_t cmDataPairAlloc( cmData_t* parent, const cmData_t* key, const cmData_t* value, cmData_t** ref )
|
1616
|
1688
|
{
|
|
1689
|
+ cmRC_t rc = kOkDtRC;
|
1617
|
1690
|
cmData_t* p = _cmDataNew(parent,kPairDtId,kStructDtId);
|
1618
|
|
- cmData_t* kp = NULL;
|
|
1691
|
+ cmData_t* kp = NULL;
|
1619
|
1692
|
cmData_t* vp = NULL;
|
1620
|
1693
|
|
1621
|
|
- // BUG BUG BUG - must check return value of cmDataDupl()
|
1622
|
|
- cmDataDupl(key,&kp);
|
1623
|
|
- cmDataDupl(value,&vp);
|
|
1694
|
+ if( ref != NULL )
|
|
1695
|
+ *ref = NULL;
|
|
1696
|
+
|
|
1697
|
+ if((rc = cmDataDupl(key,&kp)) != kOkDtRC )
|
|
1698
|
+ goto errLabel;
|
|
1699
|
+
|
|
1700
|
+ if((rc = cmDataDupl(value,&vp)) != kOkDtRC )
|
|
1701
|
+ goto errLabel;
|
1624
|
1702
|
|
1625
|
1703
|
cmDataPrependChild(p,vp);
|
1626
|
1704
|
cmDataPrependChild(p,kp);
|
1627
|
|
- return p;
|
|
1705
|
+
|
|
1706
|
+ if( ref != NULL )
|
|
1707
|
+ *ref = p;
|
|
1708
|
+
|
|
1709
|
+ errLabel:
|
|
1710
|
+ if( rc != kOkDtRC )
|
|
1711
|
+ {
|
|
1712
|
+ cmDataFree(kp);
|
|
1713
|
+ cmDataFree(vp);
|
|
1714
|
+ cmDataFree(p);
|
|
1715
|
+ }
|
|
1716
|
+
|
|
1717
|
+ return rc;
|
1628
|
1718
|
}
|
1629
|
1719
|
|
1630
|
|
-cmData_t* cmDataPairAllocId(cmData_t* parent, unsigned keyId, cmData_t* value )
|
|
1720
|
+cmRC_t cmDataPairAllocId(cmData_t* parent, unsigned keyId, cmData_t* value, cmData_t** ref )
|
1631
|
1721
|
{
|
|
1722
|
+ cmRC_t rc = kOkDtRC;
|
|
1723
|
+ if( ref != NULL )
|
|
1724
|
+ *ref = NULL;
|
|
1725
|
+
|
1632
|
1726
|
cmData_t* p = _cmDataNew(parent,kPairDtId,kStructDtId);
|
1633
|
|
- cmDataNewUInt(p,kNoFlagsDtFl,keyId,NULL);
|
|
1727
|
+
|
|
1728
|
+ if((rc = cmDataNewUInt(p,kNoFlagsDtFl,keyId,NULL)) != kOkDtRC )
|
|
1729
|
+ goto errLabel;
|
|
1730
|
+
|
1634
|
1731
|
cmDataAppendChild(p,value);
|
1635
|
|
- return p;
|
|
1732
|
+
|
|
1733
|
+ if( ref != NULL )
|
|
1734
|
+ *ref = p;
|
|
1735
|
+
|
|
1736
|
+ errLabel:
|
|
1737
|
+ if( rc != kOkDtRC )
|
|
1738
|
+ cmDataFree(p);
|
|
1739
|
+
|
|
1740
|
+ return rc;
|
1636
|
1741
|
}
|
1637
|
1742
|
|
1638
|
|
-cmData_t* cmDataPairAllocLabel( cmData_t* parent, const cmChar_t *label, cmData_t* value )
|
|
1743
|
+cmRC_t cmDataPairAllocLabel( cmData_t* parent, const cmChar_t *label, cmData_t* value, cmData_t** ref )
|
1639
|
1744
|
{
|
|
1745
|
+ cmRC_t rc = kOkDtRC;
|
1640
|
1746
|
cmData_t* p = _cmDataNew(parent,kPairDtId,kStructDtId);
|
1641
|
1747
|
|
1642
|
|
- // BUG BUG BUG - should check return value
|
1643
|
|
- cmDataNewConstStr(p,kNoFlagsDtFl,label,NULL);
|
|
1748
|
+ if( ref != NULL )
|
|
1749
|
+ *ref = NULL;
|
|
1750
|
+
|
|
1751
|
+ if((rc = cmDataNewConstStr(p,kNoFlagsDtFl,label,NULL)) != kOkDtRC )
|
|
1752
|
+ goto errLabel;
|
|
1753
|
+
|
1644
|
1754
|
cmDataAppendChild(p,value);
|
1645
|
|
- return p;
|
|
1755
|
+
|
|
1756
|
+ if( ref != NULL )
|
|
1757
|
+ *ref = p;
|
|
1758
|
+
|
|
1759
|
+ errLabel:
|
|
1760
|
+
|
|
1761
|
+ if( rc != kOkDtRC )
|
|
1762
|
+ cmDataFree(p);
|
|
1763
|
+
|
|
1764
|
+ return rc;
|
1646
|
1765
|
}
|
1647
|
1766
|
|
1648
|
|
-cmData_t* cmDataPairAllocLabelN(cmData_t* parent, const cmChar_t* label, unsigned charCnt, cmData_t* value)
|
|
1767
|
+cmRC_t cmDataPairAllocLabelN(cmData_t* parent, const cmChar_t* label, unsigned charCnt, cmData_t* value, cmData_t** ref)
|
1649
|
1768
|
{
|
|
1769
|
+ cmRC_t rc = kOkDtRC;
|
|
1770
|
+
|
|
1771
|
+ if( ref != NULL )
|
|
1772
|
+ *ref = NULL;
|
|
1773
|
+
|
1650
|
1774
|
cmData_t* p = _cmDataNew(parent,kPairDtId,kStructDtId);
|
1651
|
|
- // BUG BUG BUG - should check return value
|
1652
|
|
- cmDataNewConstStrN(p,kNoFlagsDtFl,label,charCnt,NULL);
|
|
1775
|
+
|
|
1776
|
+ if((rc = cmDataNewConstStrN(p,kNoFlagsDtFl,label,charCnt,NULL)) != kOkDtRC )
|
|
1777
|
+ goto errLabel;
|
|
1778
|
+
|
1653
|
1779
|
cmDataAppendChild(p,value);
|
1654
|
|
- return p;
|
|
1780
|
+
|
|
1781
|
+ if( ref != NULL )
|
|
1782
|
+ *ref = p;
|
|
1783
|
+
|
|
1784
|
+ errLabel:
|
|
1785
|
+ if( rc != kOkDtRC )
|
|
1786
|
+ cmMemFree(p);
|
|
1787
|
+
|
|
1788
|
+ return rc;
|
1655
|
1789
|
}
|
1656
|
1790
|
|
1657
|
1791
|
|
|
@@ -1678,35 +1812,47 @@ cmData_t* cmDataListMake( cmData_t* parent, cmData_t* p )
|
1678
|
1812
|
cmData_t* cmDataListAlloc( cmData_t* parent)
|
1679
|
1813
|
{ return _cmDataNew(parent,kListDtId,kStructDtId); }
|
1680
|
1814
|
|
1681
|
|
-cmDtRC_t _cmDataParseArgV( cmData_t* parent, va_list vl, cmData_t** vpp )
|
|
1815
|
+cmDtRC_t _cmDataParseArgV( cmData_t* parent, cmErr_t* err, cmRC_t errRC, va_list vl, cmData_t** vpp )
|
1682
|
1816
|
{
|
1683
|
|
- cmDtRC_t rc = kOkDtRC;
|
1684
|
|
- cmData_t* vp = NULL;
|
1685
|
|
- cmDataContainerId_t cid = va_arg(vl,unsigned);
|
1686
|
|
- cmDataTypeId_t tid = va_arg(vl,unsigned);
|
|
1817
|
+ cmDtRC_t rc = kOkDtRC;
|
|
1818
|
+ cmData_t* vp = NULL;
|
|
1819
|
+ cmDataTypeId_t tid = va_arg(vl,unsigned);
|
|
1820
|
+ cmDataContainerId_t cid = tid & kContainerDtMask;
|
|
1821
|
+ unsigned flags = tid & kFlagsDtMask;
|
|
1822
|
+
|
|
1823
|
+ tid = cmClrFlag(tid,kContainerDtMask | kFlagsDtMask);
|
|
1824
|
+
|
|
1825
|
+ // if no container flag was given assume a scalar container
|
|
1826
|
+ if( cid == 0 )
|
|
1827
|
+ cid = kScalarDtId;
|
1687
|
1828
|
|
1688
|
1829
|
switch(cid)
|
1689
|
1830
|
{
|
1690
|
|
- case kInvalidCntDtId: rc = kEolDtRC; break;
|
1691
|
|
-
|
1692
|
1831
|
case kScalarDtId:
|
1693
|
1832
|
switch(tid)
|
1694
|
1833
|
{
|
1695
|
|
- case kNullDtId: rc = cmDataNewNull( parent,kNoFlagsDtFl,&vp); break;
|
1696
|
|
- case kUCharDtId: rc = cmDataNewUChar( parent,kNoFlagsDtFl,va_arg(vl,int),&vp); break;
|
1697
|
|
- case kCharDtId: rc = cmDataNewChar( parent,kNoFlagsDtFl,va_arg(vl,int),&vp); break;
|
1698
|
|
- case kUShortDtId: rc = cmDataNewUShort( parent,kNoFlagsDtFl,va_arg(vl,int),&vp); break;
|
1699
|
|
- case kShortDtId: rc = cmDataNewShort( parent,kNoFlagsDtFl,va_arg(vl,int),&vp); break;
|
1700
|
|
- case kUIntDtId: rc = cmDataNewUInt( parent,kNoFlagsDtFl,va_arg(vl,unsigned int),&vp); break;
|
1701
|
|
- case kIntDtId: rc = cmDataNewInt( parent,kNoFlagsDtFl,va_arg(vl,int),&vp); break;
|
1702
|
|
- case kULongDtId: rc = cmDataNewULong( parent,kNoFlagsDtFl,va_arg(vl,unsigned long),&vp); break;
|
1703
|
|
- case kLongDtId: rc = cmDataNewLong( parent,kNoFlagsDtFl,va_arg(vl,long),&vp); break;
|
1704
|
|
- case kFloatDtId: rc = cmDataNewFloat( parent,kNoFlagsDtFl,va_arg(vl,double),&vp); break;
|
1705
|
|
- case kDoubleDtId: rc = cmDataNewDouble( parent,kNoFlagsDtFl,va_arg(vl,double),&vp); break;
|
1706
|
|
- case kStrDtId: rc = cmDataNewStr( parent,kNoFlagsDtFl,va_arg(vl,cmChar_t*),&vp); break;
|
|
1834
|
+ case kInvalidTypeDtId:
|
|
1835
|
+ rc = kEolDtRC;
|
|
1836
|
+ break;
|
|
1837
|
+
|
|
1838
|
+ case kNullDtId: rc = cmDataNewNull( parent,flags,&vp); break;
|
|
1839
|
+ case kBoolDtId: rc = cmDataNewBool( parent,flags,va_arg(vl,int),&vp); break;
|
|
1840
|
+ case kUCharDtId: rc = cmDataNewUChar( parent,flags,va_arg(vl,int),&vp); break;
|
|
1841
|
+ case kCharDtId: rc = cmDataNewChar( parent,flags,va_arg(vl,int),&vp); break;
|
|
1842
|
+ case kUShortDtId: rc = cmDataNewUShort( parent,flags,va_arg(vl,int),&vp); break;
|
|
1843
|
+ case kShortDtId: rc = cmDataNewShort( parent,flags,va_arg(vl,int),&vp); break;
|
|
1844
|
+ case kUIntDtId: rc = cmDataNewUInt( parent,flags,va_arg(vl,unsigned int),&vp); break;
|
|
1845
|
+ case kIntDtId: rc = cmDataNewInt( parent,flags,va_arg(vl,int),&vp); break;
|
|
1846
|
+ case kULongDtId: rc = cmDataNewULong( parent,flags,va_arg(vl,unsigned long),&vp); break;
|
|
1847
|
+ case kLongDtId: rc = cmDataNewLong( parent,flags,va_arg(vl,long),&vp); break;
|
|
1848
|
+ case kFloatDtId: rc = cmDataNewFloat( parent,flags,va_arg(vl,double),&vp); break;
|
|
1849
|
+ case kDoubleDtId: rc = cmDataNewDouble( parent,flags,va_arg(vl,double),&vp); break;
|
|
1850
|
+ case kStrDtId: rc = cmDataNewStr( parent,flags,va_arg(vl,cmChar_t*),&vp); break;
|
1707
|
1851
|
default:
|
1708
|
|
- // BUG BUG BUG - signal an error here
|
1709
|
|
- assert(0);
|
|
1852
|
+ if( err != NULL )
|
|
1853
|
+ cmErrMsg(err,errRC,"Unknown scalar data type id (%i) when parsing new object var-args list.",tid);
|
|
1854
|
+ else
|
|
1855
|
+ rc = kInvalidTypeDtRC;
|
1710
|
1856
|
break;
|
1711
|
1857
|
}
|
1712
|
1858
|
break;
|
|
@@ -1718,21 +1864,23 @@ cmDtRC_t _cmDataParseArgV( cmData_t* parent, va_list vl, cmData_t** vpp )
|
1718
|
1864
|
|
1719
|
1865
|
switch(tid)
|
1720
|
1866
|
{
|
1721
|
|
- case kUCharDtId: rc = cmDataNewUCharArray( parent,(unsigned char*)svp, cnt,kNoFlagsDtFl,&vp); break;
|
1722
|
|
- case kCharDtId: rc = cmDataNewCharArray( parent,(char*)svp, cnt,kNoFlagsDtFl,&vp); break;
|
1723
|
|
- case kUShortDtId: rc = cmDataNewUShortArray( parent,(unsigned short*)svp,cnt,kNoFlagsDtFl,&vp); break;
|
1724
|
|
- case kShortDtId: rc = cmDataNewShortArray( parent,(short*)svp, cnt,kNoFlagsDtFl,&vp); break;
|
1725
|
|
- case kUIntDtId: rc = cmDataNewUIntArray( parent,(unsigned int*)svp, cnt,kNoFlagsDtFl,&vp); break;
|
1726
|
|
- case kIntDtId: rc = cmDataNewIntArray( parent,(int*)svp, cnt,kNoFlagsDtFl,&vp); break;
|
1727
|
|
- case kULongDtId: rc = cmDataNewULongArray( parent,(unsigned long*)svp, cnt,kNoFlagsDtFl,&vp); break;
|
1728
|
|
- case kLongDtId: rc = cmDataNewLongArray( parent,(long*)svp, cnt,kNoFlagsDtFl,&vp); break;
|
1729
|
|
- case kFloatDtId: rc = cmDataNewFloatArray( parent,(float*)svp, cnt,kNoFlagsDtFl,&vp); break;
|
1730
|
|
- case kDoubleDtId: rc = cmDataNewDoubleArray( parent,(double*)svp, cnt,kNoFlagsDtFl,&vp); break;
|
1731
|
|
- case kStrDtId: rc = cmDataNewStrArray( parent,(cmChar_t**)svp, cnt,kNoFlagsDtFl,&vp); break;
|
|
1867
|
+ case kBoolDtId: rc = cmDataNewBoolArray( parent,(bool*)svp, cnt,flags,&vp); break;
|
|
1868
|
+ case kUCharDtId: rc = cmDataNewUCharArray( parent,(unsigned char*)svp, cnt,flags,&vp); break;
|
|
1869
|
+ case kCharDtId: rc = cmDataNewCharArray( parent,(char*)svp, cnt,flags,&vp); break;
|
|
1870
|
+ case kUShortDtId: rc = cmDataNewUShortArray( parent,(unsigned short*)svp,cnt,flags,&vp); break;
|
|
1871
|
+ case kShortDtId: rc = cmDataNewShortArray( parent,(short*)svp, cnt,flags,&vp); break;
|
|
1872
|
+ case kUIntDtId: rc = cmDataNewUIntArray( parent,(unsigned int*)svp, cnt,flags,&vp); break;
|
|
1873
|
+ case kIntDtId: rc = cmDataNewIntArray( parent,(int*)svp, cnt,flags,&vp); break;
|
|
1874
|
+ case kULongDtId: rc = cmDataNewULongArray( parent,(unsigned long*)svp, cnt,flags,&vp); break;
|
|
1875
|
+ case kLongDtId: rc = cmDataNewLongArray( parent,(long*)svp, cnt,flags,&vp); break;
|
|
1876
|
+ case kFloatDtId: rc = cmDataNewFloatArray( parent,(float*)svp, cnt,flags,&vp); break;
|
|
1877
|
+ case kDoubleDtId: rc = cmDataNewDoubleArray( parent,(double*)svp, cnt,flags,&vp); break;
|
|
1878
|
+ case kStrDtId: rc = cmDataNewStrArray( parent,(cmChar_t**)svp, cnt,flags,&vp); break;
|
1732
|
1879
|
default:
|
1733
|
|
- // BUG BUG BUG - signal an error here
|
1734
|
|
-
|
1735
|
|
- assert(0);
|
|
1880
|
+ if( err != NULL )
|
|
1881
|
+ cmErrMsg(err,errRC,"Unknown array data type id (%i) when parsing new object var-args list.",tid);
|
|
1882
|
+ else
|
|
1883
|
+ rc = kInvalidTypeDtRC;
|
1736
|
1884
|
break;
|
1737
|
1885
|
}
|
1738
|
1886
|
}
|
|
@@ -1741,12 +1889,14 @@ cmDtRC_t _cmDataParseArgV( cmData_t* parent, va_list vl, cmData_t** vpp )
|
1741
|
1889
|
case kListDtId:
|
1742
|
1890
|
case kPairDtId:
|
1743
|
1891
|
case kRecordDtId:
|
1744
|
|
- vp = _cmDataNew(parent,cid,kStructDtId);
|
|
1892
|
+ cmDataAppendChild(parent,va_arg(vl,cmData_t*));
|
1745
|
1893
|
break;
|
1746
|
1894
|
|
1747
|
1895
|
default:
|
1748
|
|
- // BUG BUG BUG - signal an error here
|
1749
|
|
- assert(0);
|
|
1896
|
+ if( err != NULL )
|
|
1897
|
+ cmErrMsg(err,errRC,"Unknown container type id (%i) when parsing new object var-args list.",cid);
|
|
1898
|
+ else
|
|
1899
|
+ rc = kInvalidContDtRC;
|
1750
|
1900
|
break;
|
1751
|
1901
|
}
|
1752
|
1902
|
|
|
@@ -1755,7 +1905,7 @@ cmDtRC_t _cmDataParseArgV( cmData_t* parent, va_list vl, cmData_t** vpp )
|
1755
|
1905
|
return rc;
|
1756
|
1906
|
}
|
1757
|
1907
|
|
1758
|
|
-cmDtRC_t _cmDataListParseV(cmData_t* parent, va_list vl )
|
|
1908
|
+cmDtRC_t _cmDataListParseV(cmData_t* parent, cmErr_t* err, cmRC_t errRC, va_list vl )
|
1759
|
1909
|
{
|
1760
|
1910
|
cmDtRC_t rc = kOkDtRC;
|
1761
|
1911
|
bool contFl = true;
|
|
@@ -1764,7 +1914,7 @@ cmDtRC_t _cmDataListParseV(cmData_t* parent, va_list vl )
|
1764
|
1914
|
{
|
1765
|
1915
|
cmData_t* vp;
|
1766
|
1916
|
|
1767
|
|
- rc = _cmDataParseArgV(parent, vl, &vp);
|
|
1917
|
+ rc = _cmDataParseArgV(parent,err,errRC,vl,&vp);
|
1768
|
1918
|
|
1769
|
1919
|
if(rc != kOkDtRC )
|
1770
|
1920
|
{
|
|
@@ -1778,13 +1928,13 @@ cmDtRC_t _cmDataListParseV(cmData_t* parent, va_list vl )
|
1778
|
1928
|
return rc;
|
1779
|
1929
|
}
|
1780
|
1930
|
|
1781
|
|
-cmRC_t cmDataListAllocV(cmData_t* parent, cmData_t** ref, va_list vl )
|
|
1931
|
+cmRC_t cmDataListAllocV(cmData_t* parent, cmErr_t* err, cmRC_t errRC, cmData_t** ref, va_list vl )
|
1782
|
1932
|
{
|
1783
|
1933
|
cmData_t* p = cmDataListAlloc(parent);
|
1784
|
1934
|
|
1785
|
1935
|
cmRC_t rc;
|
1786
|
1936
|
|
1787
|
|
- if((rc = _cmDataListParseV(p, vl )) != kOkDtRC )
|
|
1937
|
+ if((rc = _cmDataListParseV(p,err,errRC,vl )) != kOkDtRC )
|
1788
|
1938
|
{
|
1789
|
1939
|
cmDataUnlinkAndFree(p);
|
1790
|
1940
|
return rc;
|
|
@@ -1796,11 +1946,11 @@ cmRC_t cmDataListAllocV(cmData_t* parent, cmData_t** ref, va_list vl )
|
1796
|
1946
|
return rc;
|
1797
|
1947
|
}
|
1798
|
1948
|
|
1799
|
|
-cmRC_t cmDataListAllocA(cmData_t* parent, cmData_t** ref, ... )
|
|
1949
|
+cmRC_t cmDataListAllocA(cmData_t* parent, cmErr_t* err, cmRC_t errRC, cmData_t** ref, ... )
|
1800
|
1950
|
{
|
1801
|
1951
|
va_list vl;
|
1802
|
1952
|
va_start(vl,ref);
|
1803
|
|
- cmRC_t rc = cmDataListAllocV(parent,ref,vl);
|
|
1953
|
+ cmRC_t rc = cmDataListAllocV(parent,err,errRC,ref,vl);
|
1804
|
1954
|
va_end(vl);
|
1805
|
1955
|
return rc;
|
1806
|
1956
|
}
|
|
@@ -1827,20 +1977,20 @@ cmData_t* cmDataListAppendEleN(cmData_t* p, cmData_t* ele[], unsigned n )
|
1827
|
1977
|
return rp;
|
1828
|
1978
|
}
|
1829
|
1979
|
|
1830
|
|
-cmDtRC_t cmDataListAppendV( cmData_t* p, va_list vl )
|
|
1980
|
+cmDtRC_t cmDataListAppendV( cmData_t* p, cmErr_t* err, cmRC_t errRC, va_list vl )
|
1831
|
1981
|
{
|
1832
|
1982
|
cmDtRC_t rc;
|
1833
|
|
- if((rc = _cmDataListParseV(p, vl )) != kOkDtRC )
|
|
1983
|
+ if((rc = _cmDataListParseV(p, err, errRC, vl )) != kOkDtRC )
|
1834
|
1984
|
return rc;
|
1835
|
1985
|
|
1836
|
1986
|
return kOkDtRC;
|
1837
|
1987
|
}
|
1838
|
1988
|
|
1839
|
|
-cmDtRC_t cmDataListAppend( cmData_t* p, ... )
|
|
1989
|
+cmDtRC_t cmDataListAppend( cmData_t* p, cmErr_t* err, cmRC_t errRC, ... )
|
1840
|
1990
|
{
|
1841
|
1991
|
va_list vl;
|
1842
|
|
- va_start(vl,p);
|
1843
|
|
- cmDtRC_t rc = cmDataListAppendV(p,vl);
|
|
1992
|
+ va_start(vl,errRC);
|
|
1993
|
+ cmDtRC_t rc = cmDataListAppendV(p,err,errRC,vl);
|
1844
|
1994
|
va_end(vl);
|
1845
|
1995
|
return rc;
|
1846
|
1996
|
}
|
|
@@ -1929,7 +2079,6 @@ const cmChar_t* cmDataRecdKeyLabel( cmData_t* p, unsigned index )
|
1929
|
2079
|
{
|
1930
|
2080
|
cmData_t* kp = cmDataRecdKey(p,index);
|
1931
|
2081
|
const cmChar_t* label = NULL;
|
1932
|
|
- // BUG BUG BUG - test return value
|
1933
|
2082
|
cmDataConstStr(kp,&label);
|
1934
|
2083
|
return label;
|
1935
|
2084
|
}
|
|
@@ -1957,7 +2106,7 @@ cmData_t* cmDataRecdAppendPair( cmData_t* p, cmData_t* pair )
|
1957
|
2106
|
}
|
1958
|
2107
|
|
1959
|
2108
|
|
1960
|
|
-cmDtRC_t _cmDataRecdParseInputV(cmData_t* parent, unsigned idFl, va_list vl )
|
|
2109
|
+cmDtRC_t _cmDataRecdParseInputV(cmData_t* parent, cmErr_t* err, cmRC_t errRC, unsigned idFl, va_list vl )
|
1961
|
2110
|
{
|
1962
|
2111
|
assert( parent != NULL && parent->cid == kRecordDtId && parent->tid == kStructDtId );
|
1963
|
2112
|
bool contFl = true;
|
|
@@ -1981,7 +2130,7 @@ cmDtRC_t _cmDataRecdParseInputV(cmData_t* parent, unsigned idFl, va_list vl )
|
1981
|
2130
|
break;
|
1982
|
2131
|
|
1983
|
2132
|
// parse the field data
|
1984
|
|
- if((rc =_cmDataParseArgV( NULL, vl, &vp )) != kOkDtRC )
|
|
2133
|
+ if((rc =_cmDataParseArgV( NULL, err, errRC, vl, &vp )) != kOkDtRC )
|
1985
|
2134
|
{
|
1986
|
2135
|
contFl = false;
|
1987
|
2136
|
}
|
|
@@ -1989,18 +2138,18 @@ cmDtRC_t _cmDataRecdParseInputV(cmData_t* parent, unsigned idFl, va_list vl )
|
1989
|
2138
|
{
|
1990
|
2139
|
// create the field pair
|
1991
|
2140
|
if( idFl )
|
1992
|
|
- cmDataPairAllocId(parent,id,vp);
|
|
2141
|
+ rc = cmDataPairAllocId(parent,id,vp,NULL);
|
1993
|
2142
|
else
|
1994
|
|
- cmDataPairAllocLabel(parent,label,vp);
|
|
2143
|
+ rc = cmDataPairAllocLabel(parent,label,vp,NULL);
|
1995
|
2144
|
}
|
1996
|
2145
|
}
|
1997
|
2146
|
return rc;
|
1998
|
2147
|
}
|
1999
|
2148
|
|
2000
|
|
-cmData_t* cmDataRecdAllocLabelV( cmData_t* parent, va_list vl )
|
|
2149
|
+cmData_t* cmDataRecdAllocLabelV( cmData_t* parent, cmErr_t* err, cmRC_t errRC, va_list vl )
|
2001
|
2150
|
{
|
2002
|
2151
|
cmData_t* p = cmDataRecdAlloc(parent);
|
2003
|
|
- cmDtRC_t rc = _cmDataRecdParseInputV(p, false, vl );
|
|
2152
|
+ cmDtRC_t rc = _cmDataRecdParseInputV(p, err, errRC, false, vl );
|
2004
|
2153
|
if( rc != kOkDtRC )
|
2005
|
2154
|
{
|
2006
|
2155
|
cmDataFree(p);
|
|
@@ -2009,19 +2158,19 @@ cmData_t* cmDataRecdAllocLabelV( cmData_t* parent, va_list vl )
|
2009
|
2158
|
return p;
|
2010
|
2159
|
}
|
2011
|
2160
|
|
2012
|
|
-cmData_t* cmDataRecdAllocLabelA( cmData_t* parent, ... )
|
|
2161
|
+cmData_t* cmDataRecdAllocLabelA( cmData_t* parent, cmErr_t* err, cmRC_t errRC, ... )
|
2013
|
2162
|
{
|
2014
|
2163
|
va_list vl;
|
2015
|
|
- va_start(vl,parent);
|
2016
|
|
- cmData_t* p = cmDataRecdAllocLabelV(parent,vl);
|
|
2164
|
+ va_start(vl,errRC);
|
|
2165
|
+ cmData_t* p = cmDataRecdAllocLabelV(parent,err,errRC,vl);
|
2017
|
2166
|
va_end(vl);
|
2018
|
2167
|
return p;
|
2019
|
2168
|
}
|
2020
|
2169
|
|
2021
|
|
-cmData_t* cmDataRecdAllocIdV( cmData_t* parent, va_list vl )
|
|
2170
|
+cmData_t* cmDataRecdAllocIdV( cmData_t* parent, cmErr_t* err, cmRC_t errRC, va_list vl )
|
2022
|
2171
|
{
|
2023
|
2172
|
cmData_t* p = cmDataRecdAlloc(parent);
|
2024
|
|
- cmDtRC_t rc = _cmDataRecdParseInputV(p, true, vl );
|
|
2173
|
+ cmDtRC_t rc = _cmDataRecdParseInputV(p, err, errRC, true, vl );
|
2025
|
2174
|
if( rc != kOkDtRC )
|
2026
|
2175
|
{
|
2027
|
2176
|
cmDataFree(p);
|
|
@@ -2030,11 +2179,11 @@ cmData_t* cmDataRecdAllocIdV( cmData_t* parent, va_list vl )
|
2030
|
2179
|
return p;
|
2031
|
2180
|
}
|
2032
|
2181
|
|
2033
|
|
-cmData_t* cmDataRecdAllocIdA( cmData_t* parent, ... )
|
|
2182
|
+cmData_t* cmDataRecdAllocIdA( cmData_t* parent, cmErr_t* err, cmRC_t errRC, ... )
|
2034
|
2183
|
{
|
2035
|
2184
|
va_list vl;
|
2036
|
|
- va_start(vl,parent);
|
2037
|
|
- cmData_t* p = cmDataRecdAllocIdV(parent,vl);
|
|
2185
|
+ va_start(vl,errRC);
|
|
2186
|
+ cmData_t* p = cmDataRecdAllocIdV(parent,err,errRC,vl);
|
2038
|
2187
|
va_end(vl);
|
2039
|
2188
|
return p;
|
2040
|
2189
|
}
|
|
@@ -2141,6 +2290,10 @@ cmDtRC_t _cmDataRecdParseV(cmData_t* p, bool idFl, cmErr_t* err, unsigned errRC,
|
2141
|
2290
|
case kNullDtId:
|
2142
|
2291
|
break;
|
2143
|
2292
|
|
|
2293
|
+ case kBoolDtId:
|
|
2294
|
+ rc0 = cmDataGetBool(np,(bool*)v);
|
|
2295
|
+ break;
|
|
2296
|
+
|
2144
|
2297
|
case kUCharDtId:
|
2145
|
2298
|
rc0 = cmDataGetUChar(np,(unsigned char*)v);
|
2146
|
2299
|
break;
|
|
@@ -2207,6 +2360,7 @@ cmDtRC_t _cmDataRecdParseV(cmData_t* p, bool idFl, cmErr_t* err, unsigned errRC,
|
2207
|
2360
|
case kNullDtId:
|
2208
|
2361
|
break;
|
2209
|
2362
|
|
|
2363
|
+ case kBoolDtId:
|
2210
|
2364
|
case kUCharDtId:
|
2211
|
2365
|
case kCharDtId:
|
2212
|
2366
|
case kUShortDtId:
|
|
@@ -2342,6 +2496,7 @@ char* _cmDataSerializeWrite( cmData_t* np, char* dp, const char* ep )
|
2342
|
2496
|
switch( np->tid )
|
2343
|
2497
|
{
|
2344
|
2498
|
case kNullDtId: break;
|
|
2499
|
+ case kBoolDtId: *((bool*)dp) = cmDataBool(np); dp+=sizeof(bool); break;
|
2345
|
2500
|
case kUCharDtId: *((unsigned char*)dp) = cmDataUChar(np); dp+=sizeof(unsigned char); break;
|
2346
|
2501
|
case kCharDtId: *((char*)dp) = cmDataChar(np); dp+=sizeof(char); break;
|
2347
|
2502
|
case kUShortDtId: *((unsigned short*)dp) = cmDataUShort(np); dp+=sizeof(unsigned short); break;
|
|
@@ -2653,7 +2808,13 @@ cmDtRC_t _cmDataParserOpenPair( cmDataParserCtx_t* c )
|
2653
|
2808
|
if( cmDataNewNull(NULL,0,&nnp) != kOkDtRC )
|
2654
|
2809
|
return rc;
|
2655
|
2810
|
|
2656
|
|
- cmData_t* pnp = cmDataPairAllocLabelN( c->cnp, cmLexTokenText(c->p->lexH), cmLexTokenCharCount(c->p->lexH), nnp );
|
|
2811
|
+ cmData_t* pnp = NULL;
|
|
2812
|
+
|
|
2813
|
+ if((rc = cmDataPairAllocLabelN( c->cnp, cmLexTokenText(c->p->lexH), cmLexTokenCharCount(c->p->lexH), nnp, &pnp )) != kOkDtRC )
|
|
2814
|
+ {
|
|
2815
|
+ cmDataFree(nnp);
|
|
2816
|
+ return rc;
|
|
2817
|
+ }
|
2657
|
2818
|
|
2658
|
2819
|
// store the current node
|
2659
|
2820
|
if((rc = _cmDpPushStack(c,c->cnp)) != kOkDtRC )
|
|
@@ -3050,6 +3211,7 @@ void _cmDataPrint( const cmData_t* p, cmRpt_t* rpt, unsigned indent )
|
3050
|
3211
|
switch(p->tid)
|
3051
|
3212
|
{
|
3052
|
3213
|
case kNullDtId: cmRptPrintf(rpt,"<null>"); break;
|
|
3214
|
+ case kBoolDtId: cmRptPrintf(rpt,"%i", cmDtBool(p)); break;
|
3053
|
3215
|
case kUCharDtId: cmRptPrintf(rpt,"%c ",cmDtUChar(p)); break;
|
3054
|
3216
|
case kCharDtId: cmRptPrintf(rpt,"%c ",cmDtChar(p)); break;
|
3055
|
3217
|
case kUShortDtId: cmRptPrintf(rpt,"%i ",cmDtUShort(p)); break;
|
|
@@ -3070,6 +3232,7 @@ void _cmDataPrint( const cmData_t* p, cmRpt_t* rpt, unsigned indent )
|
3070
|
3232
|
{
|
3071
|
3233
|
switch(p->tid)
|
3072
|
3234
|
{
|
|
3235
|
+ case kBoolDtId: parr(rpt,"%i ", cmDtBoolArray(p), p->cnt ); break;
|
3073
|
3236
|
case kUCharDtId: parr(rpt,"%c ", cmDtCharArray(p), p->cnt ); break;
|
3074
|
3237
|
case kCharDtId: parr(rpt,"%c ", cmDtCharArray(p), p->cnt ); break;
|
3075
|
3238
|
case kUShortDtId: parr(rpt,"%i ", cmDtUShortArray(p), p->cnt ); break;
|
|
@@ -3182,30 +3345,31 @@ void cmDataTest( cmCtx_t* ctx )
|
3182
|
3345
|
|
3183
|
3346
|
float farr[] = { 1.23, 45.6, 7.89 };
|
3184
|
3347
|
|
3185
|
|
- cmDataParserTest(ctx);
|
3186
|
|
- return;
|
|
3348
|
+ if( cmDataParserTest(ctx) != kOkDtRC )
|
|
3349
|
+ return;
|
3187
|
3350
|
|
3188
|
|
- cmData_t* d0 = cmDataRecdAllocLabelA(NULL,
|
3189
|
|
- "name",kScalarDtId, kStrDtId,"This is a string.",
|
3190
|
|
- "id", kScalarDtId, kUIntDtId, 21,
|
3191
|
|
- "real",kScalarDtId, kFloatDtId, 1.23,
|
3192
|
|
- "arr", kArrayDtId, kFloatDtId, farr, 3,
|
|
3351
|
+ cmData_t* d0 = cmDataRecdAllocLabelA(NULL,&ctx->err,0,
|
|
3352
|
+ "name", kStrDtId,"This is a string.",
|
|
3353
|
+ "id", kUIntDtId, 21,
|
|
3354
|
+ "real",kFloatDtId, 1.23,
|
|
3355
|
+ "arr", kArrayDtId | kFloatDtId, farr, 3,
|
3193
|
3356
|
NULL);
|
3194
|
3357
|
|
3195
|
|
- cmDataPrint(d0,&ctx->rpt);
|
3196
|
|
- cmDataFree(d0);
|
3197
|
|
-
|
3198
|
|
- cmData_t* d1 = NULL;
|
3199
|
|
- cmDataListAllocA(NULL,&d1,
|
3200
|
|
- kScalarDtId, kUIntDtId, 53,
|
3201
|
|
- kScalarDtId, kStrDtId, "Blah blah",
|
3202
|
|
- kArrayDtId, kFloatDtId, farr, 3,
|
|
3358
|
+ //cmDataPrint(d0,&ctx->rpt);
|
|
3359
|
+
|
|
3360
|
+
|
|
3361
|
+ cmData_t* d1 = NULL;
|
|
3362
|
+ cmDataListAllocA(NULL,&ctx->err,0,&d1,
|
|
3363
|
+ kUIntDtId, 53,
|
|
3364
|
+ kStrDtId, "Blah blah",
|
|
3365
|
+ kArrayDtId | kFloatDtId, farr, 3,
|
|
3366
|
+ kRecordDtId, d0,
|
3203
|
3367
|
kInvalidCntDtId );
|
3204
|
3368
|
|
3205
|
3369
|
|
3206
|
3370
|
cmDataPrint(d1,&ctx->rpt);
|
3207
|
3371
|
cmDataFree(d1);
|
3208
|
|
-
|
|
3372
|
+
|
3209
|
3373
|
|
3210
|
3374
|
|
3211
|
3375
|
cmRptPrintf(&ctx->rpt,"Done!.\n");
|