gwenhywfar 5.12.0
tm_member.c
Go to the documentation of this file.
1/***************************************************************************
2 begin : Thu Jul 02 2009
3 copyright : (C) 2018 by Martin Preuss
4 email : martin@libchipcard.de
5
6 ***************************************************************************
7 * Please see toplevel file COPYING for license details *
8 ***************************************************************************/
9
10#ifdef HAVE_CONFIG_H
11# include <config.h>
12#endif
13
14
15#include "tm_member_p.h"
16#include "tm_util.h"
17
18
19#include <gwenhywfar/debug.h>
20#include <gwenhywfar/misc.h>
21
22#include <assert.h>
23
24
25
26GWEN_LIST_FUNCTIONS(TYPEMAKER2_MEMBER, Typemaker2_Member)
27
28
29
30
32{
34
36 tm->refCount=1;
38
39 tm->codeDefs=Typemaker2_Code_List_new();
40
41 return tm;
42}
43
44
45
47{
48 if (tm) {
49 assert(tm->refCount);
50 if (tm->refCount==1) {
52 Typemaker2_Code_List_free(tm->codeDefs);
53 free(tm->name);
54 free(tm->typeName);
55 free(tm->elementName);
56 free(tm->descr);
57 free(tm->fieldId);
58 free(tm->defaultValue);
59 free(tm->presetValue);
60 free(tm->aedb_type);
61 free(tm->enumId);
62 free(tm->defineId);
63 tm->refCount=0;
65 }
66 else {
67 tm->refCount--;
68 }
69 }
70}
71
72
73
75{
76 assert(tm);
77 assert(tm->refCount);
78 tm->refCount++;
79}
80
81
82
84{
85 assert(tm);
86 assert(tm->refCount);
87 return tm->name;
88}
89
90
91
93{
94 assert(tm);
95 assert(tm->refCount);
96 free(tm->name);
97 if (s && *s)
98 tm->name=strdup(s);
99 else
100 tm->name=NULL;
101}
102
103
104
106{
107 assert(tm);
108 assert(tm->refCount);
109 return tm->typeName;
110}
111
112
113
115{
116 assert(tm);
117 assert(tm->refCount);
118 free(tm->typeName);
119 if (s && *s)
120 tm->typeName=strdup(s);
121 else
122 tm->typeName=NULL;
123}
124
125
126
128{
129 assert(tm);
130 assert(tm->refCount);
131 return tm->elementName;
132}
133
134
135
137{
138 assert(tm);
139 assert(tm->refCount);
140 free(tm->elementName);
141 if (s && *s)
142 tm->elementName=strdup(s);
143 else
144 tm->elementName=NULL;
145}
146
147
148
150{
151 assert(tm);
152 assert(tm->refCount);
153 return tm->descr;
154}
155
156
157
159{
160 assert(tm);
161 assert(tm->refCount);
162 free(tm->descr);
163 if (s && *s)
164 tm->descr=strdup(s);
165 else
166 tm->descr=NULL;
167}
168
169
170
172{
173 assert(tm);
174 assert(tm->refCount);
175 return tm->fieldId;
176}
177
178
179
181{
182 assert(tm);
183 assert(tm->refCount);
184 free(tm->fieldId);
185 if (s && *s)
186 tm->fieldId=strdup(s);
187 else
188 tm->fieldId=NULL;
189}
190
191
192
194{
195 assert(tm);
196 assert(tm->refCount);
197 return tm->enumId;
198}
199
200
201
203{
204 assert(tm);
205 assert(tm->refCount);
206 free(tm->enumId);
207 if (s && *s)
208 tm->enumId=strdup(s);
209 else
210 tm->enumId=NULL;
211}
212
213
214
216{
217 assert(tm);
218 assert(tm->refCount);
219 return tm->defineId;
220}
221
222
223
225{
226 assert(tm);
227 assert(tm->refCount);
228 free(tm->defineId);
229 if (s && *s)
230 tm->defineId=strdup(s);
231 else
232 tm->defineId=NULL;
233}
234
235
236
238{
239 assert(tm);
240 assert(tm->refCount);
241
242 if (tm->flags==0 && tm->typePtr)
243 return Typemaker2_Type_GetFlags(tm->typePtr);
244
245 return tm->flags;
246}
247
248
249
251{
252 assert(tm);
253 assert(tm->refCount);
254 tm->flags=i;
255}
256
257
258
260{
261 assert(tm);
262 assert(tm->refCount);
263
264 if (tm->setFlags==0 && tm->typePtr)
265 return Typemaker2_Type_GetSetFlags(tm->typePtr);
266
267 return tm->setFlags;
268}
269
270
271
273{
274 assert(tm);
275 assert(tm->refCount);
276 tm->setFlags=i;
277}
278
279
280
282{
283 assert(tm);
284 assert(tm->refCount);
285
286 if (tm->getFlags==0 && tm->typePtr)
287 return Typemaker2_Type_GetGetFlags(tm->typePtr);
288
289 return tm->getFlags;
290}
291
292
293
295{
296 assert(tm);
297 assert(tm->refCount);
298 tm->getFlags=i;
299}
300
301
302
304{
305 assert(tm);
306 assert(tm->refCount);
307
308 if (tm->dupFlags==0 && tm->typePtr)
309 return Typemaker2_Type_GetDupFlags(tm->typePtr);
310
311 return tm->dupFlags;
312}
313
314
315
317{
318 assert(tm);
319 assert(tm->refCount);
320 tm->dupFlags=i;
321}
322
323
324
326{
327 assert(tm);
328 assert(tm->refCount);
329
330 if (tm->copyFlags==0 && tm->typePtr)
331 return Typemaker2_Type_GetCopyFlags(tm->typePtr);
332
333 return tm->copyFlags;
334}
335
336
337
339{
340 assert(tm);
341 assert(tm->refCount);
342 tm->copyFlags=i;
343}
344
345
346
348{
349 assert(tm);
350 assert(tm->refCount);
351
352 if (tm->access==TypeMaker2_Access_Unknown && tm->typePtr)
353 return Typemaker2_Type_GetAccess(tm->typePtr);
354
355 return tm->access;
356}
357
358
359
361{
362 assert(tm);
363 assert(tm->refCount);
364 tm->access=i;
365}
366
367
368
370{
371 assert(tm);
372 assert(tm->refCount);
373
374 return tm->maxLen;
375}
376
377
378
380{
381 assert(tm);
382 assert(tm->refCount);
383 tm->maxLen=i;
384}
385
386
387
389{
390 assert(tm);
391 assert(tm->refCount);
392
393 if (tm->defaultValue==NULL && tm->typePtr)
394 return Typemaker2_Type_GetDefaultValue(tm->typePtr);
395 return tm->defaultValue;
396}
397
398
399
401{
402 assert(tm);
403 assert(tm->refCount);
404
405 free(tm->defaultValue);
406 if (s)
407 tm->defaultValue=strdup(s);
408 else
409 tm->defaultValue=NULL;
410}
411
412
413
415{
416 assert(tm);
417 assert(tm->refCount);
418
419 if (tm->presetValue==NULL && tm->typePtr)
420 return Typemaker2_Type_GetPresetValue(tm->typePtr);
421 return tm->presetValue;
422}
423
424
425
427{
428 assert(tm);
429 assert(tm->refCount);
430
431 free(tm->presetValue);
432 if (s)
433 tm->presetValue=strdup(s);
434 else
435 tm->presetValue=NULL;
436}
437
438
439
441{
442 assert(tm);
443 assert(tm->refCount);
444
445 if (tm->aedb_type==NULL && tm->typePtr)
446 return Typemaker2_Type_GetAqDbType(tm->typePtr);
447
448 return tm->aedb_type;
449}
450
451
452
454{
455 assert(tm);
456 assert(tm->refCount);
457
458 free(tm->aedb_type);
459 if (s)
460 tm->aedb_type=strdup(s);
461 else
462 tm->aedb_type=NULL;
463}
464
465
466
468{
469 assert(tm);
470 assert(tm->refCount);
471 return tm->typePtr;
472}
473
474
475
477{
478 assert(tm);
479 assert(tm->refCount);
480 tm->typePtr=ty;
481}
482
483
484
486{
487 assert(tm);
488 assert(tm->refCount);
489 return tm->enumPtr;
490}
491
492
493
495{
496 assert(tm);
497 assert(tm->refCount);
498 tm->enumPtr=te;
499}
500
501
502
504{
505 assert(tm);
506 assert(tm->refCount);
507 return tm->definePtr;
508}
509
510
511
513{
514 assert(tm);
515 assert(tm->refCount);
516 tm->definePtr=td;
517}
518
519
520
522{
523 assert(tm);
524 assert(tm->refCount);
525 return tm->groupPtr;
526}
527
528
529
531{
532 assert(tm);
533 assert(tm->refCount);
534 tm->groupPtr=gr;
535}
536
537
538
540{
541 assert(tm);
542 assert(tm->refCount);
543 return tm->memberPosition;
544}
545
546
547
549{
550 assert(tm);
551 assert(tm->refCount);
552 tm->memberPosition=i;
553}
554
555
556
557TYPEMAKER2_CODE_LIST *Typemaker2_Member_GetCodeDefs(const TYPEMAKER2_MEMBER *tm)
558{
559 assert(tm);
560 assert(tm->refCount);
561 return tm->codeDefs;
562}
563
564
565
566int Typemaker2_Member_readXml(TYPEMAKER2_MEMBER *tm, GWEN_XMLNODE *node, const char *wantedLang)
567{
568 const char *s;
569 GWEN_XMLNODE *langNode=NULL;
570 GWEN_XMLNODE *nn;
571
572 assert(tm);
573 assert(tm->refCount);
574
575 if (wantedLang)
576 langNode=GWEN_XMLNode_FindFirstTag(node, "lang", "id", wantedLang);
577 if (langNode==NULL)
578 langNode=node;
579
580 s=GWEN_XMLNode_GetProperty(node, "name", NULL);
581 if (s==NULL) {
582 DBG_ERROR(GWEN_LOGDOMAIN, "Member has no id");
583 return GWEN_ERROR_BAD_DATA;
584 }
586
587 s=GWEN_XMLNode_GetProperty(node, "type", NULL);
588 if (s==NULL) {
589 DBG_ERROR(GWEN_LOGDOMAIN, "Member has no type");
590 return GWEN_ERROR_BAD_DATA;
591 }
593
594 s=GWEN_XMLNode_GetProperty(node, "elementName", NULL);
596
597 s=GWEN_XMLNode_GetProperty(node, "enum", NULL);
599
600 s=GWEN_XMLNode_GetProperty(node, "define", NULL);
602
603 s=GWEN_XMLNode_GetProperty(node, "maxlen", NULL);
604 if (s && *s) {
605 int i;
606
607 if (1==sscanf(s, "%i", &i))
608 tm->maxLen=i;
609 else {
610 DBG_ERROR(GWEN_LOGDOMAIN, "Bad value for maxlen [%s]", s);
611 return GWEN_ERROR_BAD_DATA;
612 }
613 }
614
615 /* read flags */
616 s=GWEN_XMLNode_GetCharValue(node, "flags", NULL);
617 if (s && *s)
619
620 /* read setflags */
621 s=GWEN_XMLNode_GetCharValue(node, "setflags", NULL);
622 if (s && *s)
624
625 /* read getflags */
626 s=GWEN_XMLNode_GetCharValue(node, "getflags", NULL);
627 if (s && *s)
629
630 /* read dupflags */
631 s=GWEN_XMLNode_GetCharValue(node, "dupflags", NULL);
632 if (s && *s)
634
635 /* read copyflags */
636 s=GWEN_XMLNode_GetCharValue(node, "copyflags", NULL);
637 if (s && *s)
639
640 /* read access */
641 s=GWEN_XMLNode_GetCharValue(node, "access", NULL);
642 if (s && *s) {
645 DBG_ERROR(GWEN_LOGDOMAIN, "Unknown access type [%s]", s);
646 return GWEN_ERROR_BAD_DATA;
647 }
649 }
650
651 /* read default value */
652 s=GWEN_XMLNode_GetCharValue(node, "default", NULL);
653 if (s && *s)
655
656 /* read preset value */
657 s=GWEN_XMLNode_GetCharValue(node, "preset", NULL);
658 if (s && *s)
660
661 /* read AEDB type */
662 s=GWEN_XMLNode_GetCharValue(node, "aedb_type", NULL);
663 if (s && *s)
665
666 /* read description */
667 nn=GWEN_XMLNode_FindFirstTag(node, "descr", NULL, NULL);
668 if (nn) {
669 GWEN_BUFFER *tbuf;
670 int rv;
671
672 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
674 if (rv<0) {
675 DBG_ERROR(0, "here (%d)", rv);
676 }
677 else {
679 }
680 GWEN_Buffer_free(tbuf);
681 }
682
683 /* read codedefs */
684 nn=GWEN_XMLNode_FindFirstTag(langNode, "codedefs", NULL, NULL);
685 if (nn) {
686 GWEN_XMLNODE *nnn;
687
688 nnn=GWEN_XMLNode_FindFirstTag(nn, "codedef", NULL, NULL);
689 while (nnn) {
690 TYPEMAKER2_CODE *tc;
691
693 if (tc) {
694 const char *s;
695
697 if (s && *s)
699
701 if (s && *s)
703 }
704
705 Typemaker2_Code_List_Add(tc, tm->codeDefs);
706 nnn=GWEN_XMLNode_FindNextTag(nnn, "codedef", NULL, NULL);
707 }
708 }
709
710
711 return 0;
712}
713
714
715
716void Typemaker2_Member_Dump(TYPEMAKER2_MEMBER *tm, FILE *f, int indent)
717{
718 if (tm) {
719 int i;
720 const char *s1, *s2;
721
722 for (i=0; i<indent; i++)
723 fprintf(f, " ");
724 fprintf(f, "Member\n");
725
726 for (i=0; i<indent+2; i++)
727 fprintf(f, " ");
728 fprintf(f, "Name : %s\n", (tm->name)?(tm->name):"<null>");
729
730 for (i=0; i<indent+2; i++)
731 fprintf(f, " ");
732 fprintf(f, "Typename : %s\n", (tm->typeName)?(tm->typeName):"<null>");
733
734 for (i=0; i<indent+2; i++)
735 fprintf(f, " ");
736 fprintf(f, "Elementname : %s\n", (tm->elementName)?(tm->elementName):"<null>");
737
738 for (i=0; i<indent+2; i++)
739 fprintf(f, " ");
740 fprintf(f, "Field Id : %s\n", (tm->fieldId)?(tm->fieldId):"<null>");
741
742 for (i=0; i<indent+2; i++)
743 fprintf(f, " ");
744 fprintf(f, "Access : %d [%d]\n", tm->access, Typemaker2_Member_GetAccess(tm));
745
746 for (i=0; i<indent+2; i++)
747 fprintf(f, " ");
748 fprintf(f, "Flags : %08x [%08x]\n", tm->flags, Typemaker2_Member_GetFlags(tm));
749
750 for (i=0; i<indent+2; i++)
751 fprintf(f, " ");
752 fprintf(f, "SetFlags : %08x [%08x]\n", tm->setFlags, Typemaker2_Member_GetSetFlags(tm));
753
754 for (i=0; i<indent+2; i++)
755 fprintf(f, " ");
756 fprintf(f, "GetFlags : %08x [%08x]\n", tm->getFlags, Typemaker2_Member_GetGetFlags(tm));
757
758 for (i=0; i<indent+2; i++)
759 fprintf(f, " ");
760 fprintf(f, "DupFlags : %08x [%08x]\n", tm->dupFlags, Typemaker2_Member_GetDupFlags(tm));
761
762 for (i=0; i<indent+2; i++)
763 fprintf(f, " ");
764 s1=tm->defaultValue;
766 fprintf(f, "Default : %s [%s]\n", s1?s1:"<null>", s2?s2:"<null>");
767
768 for (i=0; i<indent+2; i++)
769 fprintf(f, " ");
770 s1=tm->presetValue;
772 fprintf(f, "Preset : %s [%s]\n", s1?s1:"<null>", s2?s2:"<null>");
773
774 for (i=0; i<indent+2; i++)
775 fprintf(f, " ");
776 fprintf(f, "Position : %d\n", tm->memberPosition);
777
778 for (i=0; i<indent+2; i++)
779 fprintf(f, " ");
780 fprintf(f, "Description : %s\n", (tm->descr)?(tm->descr):"<null>");
781
782 }
783}
784
785
786
787
788
789
790
#define NULL
Definition binreloc.c:300
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
Definition buffer.c:42
void GWEN_Buffer_free(GWEN_BUFFER *bf)
Definition buffer.c:89
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
Definition buffer.c:235
#define DBG_ERROR(dbg_logger, format,...)
Definition debug.h:97
#define GWEN_ERROR_BAD_DATA
Definition error.h:121
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition buffer.h:38
#define GWEN_LIST_FINI(t, element)
Definition list1.h:475
#define GWEN_LIST_FUNCTIONS(t, pr)
Definition list1.h:367
#define GWEN_LIST_INIT(t, element)
Definition list1.h:466
#define GWEN_LOGDOMAIN
Definition logger.h:35
#define GWEN_FREE_OBJECT(varname)
Definition memory.h:61
#define GWEN_NEW_OBJECT(typ, varname)
Definition memory.h:55
void Typemaker2_Code_SetMemberFlagsMaskInt(TYPEMAKER2_CODE *p_struct, uint32_t p_src)
Definition tm_code.c:246
const char * Typemaker2_Code_GetMemberFlagsMask(const TYPEMAKER2_CODE *p_struct)
Definition tm_code.c:160
TYPEMAKER2_CODE * Typemaker2_Code_fromXml(GWEN_XMLNODE *p_db)
Definition tm_code.c:372
const char * Typemaker2_Code_GetMemberFlagsValue(const TYPEMAKER2_CODE *p_struct)
Definition tm_code.c:166
void Typemaker2_Code_SetMemberFlagsValueInt(TYPEMAKER2_CODE *p_struct, uint32_t p_src)
Definition tm_code.c:252
struct TYPEMAKER2_CODE TYPEMAKER2_CODE
Definition tm_code.h:24
struct TYPEMAKER2_DEFINE TYPEMAKER2_DEFINE
Definition tm_define.h:24
struct TYPEMAKER2_ENUM TYPEMAKER2_ENUM
Definition tm_enum.h:24
struct TYPEMAKER2_GROUP TYPEMAKER2_GROUP
Definition tm_group.h:19
int Typemaker2_Member_GetMemberPosition(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:539
void Typemaker2_Member_Attach(TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:74
void Typemaker2_Member_SetFieldId(TYPEMAKER2_MEMBER *tm, const char *s)
Definition tm_member.c:180
const char * Typemaker2_Member_GetFieldId(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:171
const char * Typemaker2_Member_GetDescription(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:149
const char * Typemaker2_Member_GetDefaultValue(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:388
const char * Typemaker2_Member_GetEnumId(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:193
void Typemaker2_Member_SetTypePtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_TYPE *ty)
Definition tm_member.c:476
void Typemaker2_Member_SetAqDbType(TYPEMAKER2_MEMBER *tm, const char *s)
Definition tm_member.c:453
const char * Typemaker2_Member_GetTypeName(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:105
void Typemaker2_Member_SetElementName(TYPEMAKER2_MEMBER *tm, const char *s)
Definition tm_member.c:136
TYPEMAKER2_TYPE * Typemaker2_Member_GetTypePtr(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:467
uint32_t Typemaker2_Member_GetDupFlags(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:303
void Typemaker2_Member_SetGetFlags(TYPEMAKER2_MEMBER *tm, uint32_t i)
Definition tm_member.c:294
void Typemaker2_Member_SetDupFlags(TYPEMAKER2_MEMBER *tm, uint32_t i)
Definition tm_member.c:316
int Typemaker2_Member_readXml(TYPEMAKER2_MEMBER *tm, GWEN_XMLNODE *node, const char *wantedLang)
Definition tm_member.c:566
void Typemaker2_Member_SetCopyFlags(TYPEMAKER2_MEMBER *tm, uint32_t i)
Definition tm_member.c:338
void Typemaker2_Member_SetTypeName(TYPEMAKER2_MEMBER *tm, const char *s)
Definition tm_member.c:114
void Typemaker2_Member_SetPresetValue(TYPEMAKER2_MEMBER *tm, const char *s)
Definition tm_member.c:426
TYPEMAKER2_DEFINE * Typemaker2_Member_GetDefinePtr(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:503
void Typemaker2_Member_Dump(TYPEMAKER2_MEMBER *tm, FILE *f, int indent)
Definition tm_member.c:716
void Typemaker2_Member_SetEnumPtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_ENUM *te)
Definition tm_member.c:494
const char * Typemaker2_Member_GetAqDbType(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:440
const char * Typemaker2_Member_GetDefineId(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:215
TYPEMAKER2_GROUP * Typemaker2_Member_GetGroupPtr(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:521
TYPEMAKER2_MEMBER * Typemaker2_Member_new()
Definition tm_member.c:31
uint32_t Typemaker2_Member_GetSetFlags(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:259
TYPEMAKER2_ENUM * Typemaker2_Member_GetEnumPtr(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:485
uint32_t Typemaker2_Member_GetCopyFlags(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:325
void Typemaker2_Member_free(TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:46
void Typemaker2_Member_SetMaxLen(TYPEMAKER2_MEMBER *tm, int i)
Definition tm_member.c:379
const char * Typemaker2_Member_GetPresetValue(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:414
const char * Typemaker2_Member_GetElementName(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:127
void Typemaker2_Member_SetFlags(TYPEMAKER2_MEMBER *tm, uint32_t i)
Definition tm_member.c:250
int Typemaker2_Member_GetAccess(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:347
uint32_t Typemaker2_Member_GetFlags(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:237
void Typemaker2_Member_SetMemberPosition(TYPEMAKER2_MEMBER *tm, int i)
Definition tm_member.c:548
void Typemaker2_Member_SetAccess(TYPEMAKER2_MEMBER *tm, int i)
Definition tm_member.c:360
int Typemaker2_Member_GetMaxLen(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:369
void Typemaker2_Member_SetDefinePtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_DEFINE *td)
Definition tm_member.c:512
void Typemaker2_Member_SetDefineId(TYPEMAKER2_MEMBER *tm, const char *s)
Definition tm_member.c:224
void Typemaker2_Member_SetSetFlags(TYPEMAKER2_MEMBER *tm, uint32_t i)
Definition tm_member.c:272
void Typemaker2_Member_SetName(TYPEMAKER2_MEMBER *tm, const char *s)
Definition tm_member.c:92
TYPEMAKER2_CODE_LIST * Typemaker2_Member_GetCodeDefs(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:557
void Typemaker2_Member_SetDescription(TYPEMAKER2_MEMBER *tm, const char *s)
Definition tm_member.c:158
uint32_t Typemaker2_Member_GetGetFlags(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:281
const char * Typemaker2_Member_GetName(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:83
void Typemaker2_Member_SetDefaultValue(TYPEMAKER2_MEMBER *tm, const char *s)
Definition tm_member.c:400
void Typemaker2_Member_SetEnumId(TYPEMAKER2_MEMBER *tm, const char *s)
Definition tm_member.c:202
void Typemaker2_Member_SetGroupPtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_GROUP *gr)
Definition tm_member.c:530
struct TYPEMAKER2_MEMBER TYPEMAKER2_MEMBER
Definition tm_member.h:21
uint32_t Typemaker2_Type_GetSetFlags(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:383
uint32_t Typemaker2_Type_GetCopyFlags(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:449
int Typemaker2_Type_GetAccess(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:471
const char * Typemaker2_Type_GetPresetValue(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:559
uint32_t Typemaker2_Type_GetFlags(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:361
uint32_t Typemaker2_Type_GetGetFlags(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:405
const char * Typemaker2_Type_GetAqDbType(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:195
const char * Typemaker2_Type_GetDefaultValue(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:533
uint32_t Typemaker2_Type_GetDupFlags(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:427
struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE
Definition tm_type.h:21
@ TypeMaker2_Access_Unknown
Definition tm_type.h:85
int Typemaker2_AccessFromString(const char *s)
Definition tm_util.c:163
uint32_t Typemaker2_FlagsFromString(const char *t)
Definition tm_util.c:23
const char * GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n, const char *name, const char *defaultValue)
Definition xml.c:239
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
Definition xml.c:776
GWEN_XMLNODE * GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
Definition xml.c:794
const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
Definition xml.c:812
GWENHYWFAR_API int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags)
Definition xmlrw.c:627
#define GWEN_XML_FLAGS_HANDLE_COMMENTS
Definition xml.h:60
struct GWEN__XMLNODE GWEN_XMLNODE
Definition xml.h:156
#define GWEN_XML_FLAGS_SIMPLE
Definition xml.h:89