|
@@ -1,17 +1,28 @@
|
|
1
|
+#include "cmGlobal.h"
|
|
2
|
+#include "cmRpt.h"
|
|
3
|
+#include "cmErr.h"
|
|
4
|
+#include "cmCtx.h"
|
1
|
5
|
#include "cmData.h"
|
2
|
|
-
|
|
6
|
+#include "cmMem.h"
|
|
7
|
+#include "cmMallocDebug.h"
|
3
|
8
|
|
4
|
9
|
cmDtRC_t _cmDataErrNo = kOkDtRC;
|
5
|
10
|
|
|
11
|
+typedef struct
|
|
12
|
+{
|
|
13
|
+ cmDataFmtId_t tid;
|
|
14
|
+ unsigned cnt;
|
|
15
|
+} cmDataSerialHdr_t;
|
|
16
|
+
|
6
|
17
|
void _cmDataFreeArray( cmData_t* p )
|
7
|
18
|
{
|
8
|
19
|
if(cmIsFlag(p->flags,kDynPtrDtFl))
|
9
|
20
|
{
|
10
|
|
- cmMemFree(p->vp);
|
11
|
|
- p->vp = NULL;
|
12
|
|
- p->flags = cmClrFlag(p->flags,kDynPtrFl);
|
|
21
|
+ cmMemFree(p->u.vp);
|
|
22
|
+ p->u.vp = NULL;
|
|
23
|
+ p->flags = cmClrFlag(p->flags,kDynPtrDtFl);
|
13
|
24
|
}
|
14
|
|
- p->tid = cmInvalidDtId;
|
|
25
|
+ p->tid = kInvalidDtId;
|
15
|
26
|
p->cnt = 0;
|
16
|
27
|
}
|
17
|
28
|
|
|
@@ -22,9 +33,10 @@ void _cmDataFree( cmData_t* p )
|
22
|
33
|
cmMemFree(p);
|
23
|
34
|
}
|
24
|
35
|
|
25
|
|
-unsigned _cmDataByteCount( cmData_t* p )
|
|
36
|
+unsigned _cmDataByteCount( const cmData_t* p )
|
26
|
37
|
{
|
27
|
|
- unsigned n = sizeof(cmDataSerialHdr_t)
|
|
38
|
+ unsigned n = sizeof(cmDataSerialHdr_t);
|
|
39
|
+
|
28
|
40
|
switch( p->tid )
|
29
|
41
|
{
|
30
|
42
|
case kInvalidDtId: return 0;
|
|
@@ -54,38 +66,41 @@ unsigned _cmDataByteCount( cmData_t* p )
|
54
|
66
|
case kFloatPtrDtId: return n + p->cnt * sizeof(float);
|
55
|
67
|
case kDoublePtrDtId: return n + p->cnt * sizeof(double);
|
56
|
68
|
case kVoidPtrDtId: return n + p->cnt * sizeof(char);
|
|
69
|
+
|
|
70
|
+ default:
|
|
71
|
+ return n;
|
57
|
72
|
}
|
58
|
73
|
assert(0);
|
59
|
74
|
return 0;
|
60
|
75
|
}
|
61
|
76
|
|
62
|
|
-char cmDataChar( const cmData_t* p ) { assert(p->tid==kCharDtId); p->u.c; }
|
63
|
|
-unsigned char cmDataUChar( const cmData_t* p ) { assert(p->tid==kUCharDtId); p->u.uc; }
|
64
|
|
-short cmDataShort( const cmData_t* p ) { assert(p->tid==kShortDtId); p->u.s; }
|
65
|
|
-unsigned short cmDataUShort( const cmData_t* p ) { assert(p->tid==kUShortDtId); p->u.us; }
|
66
|
|
-int cmDataInt( const cmData_t* p ) { assert(p->tid==kIntDtId); p->u.i; }
|
67
|
|
-unsigned int cmDataUInt( const cmData_t* p ) { assert(p->tid==kUIntDtId); p->u.ui; }
|
68
|
|
-long cmDataLong( const cmData_t* p ) { assert(p->tid==kLongDtId); p->u.l; }
|
69
|
|
-unsigned long cmDataULong( const cmData_t* p ) { assert(p->tid==kULongDtId); p->u.ul; }
|
70
|
|
-float cmDataFloat( const cmData_t* p ) { assert(p->tid==kFloatDtId); p->u.f; }
|
71
|
|
-double cmDataDouble( const cmData_t* p ) { assert(p->tid==kDoubleDtId); p->u.d; }
|
72
|
|
-cmChar_t* cmDataStr( const cmData_t* p ) { assert(p->tid==kStrDtId); p->u.z; }
|
73
|
|
-const cmChar_t* cmDataConstStr( const cmData_t* p ) { assert(p->tid==kConstStrDtId); p->u.cz; }
|
74
|
|
-void* cmDataVoidPtr( const cmData_t* p ) { assert(p->tid==kVoidDtId); p->u.vp; }
|
75
|
|
-char* cmDataCharPtr( const cmData_t* p ) { assert(p->tid==kCharPtrDtId); p->u.cp; }
|
76
|
|
-unsigned char* cmDataUCharPtr( const cmData_t* p ) { assert(p->tid==kUCharPtrDtId); p->u.ucp; }
|
77
|
|
-short* cmDataShortPtr( const cmData_t* p ) { assert(p->tid==kShortPtrDtId); p->u.sp; }
|
78
|
|
-unsigned short* cmDataUShortPtr( const cmData_t* p ) { assert(p->tid==kUShortPtrDtId); p->u.usp; }
|
79
|
|
-int* cmDataIntPtr( const cmData_t* p ) { assert(p->tid==kIntPtrDtId); p->u.ip; }
|
80
|
|
-unsigned int* cmDataUIntPtr( const cmData_t* p ) { assert(p->tid==kUIntPtrDtId); p->u.uip; }
|
81
|
|
-long* cmDataLongPtr( const cmData_t* p ) { assert(p->tid==kLongPtrDtId); p->u.lp; }
|
82
|
|
-unsigned long* cmDataULongPtr( const cmData_t* p ) { assert(p->tid==kULongPtrDtId); p->u.ulp; }
|
83
|
|
-float* cmDataFloatPtr( const cmData_t* p ) { assert(p->tid==kFloatPtrDtId); p->u.fp; }
|
84
|
|
-double* cmDataDoublePtr( const cmData_t* p ) { assert(p->tid==kDoublePtrDtId); p->u.dp; }
|
|
77
|
+char cmDataChar( const cmData_t* p ) { assert(p->tid==kCharDtId); return p->u.c; }
|
|
78
|
+unsigned char cmDataUChar( const cmData_t* p ) { assert(p->tid==kUCharDtId); return p->u.uc; }
|
|
79
|
+short cmDataShort( const cmData_t* p ) { assert(p->tid==kShortDtId); return p->u.s; }
|
|
80
|
+unsigned short cmDataUShort( const cmData_t* p ) { assert(p->tid==kUShortDtId); return p->u.us; }
|
|
81
|
+int cmDataInt( const cmData_t* p ) { assert(p->tid==kIntDtId); return p->u.i; }
|
|
82
|
+unsigned int cmDataUInt( const cmData_t* p ) { assert(p->tid==kUIntDtId); return p->u.ui; }
|
|
83
|
+long cmDataLong( const cmData_t* p ) { assert(p->tid==kLongDtId); return p->u.l; }
|
|
84
|
+unsigned long cmDataULong( const cmData_t* p ) { assert(p->tid==kULongDtId); return p->u.ul; }
|
|
85
|
+float cmDataFloat( const cmData_t* p ) { assert(p->tid==kFloatDtId); return p->u.f; }
|
|
86
|
+double cmDataDouble( const cmData_t* p ) { assert(p->tid==kDoubleDtId); return p->u.d; }
|
|
87
|
+cmChar_t* cmDataStr( const cmData_t* p ) { assert(p->tid==kStrDtId); return p->u.z; }
|
|
88
|
+const cmChar_t* cmDataConstStr( const cmData_t* p ) { assert(p->tid==kConstStrDtId); return p->u.cz; }
|
|
89
|
+void* cmDataVoidPtr( const cmData_t* p ) { assert(p->tid==kVoidPtrDtId); return p->u.vp; }
|
|
90
|
+char* cmDataCharPtr( const cmData_t* p ) { assert(p->tid==kCharPtrDtId); return p->u.cp; }
|
|
91
|
+unsigned char* cmDataUCharPtr( const cmData_t* p ) { assert(p->tid==kUCharPtrDtId); return p->u.ucp; }
|
|
92
|
+short* cmDataShortPtr( const cmData_t* p ) { assert(p->tid==kShortPtrDtId); return p->u.sp; }
|
|
93
|
+unsigned short* cmDataUShortPtr( const cmData_t* p ) { assert(p->tid==kUShortPtrDtId); return p->u.usp; }
|
|
94
|
+int* cmDataIntPtr( const cmData_t* p ) { assert(p->tid==kIntPtrDtId); return p->u.ip; }
|
|
95
|
+unsigned int* cmDataUIntPtr( const cmData_t* p ) { assert(p->tid==kUIntPtrDtId); return p->u.uip; }
|
|
96
|
+long* cmDataLongPtr( const cmData_t* p ) { assert(p->tid==kLongPtrDtId); return p->u.lp; }
|
|
97
|
+unsigned long* cmDataULongPtr( const cmData_t* p ) { assert(p->tid==kULongPtrDtId); return p->u.ulp; }
|
|
98
|
+float* cmDataFloatPtr( const cmData_t* p ) { assert(p->tid==kFloatPtrDtId); return p->u.fp; }
|
|
99
|
+double* cmDataDoublePtr( const cmData_t* p ) { assert(p->tid==kDoublePtrDtId); return p->u.dp; }
|
85
|
100
|
|
86
|
101
|
unsigned char cmDataGetUChar( const cmData_t* p )
|
87
|
102
|
{
|
88
|
|
- unsigned char v = kInvalidUChar;
|
|
103
|
+ unsigned char v = kInvalidDtUChar;
|
89
|
104
|
|
90
|
105
|
switch( p->tid )
|
91
|
106
|
{
|
|
@@ -107,7 +122,7 @@ unsigned char cmDataGetUChar( const cmData_t* p )
|
107
|
122
|
|
108
|
123
|
char cmDataGetChar( const cmData_t* p )
|
109
|
124
|
{
|
110
|
|
- char v = kInvalidChar;
|
|
125
|
+ char v = kInvalidDtChar;
|
111
|
126
|
|
112
|
127
|
switch( p->tid )
|
113
|
128
|
{
|
|
@@ -129,7 +144,7 @@ char cmDataGetChar( const cmData_t* p )
|
129
|
144
|
|
130
|
145
|
short cmDataGetShort( const cmData_t* p )
|
131
|
146
|
{
|
132
|
|
- short v = kInvalidShort;
|
|
147
|
+ short v = kInvalidDtShort;
|
133
|
148
|
|
134
|
149
|
switch( p->tid )
|
135
|
150
|
{
|
|
@@ -153,7 +168,7 @@ short cmDataGetShort( const cmData_t* p )
|
153
|
168
|
|
154
|
169
|
unsigned short cmDataGetUShort( const cmData_t* p )
|
155
|
170
|
{
|
156
|
|
- unsigned short v = kInvalidUShort;
|
|
171
|
+ unsigned short v = kInvalidDtUShort;
|
157
|
172
|
|
158
|
173
|
switch( p->tid )
|
159
|
174
|
{
|
|
@@ -176,7 +191,7 @@ unsigned short cmDataGetUShort( const cmData_t* p )
|
176
|
191
|
|
177
|
192
|
int cmDataGetInt( const cmData_t* p )
|
178
|
193
|
{
|
179
|
|
- int v = kInvalidInt;
|
|
194
|
+ int v = kInvalidDtInt;
|
180
|
195
|
|
181
|
196
|
switch( p->tid )
|
182
|
197
|
{
|
|
@@ -199,7 +214,7 @@ int cmDataGetInt( const cmData_t* p )
|
199
|
214
|
|
200
|
215
|
unsigned int cmDataGetUInt( const cmData_t* p )
|
201
|
216
|
{
|
202
|
|
- unsigned int v = kInvalidUInt;
|
|
217
|
+ unsigned int v = kInvalidDtUInt;
|
203
|
218
|
|
204
|
219
|
switch( p->tid )
|
205
|
220
|
{
|
|
@@ -222,7 +237,7 @@ unsigned int cmDataGetUInt( const cmData_t* p )
|
222
|
237
|
|
223
|
238
|
long cmDataGetLong( const cmData_t* p )
|
224
|
239
|
{
|
225
|
|
- long v = kInvalidLong;
|
|
240
|
+ long v = kInvalidDtLong;
|
226
|
241
|
|
227
|
242
|
switch( p->tid )
|
228
|
243
|
{
|
|
@@ -245,7 +260,7 @@ long cmDataGetLong( const cmData_t* p )
|
245
|
260
|
|
246
|
261
|
unsigned long cmDataGetULong( const cmData_t* p )
|
247
|
262
|
{
|
248
|
|
- unsigned long v = kInvalidULong;
|
|
263
|
+ unsigned long v = kInvalidDtULong;
|
249
|
264
|
|
250
|
265
|
switch( p->tid )
|
251
|
266
|
{
|
|
@@ -268,7 +283,7 @@ unsigned long cmDataGetULong( const cmData_t* p )
|
268
|
283
|
|
269
|
284
|
float cmDataGetFloat( const cmData_t* p )
|
270
|
285
|
{
|
271
|
|
- float v = kInvalidChar;
|
|
286
|
+ float v = FLT_MAX;
|
272
|
287
|
|
273
|
288
|
switch( p->tid )
|
274
|
289
|
{
|
|
@@ -291,7 +306,7 @@ float cmDataGetFloat( const cmData_t* p )
|
291
|
306
|
|
292
|
307
|
double cmDataGetDouble( const cmData_t* p )
|
293
|
308
|
{
|
294
|
|
- double v = kInvalidChar;
|
|
309
|
+ double v = DBL_MAX;
|
295
|
310
|
|
296
|
311
|
switch( p->tid )
|
297
|
312
|
{
|
|
@@ -325,9 +340,6 @@ const cmChar_t* cmDataGetConstStr( const cmData_t* p )
|
325
|
340
|
}
|
326
|
341
|
|
327
|
342
|
void* cmDataGetVoidPtr( const cmData_t* p )
|
328
|
|
-{ return cmDataVoidPtr(p); }
|
329
|
|
-
|
330
|
|
-void* cmDataGetVoidPtr( const cmData_t* p )
|
331
|
343
|
{
|
332
|
344
|
assert( kMinPtrDtId <= p->tid && p->tid <= kMaxPtrDtId );
|
333
|
345
|
return ( kMinPtrDtId <= p->tid && p->tid <= kMaxPtrDtId ) ? p->u.vp : NULL;
|
|
@@ -388,208 +400,239 @@ double* cmDataGetDoublePtr( const cmData_t* p )
|
388
|
400
|
{ return p->tid == kDoublePtrDtId ? p->u.dp : NULL; }
|
389
|
401
|
|
390
|
402
|
// Set the value of an existing data object.
|
391
|
|
-void cmDataSetChar( cmData_t* p, char v )
|
|
403
|
+cmData_t* cmDataSetChar( cmData_t* p, char v )
|
392
|
404
|
{
|
393
|
405
|
_cmDataFreeArray(p);
|
394
|
406
|
p->tid = kCharDtId;
|
395
|
407
|
p->u.c = v;
|
|
408
|
+ return p;
|
396
|
409
|
}
|
397
|
410
|
|
398
|
|
-void cmDataSetUChar( cmData_t* p, unsigned char v )
|
|
411
|
+cmData_t* cmDataSetUChar( cmData_t* p, unsigned char v )
|
399
|
412
|
{
|
400
|
413
|
_cmDataFreeArray(p);
|
401
|
414
|
p->tid = kUCharDtId;
|
402
|
415
|
p->u.uc = v;
|
|
416
|
+ return p;
|
403
|
417
|
}
|
404
|
418
|
|
405
|
|
-void cmDataSetShort( cmData_t* p, short v )
|
|
419
|
+cmData_t* cmDataSetShort( cmData_t* p, short v )
|
406
|
420
|
{
|
407
|
421
|
_cmDataFreeArray(p);
|
408
|
422
|
p->tid = kShortDtId;
|
409
|
423
|
p->u.s = v;
|
|
424
|
+ return p;
|
410
|
425
|
}
|
411
|
|
-void cmDataSetUShort( cmData_t* p, unsigned short v )
|
|
426
|
+
|
|
427
|
+cmData_t* cmDataSetUShort( cmData_t* p, unsigned short v )
|
412
|
428
|
{
|
413
|
429
|
_cmDataFreeArray(p);
|
414
|
430
|
p->tid = kUShortDtId;
|
415
|
431
|
p->u.us = v;
|
|
432
|
+ return p;
|
416
|
433
|
}
|
417
|
|
-void cmDataSetInt( cmData_t* p, int v )
|
|
434
|
+
|
|
435
|
+cmData_t* cmDataSetInt( cmData_t* p, int v )
|
418
|
436
|
{
|
419
|
437
|
_cmDataFreeArray(p);
|
420
|
438
|
p->tid = kCharDtId;
|
421
|
439
|
p->u.c = v;
|
422
|
440
|
}
|
423
|
|
-void cmDataSetUInt( cmData_t* p, unsigned int v )
|
|
441
|
+
|
|
442
|
+cmData_t* cmDataSetUInt( cmData_t* p, unsigned int v )
|
424
|
443
|
{
|
425
|
444
|
_cmDataFreeArray(p);
|
426
|
445
|
p->tid = kUIntDtId;
|
427
|
446
|
p->u.ui = v;
|
|
447
|
+ return p;
|
428
|
448
|
}
|
429
|
|
-void cmDataSetLong( cmData_t* p, long v )
|
|
449
|
+
|
|
450
|
+cmData_t* cmDataSetLong( cmData_t* p, long v )
|
430
|
451
|
{
|
431
|
452
|
_cmDataFreeArray(p);
|
432
|
453
|
p->tid = kLongDtId;
|
433
|
454
|
p->u.l = v;
|
434
|
455
|
}
|
435
|
|
-void cmDataSetULong( cmData_t* p, unsigned long v )
|
|
456
|
+
|
|
457
|
+cmData_t* cmDataSetULong( cmData_t* p, unsigned long v )
|
436
|
458
|
{
|
437
|
459
|
_cmDataFreeArray(p);
|
438
|
460
|
p->tid = kULongDtId;
|
439
|
461
|
p->u.ul = v;
|
|
462
|
+ return p;
|
440
|
463
|
}
|
441
|
|
-void cmDataSetFloat( cmData_t* p, float v )
|
|
464
|
+
|
|
465
|
+cmData_t* cmDataSetFloat( cmData_t* p, float v )
|
442
|
466
|
{
|
443
|
467
|
_cmDataFreeArray(p);
|
444
|
468
|
p->tid = kFloatDtId;
|
445
|
469
|
p->u.f = v;
|
|
470
|
+ return p;
|
446
|
471
|
}
|
447
|
|
-void cmDataSetDouble( cmData_t* p, double v )
|
|
472
|
+
|
|
473
|
+cmData_t* cmDataSetDouble( cmData_t* p, double v )
|
448
|
474
|
{
|
449
|
475
|
_cmDataFreeArray(p);
|
450
|
476
|
p->tid = kDoubleDtId;
|
451
|
477
|
p->u.d = v;
|
|
478
|
+ return p;
|
452
|
479
|
}
|
453
|
480
|
|
454
|
|
-void cmDataSetStr( cmData_t* p, cmChar_t* s )
|
|
481
|
+cmData_t* cmDataSetStr( cmData_t* p, cmChar_t* s )
|
455
|
482
|
{
|
456
|
483
|
_cmDataFreeArray(p);
|
457
|
484
|
p->tid = kStrDtId;
|
458
|
485
|
p->u.z = s;
|
|
486
|
+ return p;
|
459
|
487
|
}
|
460
|
488
|
|
461
|
|
-void cmDataSetConstStr( cmData_t* p, const cmChar_t* s )
|
|
489
|
+cmData_t* cmDataSetConstStr( cmData_t* p, const cmChar_t* s )
|
462
|
490
|
{
|
463
|
491
|
_cmDataFreeArray(p);
|
464
|
492
|
p->tid = kConstStrDtId;
|
465
|
493
|
p->u.cz = s;
|
|
494
|
+ return p;
|
466
|
495
|
}
|
467
|
496
|
|
468
|
497
|
// Set the value of an existing data object to an external array.
|
469
|
498
|
// The array is not copied.
|
470
|
|
-void cmDataSetVoidPtr( cmData_t* p, void* vp, unsigned cnt )
|
|
499
|
+cmData_t* cmDataSetVoidPtr( cmData_t* p, void* vp, unsigned cnt )
|
471
|
500
|
{
|
472
|
|
- cmDataSetCharPtr(p,(char*),cnt);
|
|
501
|
+ cmDataSetCharPtr(p,(char*)vp,cnt);
|
|
502
|
+ p->tid = kVoidPtrDtId;
|
|
503
|
+ return p;
|
473
|
504
|
}
|
474
|
505
|
|
475
|
|
-void cmDataSetCharPtr( cmData_t* p, char* vp, unsigned cnt )
|
|
506
|
+cmData_t* cmDataSetCharPtr( cmData_t* p, char* vp, unsigned cnt )
|
476
|
507
|
{
|
477
|
508
|
_cmDataFreeArray(p);
|
478
|
509
|
p->tid = kCharPtrDtId;
|
479
|
510
|
p->u.cp = vp;
|
480
|
511
|
p->cnt = cnt;
|
|
512
|
+ return p;
|
481
|
513
|
}
|
482
|
514
|
|
483
|
|
-void cmDataSetUCharPtr( cmData_t* p, unsigned char* vp, unsigned cnt )
|
|
515
|
+cmData_t* cmDataSetUCharPtr( cmData_t* p, unsigned char* vp, unsigned cnt )
|
484
|
516
|
{
|
485
|
517
|
_cmDataFreeArray(p);
|
486
|
518
|
p->tid = kUCharPtrDtId;
|
487
|
519
|
p->u.ucp = vp;
|
488
|
520
|
p->cnt = cnt;
|
|
521
|
+ return p;
|
489
|
522
|
}
|
490
|
523
|
|
491
|
|
-void cmDataSetShortPtr( cmData_t* p, short* vp, unsigned cnt )
|
|
524
|
+cmData_t* cmDataSetShortPtr( cmData_t* p, short* vp, unsigned cnt )
|
492
|
525
|
{
|
493
|
526
|
_cmDataFreeArray(p);
|
494
|
527
|
p->tid = kShortPtrDtId;
|
495
|
528
|
p->u.sp = vp;
|
496
|
529
|
p->cnt = cnt;
|
|
530
|
+ return p;
|
497
|
531
|
}
|
498
|
532
|
|
499
|
|
-void cmDataSetUShortPtr( cmData_t* p, unsigned short* vp, unsigned cnt )
|
|
533
|
+cmData_t* cmDataSetUShortPtr( cmData_t* p, unsigned short* vp, unsigned cnt )
|
500
|
534
|
{
|
501
|
535
|
_cmDataFreeArray(p);
|
502
|
536
|
p->tid = kUShortPtrDtId;
|
503
|
537
|
p->u.usp = vp;
|
504
|
538
|
p->cnt = cnt;
|
|
539
|
+ return p;
|
505
|
540
|
}
|
506
|
541
|
|
507
|
|
-void cmDataSetIntPtr( cmData_t* p, int* vp, unsigned cnt )
|
|
542
|
+cmData_t* cmDataSetIntPtr( cmData_t* p, int* vp, unsigned cnt )
|
508
|
543
|
{
|
509
|
544
|
_cmDataFreeArray(p);
|
510
|
545
|
p->tid = kCharPtrDtId;
|
511
|
|
- p->u.cp = vp;
|
|
546
|
+ p->u.ip = vp;
|
512
|
547
|
p->cnt = cnt;
|
|
548
|
+ return p;
|
513
|
549
|
}
|
514
|
550
|
|
515
|
|
-void cmDataSetUIntPtr( cmData_t* p, unsigned int* vp, unsigned cnt )
|
|
551
|
+cmData_t* cmDataSetUIntPtr( cmData_t* p, unsigned int* vp, unsigned cnt )
|
516
|
552
|
{
|
517
|
553
|
_cmDataFreeArray(p);
|
518
|
554
|
p->tid = kUIntPtrDtId;
|
519
|
555
|
p->u.uip = vp;
|
520
|
556
|
p->cnt = cnt;
|
|
557
|
+ return p;
|
521
|
558
|
}
|
522
|
559
|
|
523
|
|
-void cmDataSetLongPtr( cmData_t* p, long* vp, unsigned cnt )
|
|
560
|
+cmData_t* cmDataSetLongPtr( cmData_t* p, long* vp, unsigned cnt )
|
524
|
561
|
{
|
525
|
562
|
_cmDataFreeArray(p);
|
526
|
563
|
p->tid = kLongPtrDtId;
|
527
|
564
|
p->u.lp = vp;
|
528
|
565
|
p->cnt = cnt;
|
|
566
|
+ return p;
|
529
|
567
|
}
|
530
|
568
|
|
531
|
|
-void cmDataSetULongPtr( cmData_t* p, unsigned long* vp, unsigned cnt )
|
|
569
|
+cmData_t* cmDataSetULongPtr( cmData_t* p, unsigned long* vp, unsigned cnt )
|
532
|
570
|
{
|
533
|
571
|
_cmDataFreeArray(p);
|
534
|
572
|
p->tid = kULongPtrDtId;
|
535
|
573
|
p->u.ulp = vp;
|
536
|
574
|
p->cnt = cnt;
|
|
575
|
+ return p;
|
537
|
576
|
}
|
538
|
577
|
|
539
|
|
-void cmDataSetFloatPtr( cmData_t* p, float* vp, unsigned cnt )
|
|
578
|
+cmData_t* cmDataSetFloatPtr( cmData_t* p, float* vp, unsigned cnt )
|
540
|
579
|
{
|
541
|
580
|
_cmDataFreeArray(p);
|
542
|
581
|
p->tid = kFloatPtrDtId;
|
543
|
582
|
p->u.fp = vp;
|
544
|
583
|
p->cnt = cnt;
|
|
584
|
+ return p;
|
545
|
585
|
}
|
546
|
586
|
|
547
|
|
-void cmDataSetDoublePtr( cmData_t* p, double* vp, unsigned cnt )
|
|
587
|
+cmData_t* cmDataSetDoublePtr( cmData_t* p, double* vp, unsigned cnt )
|
548
|
588
|
{
|
549
|
589
|
_cmDataFreeArray(p);
|
550
|
590
|
p->tid = kDoublePtrDtId;
|
551
|
591
|
p->u.dp = vp;
|
552
|
592
|
p->cnt = cnt;
|
|
593
|
+ return p;
|
553
|
594
|
}
|
554
|
595
|
|
555
|
596
|
// Set the value of an existing array based data object.
|
556
|
597
|
// Allocate the internal array and copy the array into it.
|
557
|
|
-void cmDataSetStrAlloc( cmData_t* p, const cmChar_t* s )
|
|
598
|
+cmData_t* cmDataSetStrAlloc( cmData_t* p, const cmChar_t* s )
|
558
|
599
|
{
|
559
|
600
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
560
|
601
|
cmMemResizeStr(p->u.z,s);
|
561
|
602
|
else
|
562
|
603
|
{
|
563
|
604
|
_cmDataFreeArray(p);
|
564
|
|
- cmMemAllocStr(p->u.z,s);
|
|
605
|
+ p->u.z = cmMemAllocStr(s);
|
565
|
606
|
}
|
566
|
607
|
p->tid = kStrDtId;
|
567
|
608
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
|
609
|
+ return p;
|
568
|
610
|
}
|
569
|
611
|
|
570
|
|
-void cmDataSetConstStrAlloc( cmData_t* p, const cmChar_t* s )
|
571
|
|
-{ cmDataSetStrAlloc(p,s); }
|
|
612
|
+cmData_t* cmDataSetConstStrAlloc( cmData_t* p, const cmChar_t* s )
|
|
613
|
+{ return cmDataSetStrAlloc(p,s); }
|
572
|
614
|
|
573
|
|
-void cmDataSetVoidAllocPtr( cmData_t* p, const void* vp, unsigned cnt )
|
574
|
|
-{ cmDataSetCharAllocPtr(p,(char*)vp,cnt); }
|
|
615
|
+cmData_t* cmDataSetVoidAllocPtr( cmData_t* p, const void* vp, unsigned cnt )
|
|
616
|
+{ return cmDataSetCharAllocPtr(p,(char*)vp,cnt); }
|
575
|
617
|
|
576
|
|
-void cmDataSetCharAllocPtr( cmData_t* p, const char* vp, unsigned cnt )
|
|
618
|
+cmData_t* cmDataSetCharAllocPtr( cmData_t* p, const char* vp, unsigned cnt )
|
577
|
619
|
{
|
578
|
620
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
579
|
|
- cmMemResize(char, p->u.ucp, cnt );
|
|
621
|
+ p->u.cp = cmMemResize(char, p->u.cp, cnt );
|
580
|
622
|
else
|
581
|
623
|
{
|
582
|
624
|
_cmDataFreeArray(p);
|
583
|
|
- p->u.ucp = cmMemAlloc(char, cnt );
|
|
625
|
+ p->u.cp = cmMemAlloc(char, cnt );
|
584
|
626
|
}
|
585
|
627
|
p->tid = kCharPtrDtId;
|
586
|
628
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
|
629
|
+ return p;
|
587
|
630
|
}
|
588
|
631
|
|
589
|
|
-void cmDataSetUCharAllocPtr( cmData_t* p, const unsigned char* vp, unsigned cnt )
|
|
632
|
+cmData_t* cmDataSetUCharAllocPtr( cmData_t* p, const unsigned char* vp, unsigned cnt )
|
590
|
633
|
{
|
591
|
634
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
592
|
|
- cmMemResize(unsigned char, p->u.ucp, cnt );
|
|
635
|
+ p->u.ucp = cmMemResize(unsigned char, p->u.ucp, cnt );
|
593
|
636
|
else
|
594
|
637
|
{
|
595
|
638
|
_cmDataFreeArray(p);
|
|
@@ -597,119 +640,127 @@ void cmDataSetUCharAllocPtr( cmData_t* p, const unsigned char* vp, unsigned cn
|
597
|
640
|
}
|
598
|
641
|
p->tid = kUCharPtrDtId;
|
599
|
642
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
|
643
|
+ return p;
|
600
|
644
|
}
|
601
|
645
|
|
602
|
|
-void cmDataSetShortAllocPtr( cmData_t* p, const short* vp, unsigned cnt )
|
|
646
|
+cmData_t* cmDataSetShortAllocPtr( cmData_t* p, const short* vp, unsigned cnt )
|
603
|
647
|
{
|
604
|
648
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
605
|
|
- cmMemResize(short, p->u.ucp, cnt );
|
|
649
|
+ p->u.sp = cmMemResize(short, p->u.sp, cnt );
|
606
|
650
|
else
|
607
|
651
|
{
|
608
|
652
|
_cmDataFreeArray(p);
|
609
|
|
- p->u.ucp = cmMemAlloc(short, cnt );
|
|
653
|
+ p->u.sp = cmMemAlloc(short, cnt );
|
610
|
654
|
}
|
611
|
655
|
p->tid = kShortPtrDtId;
|
612
|
656
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
|
657
|
+ return p;
|
613
|
658
|
}
|
614
|
659
|
|
615
|
|
-void cmDataSetUShortAllocPtr( cmData_t* p, const unsigned short* vp, unsigned cnt )
|
|
660
|
+cmData_t* cmDataSetUShortAllocPtr( cmData_t* p, const unsigned short* vp, unsigned cnt )
|
616
|
661
|
{
|
617
|
662
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
618
|
|
- cmMemResize(unsigned short, p->u.ucp, cnt );
|
|
663
|
+ p->u.usp = cmMemResize(unsigned short, p->u.usp, cnt );
|
619
|
664
|
else
|
620
|
665
|
{
|
621
|
666
|
_cmDataFreeArray(p);
|
622
|
|
- p->u.ucp = cmMemAlloc(unsigned short, cnt );
|
|
667
|
+ p->u.usp = cmMemAlloc(unsigned short, cnt );
|
623
|
668
|
}
|
624
|
669
|
p->tid = kUShortPtrDtId;
|
625
|
670
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
626
|
671
|
}
|
627
|
672
|
|
628
|
|
-void cmDataSetIntAllocPtr( cmData_t* p, const int* vp, unsigned cnt )
|
|
673
|
+cmData_t* cmDataSetIntAllocPtr( cmData_t* p, const int* vp, unsigned cnt )
|
629
|
674
|
{
|
630
|
675
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
631
|
|
- cmMemResize(int, p->u.ucp, cnt );
|
|
676
|
+ p->u.ip = cmMemResize(int, p->u.ip, cnt );
|
632
|
677
|
else
|
633
|
678
|
{
|
634
|
679
|
_cmDataFreeArray(p);
|
635
|
|
- p->u.ucp = cmMemAlloc(int, cnt );
|
|
680
|
+ p->u.ip = cmMemAlloc(int, cnt );
|
636
|
681
|
}
|
637
|
682
|
p->tid = kIntPtrDtId;
|
638
|
683
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
|
684
|
+ return p;
|
639
|
685
|
}
|
640
|
686
|
|
641
|
|
-void cmDataSetUIntAllocPtr( cmData_t* p, const unsigned int* vp, unsigned cnt )
|
|
687
|
+cmData_t* cmDataSetUIntAllocPtr( cmData_t* p, const unsigned int* vp, unsigned cnt )
|
642
|
688
|
{
|
643
|
689
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
644
|
|
- cmMemResize(unsigned int, p->u.ucp, cnt );
|
|
690
|
+ p->u.uip = cmMemResize(unsigned int, p->u.uip, cnt );
|
645
|
691
|
else
|
646
|
692
|
{
|
647
|
693
|
_cmDataFreeArray(p);
|
648
|
|
- p->u.ucp = cmMemAlloc(unsigned int, cnt );
|
|
694
|
+ p->u.uip = cmMemAlloc(unsigned int, cnt );
|
649
|
695
|
}
|
650
|
696
|
p->tid = kUIntPtrDtId;
|
651
|
697
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
|
698
|
+ return p;
|
652
|
699
|
}
|
653
|
700
|
|
654
|
701
|
|
655
|
|
-void cmDataSetLongAllocPtr( cmData_t* p, const long* vp, unsigned cnt )
|
|
702
|
+cmData_t* cmDataSetLongAllocPtr( cmData_t* p, const long* vp, unsigned cnt )
|
656
|
703
|
{
|
657
|
704
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
658
|
|
- cmMemResize(long, p->u.ucp, cnt );
|
|
705
|
+ p->u.lp = cmMemResize(long, p->u.lp, cnt );
|
659
|
706
|
else
|
660
|
707
|
{
|
661
|
708
|
_cmDataFreeArray(p);
|
662
|
|
- p->u.ucp = cmMemAlloc(long, cnt );
|
|
709
|
+ p->u.lp = cmMemAlloc(long, cnt );
|
663
|
710
|
}
|
664
|
711
|
p->tid = kLongPtrDtId;
|
665
|
712
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
|
713
|
+ return p;
|
666
|
714
|
}
|
667
|
715
|
|
668
|
716
|
|
669
|
|
-void cmDataSetULongAllocPtr( cmData_t* p, const unsigned long* vp, unsigned cnt )
|
|
717
|
+cmData_t* cmDataSetULongAllocPtr( cmData_t* p, const unsigned long* vp, unsigned cnt )
|
670
|
718
|
{
|
671
|
719
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
672
|
|
- cmMemResize(unsigned long, p->u.ucp, cnt );
|
|
720
|
+ p->u.ulp = cmMemResize(unsigned long, p->u.ulp, cnt );
|
673
|
721
|
else
|
674
|
722
|
{
|
675
|
723
|
_cmDataFreeArray(p);
|
676
|
|
- p->u.ucp = cmMemAlloc(unsigned long, cnt );
|
|
724
|
+ p->u.ulp = cmMemAlloc(unsigned long, cnt );
|
677
|
725
|
}
|
678
|
726
|
p->tid = kULongPtrDtId;
|
679
|
727
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
|
728
|
+ return p;
|
680
|
729
|
}
|
681
|
730
|
|
682
|
731
|
|
683
|
|
-void cmDataSetFloatAllocPtr( cmData_t* p, const float* vp, unsigned cnt )
|
|
732
|
+cmData_t* cmDataSetFloatAllocPtr( cmData_t* p, const float* vp, unsigned cnt )
|
684
|
733
|
{
|
685
|
734
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
686
|
|
- cmMemResize(float, p->u.ucp, cnt );
|
|
735
|
+ p->u.fp = cmMemResize(float, p->u.fp, cnt );
|
687
|
736
|
else
|
688
|
737
|
{
|
689
|
738
|
_cmDataFreeArray(p);
|
690
|
|
- p->u.ucp = cmMemAlloc(float, cnt );
|
|
739
|
+ p->u.fp = cmMemAlloc(float, cnt );
|
691
|
740
|
}
|
692
|
741
|
p->tid = kFloatPtrDtId;
|
693
|
742
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
|
743
|
+ return p;
|
694
|
744
|
}
|
695
|
745
|
|
696
|
746
|
|
697
|
|
-void cmDataSetDoubleAllocPtr( cmData_t* p, const double* vp, unsigned cnt )
|
|
747
|
+cmData_t* cmDataSetDoubleAllocPtr( cmData_t* p, const double* vp, unsigned cnt )
|
698
|
748
|
{
|
699
|
749
|
if( cmIsFlag(p->flags,kDynPtrDtFl) )
|
700
|
|
- cmMemResize(double, p->u.ucp, cnt );
|
|
750
|
+ p->u.dp = cmMemResize(double, p->u.dp, cnt );
|
701
|
751
|
else
|
702
|
752
|
{
|
703
|
753
|
_cmDataFreeArray(p);
|
704
|
|
- p->u.ucp = cmMemAlloc(double, cnt );
|
|
754
|
+ p->u.dp = cmMemAlloc(double, cnt );
|
705
|
755
|
}
|
706
|
756
|
p->tid = kDoublePtrDtId;
|
707
|
757
|
p->flags = cmSetFlag(p->flags,kDynPtrDtFl);
|
|
758
|
+ return p;
|
708
|
759
|
}
|
709
|
760
|
|
710
|
761
|
|
711
|
762
|
|
712
|
|
- // Dynamically allocate a data object and set it's value.
|
|
763
|
+// Dynamically allocate a data object and set it's value.
|
713
|
764
|
cmData_t* cmDataAllocChar( char v )
|
714
|
765
|
{
|
715
|
766
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
|
@@ -784,93 +835,94 @@ cmData_t* cmDataAllocDouble( double v )
|
784
|
835
|
cmData_t* cmDataAllocStr( cmChar_t* str )
|
785
|
836
|
{
|
786
|
837
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
787
|
|
- cmDataSetStr(p,v);
|
|
838
|
+ cmDataSetStr(p,str);
|
788
|
839
|
return p;
|
789
|
840
|
}
|
790
|
841
|
|
791
|
842
|
cmData_t* cmDataAllocConstStr( const cmChar_t* str )
|
792
|
843
|
{
|
793
|
844
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
794
|
|
- cmDataSetConstStr(p,v);
|
|
845
|
+ cmDataSetConstStr(p,str);
|
795
|
846
|
return p;
|
796
|
847
|
}
|
797
|
848
|
|
798
|
849
|
// Dynamically allocate a data object and set its array value to an external
|
799
|
850
|
// array. The data is not copied.
|
800
|
|
-cmData_t* cmDataAllocVoidPtr( const void* v, unsigned cnt );
|
|
851
|
+cmData_t* cmDataAllocVoidPtr( const void* v, unsigned cnt )
|
801
|
852
|
{
|
802
|
853
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
803
|
|
- cmDataSetCharPtr(p,(const char*)v,cnt);
|
|
854
|
+ cmDataSetCharPtr(p,(char*)v,cnt);
|
|
855
|
+ p->tid = kVoidPtrDtId;
|
804
|
856
|
return p;
|
805
|
857
|
}
|
806
|
858
|
|
807
|
859
|
cmData_t* cmDataAllocCharPtr( const char* v, unsigned cnt )
|
808
|
860
|
{
|
809
|
861
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
810
|
|
- cmDataSetCharPtr(p,v,cnt);
|
|
862
|
+ cmDataSetCharPtr(p,(char*)v,cnt);
|
811
|
863
|
return p;
|
812
|
864
|
}
|
813
|
865
|
|
814
|
|
- cmData_t* cmDataAllocUCharPtr( const unsigned char* v, unsigned cnt )
|
|
866
|
+cmData_t* cmDataAllocUCharPtr( const unsigned char* v, unsigned cnt )
|
815
|
867
|
{
|
816
|
868
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
817
|
|
- cmDataSetUCharPtr(p,v,cnt);
|
|
869
|
+ cmDataSetUCharPtr(p,(unsigned char*)v,cnt);
|
818
|
870
|
return p;
|
819
|
871
|
}
|
820
|
872
|
|
821
|
|
- cmData_t* cmDataAllocShortPtr( const short* v, unsigned cnt )
|
|
873
|
+cmData_t* cmDataAllocShortPtr( const short* v, unsigned cnt )
|
822
|
874
|
{
|
823
|
875
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
824
|
|
- cmDataSetShortPtr(p,v,cnt);
|
|
876
|
+ cmDataSetShortPtr(p,(short*)v,cnt);
|
825
|
877
|
return p;
|
826
|
878
|
}
|
827
|
879
|
|
828
|
|
- cmData_t* cmDataAllocUShortPtr( const unsigned short* v, unsigned cnt )
|
|
880
|
+cmData_t* cmDataAllocUShortPtr( const unsigned short* v, unsigned cnt )
|
829
|
881
|
{
|
830
|
882
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
831
|
|
- cmDataSetUShortPtr(p,v,cnt);
|
|
883
|
+ cmDataSetUShortPtr(p,(unsigned short*)v,cnt);
|
832
|
884
|
return p;
|
833
|
885
|
}
|
834
|
886
|
|
835
|
|
- cmData_t* cmDataAllocIntPtr( const int* v, unsigned cnt )
|
|
887
|
+cmData_t* cmDataAllocIntPtr( const int* v, unsigned cnt )
|
836
|
888
|
{
|
837
|
889
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
838
|
|
- cmDataSetIntPtr(p,v,cnt);
|
|
890
|
+ cmDataSetIntPtr(p,(int*)v,cnt);
|
839
|
891
|
return p;
|
840
|
892
|
}
|
841
|
893
|
|
842
|
|
- cmData_t* cmDataAllocUIntPtr( const unsigned int* v, unsigned cnt )
|
|
894
|
+cmData_t* cmDataAllocUIntPtr( const unsigned int* v, unsigned cnt )
|
843
|
895
|
{
|
844
|
896
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
845
|
|
- cmDataSetUIntPtr(p,v,cnt);
|
|
897
|
+ cmDataSetUIntPtr(p,(unsigned int*)v,cnt);
|
846
|
898
|
return p;
|
847
|
899
|
}
|
848
|
900
|
|
849
|
|
- cmData_t* cmDataAllocLongPtr( const long* v, unsigned cnt )
|
|
901
|
+cmData_t* cmDataAllocLongPtr( const long* v, unsigned cnt )
|
850
|
902
|
{
|
851
|
903
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
852
|
|
- cmDataSetLongPtr(p,v,cnt);
|
|
904
|
+ cmDataSetLongPtr(p,(long*)v,cnt);
|
853
|
905
|
return p;
|
854
|
906
|
}
|
855
|
907
|
|
856
|
|
- cmData_t* cmDataAllocULongPtr( const unsigned long* v, unsigned cnt )
|
|
908
|
+cmData_t* cmDataAllocULongPtr( const unsigned long* v, unsigned cnt )
|
857
|
909
|
{
|
858
|
910
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
859
|
|
- cmDataSetULongPtr(p,v,cnt);
|
|
911
|
+ cmDataSetULongPtr(p,(unsigned long*)v,cnt);
|
860
|
912
|
return p;
|
861
|
913
|
}
|
862
|
914
|
|
863
|
|
- cmData_t* cmDataAllocFloatPtr( const float* v, unsigned cnt )
|
|
915
|
+cmData_t* cmDataAllocFloatPtr( const float* v, unsigned cnt )
|
864
|
916
|
{
|
865
|
917
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
866
|
|
- cmDataSetFloatPtr(p,v,cnt);
|
|
918
|
+ cmDataSetFloatPtr(p,(float*)v,cnt);
|
867
|
919
|
return p;
|
868
|
920
|
}
|
869
|
921
|
|
870
|
|
- cmData_t* cmDataAllocDoublePtr( const double* v, unsigned cnt )
|
|
922
|
+cmData_t* cmDataAllocDoublePtr( const double* v, unsigned cnt )
|
871
|
923
|
{
|
872
|
924
|
cmData_t* p = cmMemAllocZ(cmData_t,1);
|
873
|
|
- cmDataSetDoublePtr(p,v,cnt);
|
|
925
|
+ cmDataSetDoublePtr(p,(double*)v,cnt);
|
874
|
926
|
return p;
|
875
|
927
|
}
|
876
|
928
|
|
|
@@ -956,7 +1008,7 @@ cmData_t* cmDataDoubleAllocPtr( const double* v, unsigned cnt )
|
956
|
1008
|
}
|
957
|
1009
|
|
958
|
1010
|
|
959
|
|
-void cmDataFree( cmData_t* p )
|
|
1011
|
+void cmDataFree( cmData_t* p )
|
960
|
1012
|
{
|
961
|
1013
|
_cmDataFree(p);
|
962
|
1014
|
}
|
|
@@ -969,7 +1021,7 @@ unsigned cmDataSerializeByteCount( const cmData_t* p )
|
969
|
1021
|
|
970
|
1022
|
// if this data type has a child then calculate it's size
|
971
|
1023
|
if( kMinStructDtId <= p->tid && p->tid <= kMaxStructDtId && p->u.child != NULL )
|
972
|
|
- bn = cmDataSerializeByteCount(p->child);
|
|
1024
|
+ bn = cmDataSerializeByteCount(p->u.child);
|
973
|
1025
|
|
974
|
1026
|
// if this data type has siblings get their type
|
975
|
1027
|
cmData_t* dp = p->u.child;
|
|
@@ -980,11 +1032,6 @@ unsigned cmDataSerializeByteCount( const cmData_t* p )
|
980
|
1032
|
return _cmDataByteCount(p) + bn;
|
981
|
1033
|
}
|
982
|
1034
|
|
983
|
|
-typedef struct
|
984
|
|
-{
|
985
|
|
- cmDataFmtId_t tid;
|
986
|
|
- unsigned cnt;
|
987
|
|
-} cmDataSerialHdr_t;
|
988
|
1035
|
|
989
|
1036
|
|
990
|
1037
|
cmDtRC_t cmDataSerialize( const cmData_t* p, void* buf, unsigned bufByteCnt )
|