gwenhywfar  5.10.1
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 
26 GWEN_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;
64  GWEN_FREE_OBJECT(tm);
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 
557 TYPEMAKER2_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 
566 int 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) {
644  if (i==TypeMaker2_Access_Unknown) {
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 
692  tc=Typemaker2_Code_fromXml(nnn);
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 
716 void 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 
const char * Typemaker2_Member_GetTypeName(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:105
int Typemaker2_Type_GetAccess(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:451
void Typemaker2_Member_SetDescription(TYPEMAKER2_MEMBER *tm, const char *s)
Definition: tm_member.c:158
void Typemaker2_Member_SetTypeName(TYPEMAKER2_MEMBER *tm, const char *s)
Definition: tm_member.c:114
void Typemaker2_Member_SetName(TYPEMAKER2_MEMBER *tm, const char *s)
Definition: tm_member.c:92
TYPEMAKER2_TYPE * Typemaker2_Member_GetTypePtr(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:467
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
Definition: buffer.c:235
uint32_t Typemaker2_Member_GetFlags(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:237
void Typemaker2_Code_SetMemberFlagsMaskInt(TYPEMAKER2_CODE *p_struct, uint32_t p_src)
Definition: tm_code.c:246
TYPEMAKER2_DEFINE * Typemaker2_Member_GetDefinePtr(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:503
GWENHYWFAR_API int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags)
Definition: xmlrw.c:626
#define GWEN_XML_FLAGS_SIMPLE
Definition: xml.h:89
const char * GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n, const char *name, const char *defaultValue)
Definition: xml.c:239
const char * Typemaker2_Member_GetFieldId(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:171
const char * Typemaker2_Type_GetAqDbType(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:195
void Typemaker2_Member_SetDupFlags(TYPEMAKER2_MEMBER *tm, uint32_t i)
Definition: tm_member.c:316
GWEN_XMLNODE * GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
Definition: xml.c:794
const char * Typemaker2_Code_GetMemberFlagsMask(const TYPEMAKER2_CODE *p_struct)
Definition: tm_code.c:160
TYPEMAKER2_MEMBER * Typemaker2_Member_new()
Definition: tm_member.c:31
TYPEMAKER2_ENUM * Typemaker2_Member_GetEnumPtr(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:485
void Typemaker2_Member_SetSetFlags(TYPEMAKER2_MEMBER *tm, uint32_t i)
Definition: tm_member.c:272
void Typemaker2_Member_SetMaxLen(TYPEMAKER2_MEMBER *tm, int i)
Definition: tm_member.c:379
const char * Typemaker2_Member_GetDescription(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:149
#define GWEN_FREE_OBJECT(varname)
Definition: memory.h:61
#define NULL
Definition: binreloc.c:300
const char * Typemaker2_Member_GetAqDbType(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:440
void Typemaker2_Member_free(TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:46
void Typemaker2_Member_SetFieldId(TYPEMAKER2_MEMBER *tm, const char *s)
Definition: tm_member.c:180
struct TYPEMAKER2_GROUP TYPEMAKER2_GROUP
Definition: tm_group.h:19
#define GWEN_LOGDOMAIN
Definition: logger.h:35
uint32_t Typemaker2_Type_GetSetFlags(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:363
const char * Typemaker2_Code_GetMemberFlagsValue(const TYPEMAKER2_CODE *p_struct)
Definition: tm_code.c:166
uint32_t Typemaker2_Member_GetGetFlags(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:281
struct TYPEMAKER2_DEFINE TYPEMAKER2_DEFINE
Definition: tm_define.h:24
struct TYPEMAKER2_ENUM TYPEMAKER2_ENUM
Definition: tm_enum.h:24
uint32_t Typemaker2_Type_GetCopyFlags(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:429
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
Definition: buffer.c:42
int Typemaker2_Member_GetMaxLen(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:369
void Typemaker2_Member_Dump(TYPEMAKER2_MEMBER *tm, FILE *f, int indent)
Definition: tm_member.c:716
const char * Typemaker2_Type_GetPresetValue(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:517
const char * Typemaker2_Member_GetDefineId(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:215
void Typemaker2_Member_SetDefineId(TYPEMAKER2_MEMBER *tm, const char *s)
Definition: tm_member.c:224
const char * Typemaker2_Member_GetPresetValue(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:414
#define GWEN_ERROR_BAD_DATA
Definition: error.h:121
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
Definition: xml.c:776
int Typemaker2_Member_GetAccess(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:347
#define GWEN_NEW_OBJECT(typ, varname)
Definition: memory.h:55
void Typemaker2_Member_SetGroupPtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_GROUP *gr)
Definition: tm_member.c:530
const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
Definition: xml.c:812
void Typemaker2_Member_SetCopyFlags(TYPEMAKER2_MEMBER *tm, uint32_t i)
Definition: tm_member.c:338
void Typemaker2_Member_SetEnumPtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_ENUM *te)
Definition: tm_member.c:494
int Typemaker2_Member_GetMemberPosition(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:539
uint32_t Typemaker2_FlagsFromString(const char *t)
Definition: tm_util.c:23
void Typemaker2_Member_SetGetFlags(TYPEMAKER2_MEMBER *tm, uint32_t i)
Definition: tm_member.c:294
int Typemaker2_AccessFromString(const char *s)
Definition: tm_util.c:163
TYPEMAKER2_CODE_LIST * Typemaker2_Member_GetCodeDefs(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:557
void Typemaker2_Member_SetAccess(TYPEMAKER2_MEMBER *tm, int i)
Definition: tm_member.c:360
void Typemaker2_Member_SetDefaultValue(TYPEMAKER2_MEMBER *tm, const char *s)
Definition: tm_member.c:400
uint32_t Typemaker2_Type_GetDupFlags(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:407
void Typemaker2_Member_Attach(TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:74
TYPEMAKER2_CODE * Typemaker2_Code_fromXml(GWEN_XMLNODE *p_db)
Definition: tm_code.c:372
uint32_t Typemaker2_Member_GetDupFlags(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:303
void Typemaker2_Member_SetTypePtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_TYPE *ty)
Definition: tm_member.c:476
int Typemaker2_Member_readXml(TYPEMAKER2_MEMBER *tm, GWEN_XMLNODE *node, const char *wantedLang)
Definition: tm_member.c:566
void GWEN_Buffer_free(GWEN_BUFFER *bf)
Definition: buffer.c:89
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition: buffer.h:38
const char * Typemaker2_Member_GetDefaultValue(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:388
#define GWEN_XML_FLAGS_HANDLE_COMMENTS
Definition: xml.h:60
#define DBG_ERROR(dbg_logger, format, args...)
Definition: debug.h:97
struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE
Definition: tm_type.h:21
uint32_t Typemaker2_Member_GetCopyFlags(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:325
uint32_t Typemaker2_Type_GetGetFlags(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:385
void Typemaker2_Member_SetFlags(TYPEMAKER2_MEMBER *tm, uint32_t i)
Definition: tm_member.c:250
void Typemaker2_Code_SetMemberFlagsValueInt(TYPEMAKER2_CODE *p_struct, uint32_t p_src)
Definition: tm_code.c:252
TYPEMAKER2_GROUP * Typemaker2_Member_GetGroupPtr(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:521
#define GWEN_LIST_INIT(t, element)
Definition: list1.h:465
void Typemaker2_Member_SetDefinePtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_DEFINE *td)
Definition: tm_member.c:512
const char * Typemaker2_Member_GetEnumId(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:193
struct TYPEMAKER2_MEMBER TYPEMAKER2_MEMBER
Definition: tm_member.h:21
struct TYPEMAKER2_CODE TYPEMAKER2_CODE
Definition: tm_code.h:24
uint32_t Typemaker2_Member_GetSetFlags(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:259
#define GWEN_LIST_FUNCTIONS(t, pr)
Definition: list1.h:366
void Typemaker2_Member_SetMemberPosition(TYPEMAKER2_MEMBER *tm, int i)
Definition: tm_member.c:548
const char * Typemaker2_Member_GetElementName(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:127
void Typemaker2_Member_SetAqDbType(TYPEMAKER2_MEMBER *tm, const char *s)
Definition: tm_member.c:453
void Typemaker2_Member_SetPresetValue(TYPEMAKER2_MEMBER *tm, const char *s)
Definition: tm_member.c:426
uint32_t Typemaker2_Type_GetFlags(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:341
const char * Typemaker2_Type_GetDefaultValue(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:491
const char * Typemaker2_Member_GetName(const TYPEMAKER2_MEMBER *tm)
Definition: tm_member.c:83
#define GWEN_LIST_FINI(t, element)
Definition: list1.h:474
void Typemaker2_Member_SetEnumId(TYPEMAKER2_MEMBER *tm, const char *s)
Definition: tm_member.c:202
void Typemaker2_Member_SetElementName(TYPEMAKER2_MEMBER *tm, const char *s)
Definition: tm_member.c:136
struct GWEN__XMLNODE GWEN_XMLNODE
Definition: xml.h:156