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