gwenhywfar 5.14.1
tm_builder_c.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
11
12#include "tm_builder_c.h"
13#include "tm2c_enums.h"
14#include "tm2c_constructor.h"
15#include "tm2c_destructor.h"
16#include "tm2c_typedef.h"
17#include "tm2c_struct.h"
18#include "tm2c_getter.h"
19#include "tm2c_setter.h"
20#include "tm2c_readdb.h"
21#include "tm2c_writedb.h"
22#include "tm2c_readxml.h"
23#include "tm2c_writexml.h"
24#include "tm2c_readobject.h"
25#include "tm2c_writeobject.h"
26#include "tm2c_dup.h"
27#include "tm2c_copy.h"
28#include "tm2c_macros.h"
29#include "tm2c_list1.h"
30#include "tm2c_tree1.h"
31#include "tm2c_tree2.h"
32#include "tm2c_signal.h"
33#include "tm2c_slot.h"
34#include "tm2c_object.h"
35#include "tm2c_virtualfn.h"
36
37
38#include <gwenhywfar/debug.h>
39
40#include <ctype.h>
41#include <string.h>
42
43
44
45/* DEBUG */
46/*DBG_ERROR(0, "Member %s has flags %x", Typemaker2_Member_GetName(tm), Typemaker2_Member_GetFlags(tm));*/
47
48
49
51{
52 GWEN_BUFFER *tbuf;
53 TYPEMAKER2_MEMBER_LIST *tml;
54
55 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
56
58 if (tml) {
60
61 tm=Typemaker2_Member_List_First(tml);
62 while (tm) {
65 "#define %s %d\n",
68 tm=Typemaker2_Member_List_Next(tm);
69 }
70 }
71
72 GWEN_Buffer_AppendArgs(tbuf, "#define %s %d\n",
75
77 GWEN_Buffer_free(tbuf);
78
79 return 0;
80}
81
82
84{
85 GWEN_BUFFER *tbuf;
87 TYPEMAKER2_HEADER_LIST *hl;
88
90 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
91
92 /* handle post-headers */
94 if (hl) {
96
97 h=Typemaker2_Header_List_First(hl);
98 if (h) {
99 GWEN_Buffer_AppendString(tbuf, "/* post-headers */\n");
100 while (h) {
102 GWEN_Buffer_AppendString(tbuf, "#include ");
103
106 else
108 GWEN_Buffer_AppendString(tbuf, "\n");
109 }
110 h=Typemaker2_Header_List_Next(h);
111 }
112 }
113 GWEN_Buffer_AppendString(tbuf, "\n");
114 }
115
117 GWEN_Buffer_free(tbuf);
118
119 return 0;
120}
121
122
123
125{
126 GWEN_BUFFER *tbuf;
128 TYPEMAKER2_HEADER_LIST *hl;
129
131 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
132
133 /* handle post-headers */
135 if (hl) {
137 int markAdded=0;
138
139 h=Typemaker2_Header_List_First(hl);
140 while (h) {
142 if (!markAdded) {
143 GWEN_Buffer_AppendString(tbuf, "/* end-headers */\n");
144 markAdded=1;
145 }
146 GWEN_Buffer_AppendString(tbuf, "#include ");
147
150 else
152 GWEN_Buffer_AppendString(tbuf, "\n");
153 }
154 h=Typemaker2_Header_List_Next(h);
155 }
156 GWEN_Buffer_AppendString(tbuf, "\n");
157 }
158
160 GWEN_Buffer_free(tbuf);
161
162 return 0;
163}
164
165
166
168{
169 GWEN_BUFFER *tbuf;
170 TYPEMAKER2_MEMBER_LIST *tml;
171 uint32_t flags;
172 /* TYPEMAKER2_TYPEMANAGER *tym; */
173
174 /* tym=Typemaker2_Builder_GetTypeManager(tb); */
175 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
176
177 flags=Typemaker2_Type_GetFlags(ty);
178
180 if (tml) {
182
183 tm=Typemaker2_Member_List_First(tml);
184 while (tm) {
185 TYPEMAKER2_TYPE *mty;
186 int rv;
187
189 assert(mty);
190
193 rv=TM2C_BuildList1GetByMember(tb, ty, tm);
194 if (rv<0) {
195 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
196 return rv;
197 }
198 }
199
200 if (flags & TYPEMAKER2_TYPEFLAGS_WITH_TREE) {
201 rv=TM2C_BuildTreeGetByMember(tb, ty, tm);
202 if (rv<0) {
203 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
204 return rv;
205 }
206 }
207
209 rv=TM2C_BuildTree2GetByMember(tb, ty, tm);
210 if (rv<0) {
211 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
212 return rv;
213 }
214 }
215
216 }
217 tm=Typemaker2_Member_List_Next(tm);
218 }
219 GWEN_Buffer_AppendString(tbuf, " return p_cl;\n");
220 }
221
222 return 0;
223}
224
225
226
228{
229 TYPEMAKER2_MEMBER_LIST *tml;
230 uint32_t flags;
231
232 flags=Typemaker2_Type_GetFlags(ty);
233
235 if (tml) {
237
238 tm=Typemaker2_Member_List_First(tml);
239 while (tm) {
240 TYPEMAKER2_TYPE *mty;
241 int rv;
242
244 assert(mty);
245
248 rv=TM2C_BuildList1SortByMember(tb, ty, tm);
249 if (rv<0) {
250 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
251 return rv;
252 }
253 }
254 }
255 tm=Typemaker2_Member_List_Next(tm);
256 }
257 }
258
259 return 0;
260}
261
262
263
265{
266 TYPEMAKER2_DEFINE_LIST *defines;
267
268 defines=Typemaker2_Type_GetDefines(ty);
269
270 assert(defines);
271 if (Typemaker2_Define_List_GetCount(defines)) {
272 GWEN_BUFFER *tbuf;
273 const char *s;
275
276 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
277
278 td=Typemaker2_Define_List_First(defines);
279 while (td) {
280 const char *prefix;
281 TYPEMAKER2_ITEM *ti;
282 int access=TypeMaker2_Access_Public;
284
285 GWEN_Buffer_AppendString(tbuf, "/* define ");
287 if (s && *s)
289 GWEN_Buffer_AppendString(tbuf, " */\n");
290
292 if (prefix==NULL || *prefix==0) {
293 DBG_ERROR(GWEN_LOGDOMAIN, "No prefix in define definition");
294 GWEN_Buffer_free(tbuf);
295 return GWEN_ERROR_BAD_DATA;
296 }
297
298 ti=Typemaker2_Item_List_First(Typemaker2_Define_GetItems(td));
299 while (ti) {
300 GWEN_Buffer_AppendString(tbuf, "#define ");
301 if (prefix)
302 GWEN_Buffer_AppendString(tbuf, prefix);
304 if (s && *s) {
306 }
308 if (s) {
309 GWEN_Buffer_AppendString(tbuf, " ");
311 }
312 else {
313 char numbuf[32];
314 int k=0;
315
316 switch (Typemaker2_Define_GetMode(td)) {
318 k=1<<j;
319 break;
321 default:
322 k=j;
323 }
324 snprintf(numbuf, sizeof(numbuf)-1, "%d", k);
325 numbuf[sizeof(numbuf)-1]=0;
326 GWEN_Buffer_AppendString(tbuf, " ");
327 GWEN_Buffer_AppendString(tbuf, numbuf);
328 j++;
329 }
330
331 GWEN_Buffer_AppendString(tbuf, "\n");
332 ti=Typemaker2_Item_List_Next(ti);
333 }
334 GWEN_Buffer_AppendString(tbuf, "\n");
335
336 switch (access) {
339 break;
342 break;
345 break;
348 break;
349 default:
350 DBG_ERROR(GWEN_LOGDOMAIN, "Invalid access type");
351 GWEN_Buffer_free(tbuf);
352 return GWEN_ERROR_BAD_DATA;
353 }
354 GWEN_Buffer_Reset(tbuf);
355
356 td=Typemaker2_Define_List_Next(td);
357 }
358 }
359 return 0;
360}
361
362
363
365{
366 GWEN_BUFFER *tbuf;
367 const char *s;
369 TYPEMAKER2_MEMBER_LIST *tml;
370 const char *sTypeId;
371 const char *sTypePrefix;
372
374 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
375
377 sTypePrefix=Typemaker2_Type_GetPrefix(ty);
378
379 /* prototype */
381 if (s && *s)
382 GWEN_Buffer_AppendArgs(tbuf, "%s ", s);
383 GWEN_Buffer_AppendArgs(tbuf, "void %s_toHashString(const %s *p_struct, GWEN_BUFFER *p_buffer);\n",
384 sTypePrefix, sTypeId);
386 GWEN_Buffer_Reset(tbuf);
387
388 /* implementation */
389 GWEN_Buffer_AppendArgs(tbuf, "void %s_toHashString(const %s *p_struct, GWEN_BUFFER *p_buffer) {\n",
390 sTypePrefix, sTypeId);
391 GWEN_Buffer_AppendString(tbuf, " assert(p_struct);\n");
392
394 if (tml) {
396
397 tm=Typemaker2_Member_List_First(tml);
398 while (tm) {
399 TYPEMAKER2_TYPE *mty;
400 const char *sMemberName;
401
403 assert(mty);
404 sMemberName=Typemaker2_Member_GetName(tm);
405
407 GWEN_Buffer_AppendArgs(tbuf, " /* member \"%s\"*/\n", sMemberName);
408 /* toHashString */
409 if (1) {
410 GWEN_BUFFER *srcbuf;
411 int rv;
412
413 srcbuf=GWEN_Buffer_new(0, 256, 0, 1);
414 GWEN_Buffer_AppendArgs(srcbuf, "p_struct->%s", sMemberName);
415
416 GWEN_Buffer_AppendString(tbuf, " ");
418 GWEN_Buffer_GetStart(srcbuf),
419 NULL, /* no dest */
420 tbuf);
421 GWEN_Buffer_free(srcbuf);
422 if (rv<0) {
423 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
424 GWEN_Buffer_free(tbuf);
425 return rv;
426 }
427 GWEN_Buffer_AppendString(tbuf, "\n");
428 }
429
430 GWEN_Buffer_AppendString(tbuf, " GWEN_Buffer_AppendByte(p_buffer, \':\');\n");
431 }
432 else
433 GWEN_Buffer_AppendArgs(tbuf, " /* member \"%s\" doesn't have with_hash flag, ignoring */\n", sMemberName);
434
435 tm=Typemaker2_Member_List_Next(tm);
436 } /* while tm */
437 }
438
439 GWEN_Buffer_AppendString(tbuf, "}\n");
440
442 GWEN_Buffer_free(tbuf);
443
444 return 0;
445}
446
447
448
450{
451 GWEN_BUFFER *tbuf;
452 uint32_t flags;
453
454 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
455
456 flags=Typemaker2_Type_GetFlags(ty);
457
458 while (ty) {
460
461 ti=Typemaker2_Inline_List_First(Typemaker2_Type_GetInlines(ty));
462 while (ti) {
464 const char *content;
465
467 if (content && *content) {
468 GWEN_DB_NODE *db;
469 int rv;
470
472 assert(db);
473 rv=Typemaker2_Builder_ReplaceVars(content, db, tbuf);
474 if (rv<0) {
475 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
476 GWEN_Buffer_free(tbuf);
477 return rv;
478 }
479
480 /* include code */
481 switch (Typemaker2_Inline_GetLocation(ti)) {
484 break;
485
488 break;
489 }
490 }
491 GWEN_Buffer_Reset(tbuf);
492 }
493
494 ti=Typemaker2_Inline_List_Next(ti);
495 }
497 }
498 GWEN_Buffer_free(tbuf);
499
500 return 0;
501}
502
503
504
506{
507 TYPEMAKER2_TYPE *structType;
508 GWEN_BUFFER *tbuf;
509 /* TYPEMAKER2_TYPEMANAGER *tym; */
510
511 structType=ty;
512
513 /* tym=Typemaker2_Builder_GetTypeManager(tb); */
514 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
515
516 while (ty) {
517 TYPEMAKER2_MEMBER_LIST *tml;
518
520 if (tml) {
522
523 tm=Typemaker2_Member_List_First(tml);
524 while (tm) {
525 TYPEMAKER2_TYPE *mty;
526 uint32_t memberFlags;
527
528 memberFlags=Typemaker2_Member_GetFlags(tm);
530 /* TODO: Check that we don't create duplicate code here!! */
531 if (mty && mty!=structType && mty!=ty) {
533
534 /* get inlines from member type */
535 ti=Typemaker2_Inline_List_First(Typemaker2_Type_GetInlines(mty));
536 while (ti) {
538 const char *content;
539
541 if (content && *content) {
542 GWEN_DB_NODE *db;
543 int rv;
544
545 /* replace vars in context of the struct type, not the particular member type */
547 assert(db);
548 rv=Typemaker2_Builder_ReplaceVars(content, db, tbuf);
549 if (rv<0) {
550 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
551 GWEN_Buffer_free(tbuf);
552 return rv;
553 }
554
555 /* include code */
556 switch (Typemaker2_Inline_GetLocation(ti)) {
559 break;
560
563 break;
564 }
565 }
566 GWEN_Buffer_Reset(tbuf);
567 }
568
569 ti=Typemaker2_Inline_List_Next(ti);
570 }
571 } /* if mty */
572
573 tm=Typemaker2_Member_List_Next(tm);
574 } /* while tm */
575 } /* if tml */
576
578 }
579
580 return 0;
581}
582
583
584
586{
587 GWEN_BUFFER *tbuf;
588 const char *s;
590 const char *sTypeId;
591 const char *sTypePrefix;
592
594 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
595
597 sTypePrefix=Typemaker2_Type_GetPrefix(ty);
598
599 /* prototype */
601 if (s && *s)
602 GWEN_Buffer_AppendArgs(tbuf, "%s ", s);
603
604 GWEN_Buffer_AppendArgs(tbuf, "void %s_Attach(%s *p_struct);\n", sTypePrefix, sTypeId);
605
607 GWEN_Buffer_Reset(tbuf);
608
609 /* implementation */
610 GWEN_Buffer_AppendArgs(tbuf, "void %s_Attach(%s *p_struct) {\n", sTypePrefix, sTypeId);
611 GWEN_Buffer_AppendString(tbuf, " assert(p_struct);\n");
612 GWEN_Buffer_AppendString(tbuf, " assert(p_struct->_refCount);\n");
613 GWEN_Buffer_AppendString(tbuf, " p_struct->_refCount++;\n");
614 GWEN_Buffer_AppendString(tbuf, "}\n");
615
617 GWEN_Buffer_free(tbuf);
618
619 return 0;
620}
621
622
623
625{
626 GWEN_BUFFER *tbuf;
628 const char *sApi;
629 const char *sTypePrefix;
630
632 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
633
635 sTypePrefix=Typemaker2_Type_GetPrefix(ty);
636
637 /* public prototypes */
638 GWEN_Buffer_AppendString(tbuf, "/* cache functions */\n");
639
640 if (sApi && *sApi)
641 GWEN_Buffer_AppendArgs(tbuf, "%s ", sApi);
642 GWEN_Buffer_AppendArgs(tbuf, "int GWENHYWFAR_CB %s_CacheFn_Attach(void *ptr);\n", sTypePrefix);
643 GWEN_Buffer_AppendString(tbuf, "\n");
644
645 if (sApi && *sApi)
646 GWEN_Buffer_AppendArgs(tbuf, "%s ", sApi);
647 GWEN_Buffer_AppendArgs(tbuf, "int GWENHYWFAR_CB %s_CacheFn_Free(void *ptr);\n", sTypePrefix);
648 GWEN_Buffer_AppendString(tbuf, "\n");
649
651 GWEN_Buffer_Reset(tbuf);
652
653 /* implementations */
654 GWEN_Buffer_AppendString(tbuf, "/* cache functions */\n");
655 GWEN_Buffer_AppendArgs(tbuf, "int %s_CacheFn_Attach(void *ptr) {\n", sTypePrefix);
656 GWEN_Buffer_AppendString(tbuf, " return 0;\n");
657 GWEN_Buffer_AppendString(tbuf, "}\n");
658 GWEN_Buffer_AppendString(tbuf, "\n");
659
660 GWEN_Buffer_AppendArgs(tbuf, "int %s_CacheFn_Free(void *ptr) {\n", sTypePrefix);
661 GWEN_Buffer_AppendString(tbuf, " return 0;\n");
662 GWEN_Buffer_AppendString(tbuf, "}\n");
663 GWEN_Buffer_AppendString(tbuf, "\n");
664
666 GWEN_Buffer_free(tbuf);
667
668 return 0;
669}
670
671
672
674 TYPEMAKER2_GROUP *grp, int depth, GWEN_BUFFER *buf)
675{
676 const char *s;
677 TYPEMAKER2_GROUP *childGrp;
678 TYPEMAKER2_MEMBER_LIST *members;
679 const char *sTypeIdentifier;
680 const char *sTypePrefix;
681
682 sTypeIdentifier=Typemaker2_Type_GetIdentifier(ty);
683 sTypePrefix=Typemaker2_Type_GetPrefix(ty);
684
685 /* write title */
687 GWEN_Buffer_AppendString(buf, "\n\n");
688 GWEN_Buffer_AppendArgs(buf, "<h%d>%s</h%d>\n", depth, (s && *s)?s:"Unnamed Group", depth);
689 GWEN_Buffer_AppendString(buf, "\n");
690
692 if (s && *s) {
693 GWEN_DB_NODE *dbCall;
694 int rv;
695
697 assert(dbCall);
698 rv=Typemaker2_Builder_ReplaceVars(s, dbCall, buf);
699 if (rv<0) {
700 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
701 GWEN_DB_Group_free(dbCall);
702 GWEN_Buffer_free(buf);
703 return rv;
704 }
705 GWEN_DB_Group_free(dbCall);
706 GWEN_Buffer_AppendString(buf, "\n");
707 }
708
709 /* write member docs */
710 members=Typemaker2_Type_GetMembers(ty);
711 if (members) {
713
714 tm=Typemaker2_Member_List_First(members);
715 while (tm) {
716 if (Typemaker2_Member_GetGroupPtr(tm)==grp) {
717 const char *sMemberName;
718
719 sMemberName=Typemaker2_Member_GetName(tm);
720 GWEN_Buffer_AppendArgs(buf, "\n\n@anchor %s_%s\n", sTypeIdentifier, sMemberName);
721 GWEN_Buffer_AppendArgs(buf, "<h%d>%s</h%d>\n\n", depth+1, sMemberName, depth+1);
722
723 /* add description, if any */
725 if (s && *s) {
726 GWEN_DB_NODE *dbCall;
727 int rv;
728
729 dbCall=Typemaker2_Builder_CreateDbForCall(tb, ty, tm, NULL, NULL);
730 assert(dbCall);
731 rv=Typemaker2_Builder_ReplaceVars(s, dbCall, buf);
732 if (rv<0) {
733 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
734 GWEN_DB_Group_free(dbCall);
735 GWEN_Buffer_free(buf);
736 return rv;
737 }
738 GWEN_DB_Group_free(dbCall);
739 GWEN_Buffer_AppendString(buf, "\n");
740 }
741
742 /* add setter/getter info */
744 "<p>Set this property with @ref %s_Set%c%s(), ",
745 sTypePrefix, toupper(*sMemberName), sMemberName+1);
747 "get it with @ref %s_Get%c%s().</p>\n",
748 sTypePrefix, toupper(*sMemberName), sMemberName+1);
749 }
750 tm=Typemaker2_Member_List_Next(tm);
751 }
752 }
753
754 /* write children groups */
755 childGrp=Typemaker2_Group_Tree_GetFirstChild(grp);
756 while (childGrp) {
757 int rv;
758
759 rv=_buildGroupApiDoc(tb, ty, childGrp, depth+1, buf);
760 if (rv<0) {
761 DBG_ERROR(0, "here (%d)", rv);
762 return rv;
763 }
764 childGrp=Typemaker2_Group_Tree_GetNext(childGrp);
765 }
766
767 return 0;
768}
769
770
771
772
774{
775 TYPEMAKER2_GROUP_TREE *groupTree;
776 TYPEMAKER2_GROUP *grp;
777 GWEN_BUFFER *tbuf;
778 const char *sTypeIdentifier;
779
780 sTypeIdentifier=Typemaker2_Type_GetIdentifier(ty);
781
782 groupTree=Typemaker2_Type_GetGroupTree(ty);
783
784 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
785
786 GWEN_Buffer_AppendArgs(tbuf, "/** @page P_%s Structure %s\n", sTypeIdentifier, sTypeIdentifier);
787 GWEN_Buffer_AppendArgs(tbuf, "<p>This page describes the properties of %s.</p>\n", sTypeIdentifier);
788 GWEN_Buffer_AppendString(tbuf, "\n");
789
790 grp=Typemaker2_Group_Tree_GetFirst(groupTree);
791 while (grp) {
792 _buildGroupApiDoc(tb, ty, grp, 1, tbuf);
793 grp=Typemaker2_Group_Tree_GetNext(grp);
794 }
795 GWEN_Buffer_AppendString(tbuf, "\n");
796 GWEN_Buffer_AppendString(tbuf, "*/\n");
797
799
800 GWEN_Buffer_free(tbuf);
801
802 return 0;
803}
804
805
806
807
808
809
810
811
813{
814 int rv;
815 uint32_t flags;
816
817 flags=Typemaker2_Type_GetFlags(ty);
818
822 if (rv<0) {
823 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
824 return rv;
825 }
826 }
827
828
830 if (rv<0) {
831 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
832 return rv;
833 }
834
836 rv=_buildFieldIds(tb, ty);
837 if (rv<0) {
838 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
839 return rv;
840 }
841 }
842
843 rv=_buildApiDoc(tb, ty);
844 if (rv<0) {
845 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
846 return rv;
847 }
848
849 rv=_buildDefineDefines(tb, ty);
850 if (rv<0) {
851 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
852 return rv;
853 }
854
855 rv=TM2C_BuildTypedef(tb, ty);
856 if (rv<0) {
857 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
858 return rv;
859 }
860
861 rv=TM2C_BuildDefineEnums(tb, ty);
862 if (rv<0) {
863 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
864 return rv;
865 }
866
867 rv=TM2C_BuildDefineVirtualFns(tb, ty, "pre");
868 if (rv<0) {
869 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
870 return rv;
871 }
872
873 rv=_buildPostHeaders(tb, ty);
874 if (rv<0) {
875 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
876 return rv;
877 }
878
879 rv=TM2C_BuildDefineVirtualFns(tb, ty, "post");
880 if (rv<0) {
881 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
882 return rv;
883 }
884
885 rv=TM2C_BuildStruct(tb, ty);
886 if (rv<0) {
887 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
888 return rv;
889 }
890
891 rv=TM2C_BuildMacroFunctions(tb, ty);
892 if (rv<0) {
893 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
894 return rv;
895 }
896
897 rv=TM2C_BuildEnumFromString(tb, ty);
898 if (rv<0) {
899 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
900 return rv;
901 }
902
903 rv=TM2C_BuildEnumToString(tb, ty);
904 if (rv<0) {
905 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
906 return rv;
907 }
908
909 rv=TM2C_BuildConstructor(tb, ty);
910 if (rv<0) {
911 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
912 return rv;
913 }
914
915 rv=TM2C_BuildDestructor(tb, ty);
916 if (rv<0) {
917 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
918 return rv;
919 }
920
922 rv=_buildAttach(tb, ty);
923 if (rv<0) {
924 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
925 return rv;
926 }
927 }
928
929 if (!(flags & TYPEMAKER2_TYPEFLAGS_NODUP)) {
930 rv=TM2C_BuildDup(tb, ty);
931 if (rv<0) {
932 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
933 return rv;
934 }
935 }
936
937 if (!(flags & TYPEMAKER2_TYPEFLAGS_NOCOPY)) {
938 rv=TM2C_BuildCopy(tb, ty);
939 if (rv<0) {
940 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
941 return rv;
942 }
943 }
944
945 rv=TM2C_BuildGetter(tb, ty);
946 if (rv<0) {
947 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
948 return rv;
949 }
950
951 rv=TM2C_BuildSetter(tb, ty);
952 if (rv<0) {
953 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
954 return rv;
955 }
956
957 rv=TM2C_BuildProtoVirtualFns(tb, ty);
958 if (rv<0) {
959 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
960 return rv;
961 }
962
963 rv=TM2C_BuildCodeVirtualFns(tb, ty);
964 if (rv<0) {
965 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
966 return rv;
967 }
968
970 if (rv<0) {
971 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
972 return rv;
973 }
974
976 if (rv<0) {
977 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
978 return rv;
979 }
980
982 if (rv<0) {
983 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
984 return rv;
985 }
986
988 if (rv<0) {
989 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
990 return rv;
991 }
992
994 if (!(flags & TYPEMAKER2_TYPEFLAGS_NODUP)) {
995 rv=TM2C_BuildList1Dup(tb, ty);
996 if (rv<0) {
997 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
998 return rv;
999 }
1000 }
1001 }
1002
1003 if (flags & TYPEMAKER2_TYPEFLAGS_WITH_DB) {
1004 rv=TM2C_BuildReadDb(tb, ty);
1005 if (rv<0) {
1006 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1007 return rv;
1008 }
1009
1010 rv=TM2C_BuildWriteDb(tb, ty);
1011 if (rv<0) {
1012 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1013 return rv;
1014 }
1015
1016 rv=TM2C_BuildFromDb(tb, ty);
1017 if (rv<0) {
1018 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1019 return rv;
1020 }
1021
1022 rv=TM2C_BuildToDb(tb, ty);
1023 if (rv<0) {
1024 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1025 return rv;
1026 }
1027
1028 }
1029
1030 if (flags & TYPEMAKER2_TYPEFLAGS_WITH_XML) {
1031 rv=TM2C_BuildReadXml(tb, ty);
1032 if (rv<0) {
1033 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1034 return rv;
1035 }
1036
1037 rv=TM2C_BuildWriteXml(tb, ty);
1038 if (rv<0) {
1039 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1040 return rv;
1041 }
1042
1043 rv=TM2C_BuildToXml(tb, ty);
1044 if (rv<0) {
1045 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1046 return rv;
1047 }
1048
1049 rv=TM2C_BuildFromXml(tb, ty);
1050 if (rv<0) {
1051 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1052 return rv;
1053 }
1054 }
1055
1057 rv=TM2C_BuildReadObject(tb, ty);
1058 if (rv<0) {
1059 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1060 return rv;
1061 }
1062
1063 rv=TM2C_BuildWriteObject(tb, ty);
1064 if (rv<0) {
1065 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1066 return rv;
1067 }
1068
1069 rv=TM2C_BuildToObject(tb, ty);
1070 if (rv<0) {
1071 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1072 return rv;
1073 }
1074
1075 rv=TM2C_BuildFromObject(tb, ty);
1076 if (rv<0) {
1077 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1078 return rv;
1079 }
1080
1081 rv=TM2C_BuildCreateColumnList(tb, ty);
1082 if (rv<0) {
1083 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1084 return rv;
1085 }
1086
1087 rv=TM2C_BuildCreateTable(tb, ty);
1088 if (rv<0) {
1089 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1090 return rv;
1091 }
1092
1093 rv=TM2C_BuildCreateObject(tb, ty);
1094 if (rv<0) {
1095 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1096 return rv;
1097 }
1098 }
1099
1100 rv=_buildGetByMember(tb, ty);
1101 if (rv<0) {
1102 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1103 return rv;
1104 }
1105
1106 if (flags & TYPEMAKER2_TYPEFLAGS_WITH_HASH) {
1107 rv=_buildToHashString(tb, ty);
1108 if (rv<0) {
1109 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1110 return rv;
1111 }
1112 }
1113
1114 rv=_buildMemberInlines(tb, ty);
1115 if (rv<0) {
1116 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1117 return rv;
1118 }
1119
1120
1121 rv=_buildSortByMember(tb, ty);
1122 if (rv<0) {
1123 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1124 return rv;
1125 }
1126
1127
1129 rv=TM2C_BuildSignalFunctions(tb, ty);
1130 if (rv<0) {
1131 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1132 return rv;
1133 }
1134 }
1135
1136 if (flags & TYPEMAKER2_TYPEFLAGS_WITH_SLOTS) {
1137 rv=TM2C_BuildSlotFunctions(tb, ty);
1138 if (rv<0) {
1139 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1140 return rv;
1141 }
1142 }
1143
1145 rv=_buildCacheFunctions(tb, ty);
1146 if (rv<0) {
1147 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1148 return rv;
1149 }
1150 }
1151
1152 rv=_buildInlines(tb, ty);
1153 if (rv<0) {
1154 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1155 return rv;
1156 }
1157
1158 rv=_buildEndHeaders(tb, ty);
1159 if (rv<0) {
1160 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1161 return rv;
1162 }
1163
1164 return 0;
1165}
1166
1167
1168
1178
1179
1180
1181
1182
#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
int GWEN_Buffer_AppendArgs(GWEN_BUFFER *bf, const char *fmt,...)
Definition buffer.c:1087
void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
Definition buffer.c:653
void GWEN_Buffer_free(GWEN_BUFFER *bf)
Definition buffer.c:89
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
Definition buffer.c:992
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
Definition buffer.c:235
void GWEN_DB_Group_free(GWEN_DB_NODE *n)
Definition db.c:421
struct GWEN_DB_NODE GWEN_DB_NODE
Definition db.h:228
#define DBG_INFO(dbg_logger, format,...)
Definition debug.h:181
#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_UNUSED
#define GWEN_LOGDOMAIN
Definition logger.h:32
int TM2C_BuildConstructor(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildCopy(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_copy.c:34
int TM2C_BuildDestructor(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildDup(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_dup.c:34
int TM2C_BuildEnumToString(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_enums.c:289
int TM2C_SetEnumStringFns(TYPEMAKER2_TYPE *ty)
Definition tm2c_enums.c:126
int TM2C_BuildDefineEnums(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_enums.c:25
int TM2C_BuildEnumFromString(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_enums.c:179
int TM2C_BuildGetter(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_getter.c:32
int TM2C_BuildList1Dup(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_list1.c:59
int TM2C_BuildList1GetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
Definition tm2c_list1.c:43
int TM2C_BuildList1SortByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
Definition tm2c_list1.c:75
int TM2C_BuildMacroFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_macros.c:24
int TM2C_BuildCreateColumnList(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_object.c:24
int TM2C_BuildCreateTable(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildCreateObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildReadDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_readdb.c:31
int TM2C_BuildFromDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildReadObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildFromObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildReadXml(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildFromXml(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildSetter(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_setter.c:35
int TM2C_BuildSignalFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_signal.c:25
int TM2C_AddVirtualFnsFromSlots(TYPEMAKER2_TYPE *ty)
Definition tm2c_slot.c:187
void TM2C_DelVirtualFnsFromSlots(TYPEMAKER2_TYPE *ty)
Definition tm2c_slot.c:267
int TM2C_BuildSlotFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_slot.c:24
int TM2C_BuildStruct(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition tm2c_struct.c:30
int TM2C_BuildTreeGetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
Definition tm2c_tree1.c:30
int TM2C_BuildTree2GetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
Definition tm2c_tree2.c:30
int TM2C_BuildTypedef(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildDefineVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, const char *loc)
int TM2C_BuildProtoVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildProtoSetterVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildGetterVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildProtoGetterVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildSetterVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildCodeVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildWriteDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildToDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildWriteObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildToObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildToXml(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildWriteXml(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
TYPEMAKER2_BUILDER * Typemaker2_Builder_new()
Definition tm_builder.c:53
void Typemaker2_Builder_AddCode(TYPEMAKER2_BUILDER *tb, const char *s)
Definition tm_builder.c:204
void Typemaker2_Builder_AddPublicDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
Definition tm_builder.c:172
int Typemaker2_Builder_ReplaceVars(const char *s, GWEN_DB_NODE *db, GWEN_BUFFER *dbuf)
Definition tm_builder.c:548
void Typemaker2_Builder_AddLibraryDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
Definition tm_builder.c:180
GWEN_DB_NODE * Typemaker2_Builder_CreateDbForCall(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm, const char *src, const char *dst)
Definition tm_builder.c:371
void Typemaker2_Builder_AddProtectedDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
Definition tm_builder.c:188
void Typemaker2_Builder_AddDeclaration(TYPEMAKER2_BUILDER *tb, int access, const char *s)
Definition tm_builder.c:149
void Typemaker2_Builder_SetBuildFn(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_BUILDER_BUILD_FN fn)
Definition tm_builder.c:352
void Typemaker2_Builder_AddPrivateDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
Definition tm_builder.c:196
TYPEMAKER2_TYPEMANAGER * Typemaker2_Builder_GetTypeManager(const TYPEMAKER2_BUILDER *tb)
Definition tm_builder.c:133
struct TYPEMAKER2_BUILDER TYPEMAKER2_BUILDER
Definition tm_builder.h:26
int Typemaker2_Builder_Invoke_ToHashStringFn(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm, const char *src, const char *dst, GWEN_BUFFER *dbuf)
static int _buildMemberInlines(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildToHashString(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int Typemaker2_Builder_C_Build(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildGroupApiDoc(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_GROUP *grp, int depth, GWEN_BUFFER *buf)
static int _buildGetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildAttach(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildDefineDefines(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildInlines(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildPostHeaders(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildApiDoc(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildCacheFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildSortByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildFieldIds(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
TYPEMAKER2_BUILDER * Typemaker2_Builder_C_new()
static int _buildEndHeaders(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Define_GetPrefix(const TYPEMAKER2_DEFINE *p_struct)
Definition tm_define.c:190
int Typemaker2_Define_GetStartValue(const TYPEMAKER2_DEFINE *p_struct)
Definition tm_define.c:214
int Typemaker2_Define_GetMode(const TYPEMAKER2_DEFINE *p_struct)
Definition tm_define.c:208
const char * Typemaker2_Define_GetId(const TYPEMAKER2_DEFINE *p_struct)
Definition tm_define.c:184
TYPEMAKER2_ITEM_LIST * Typemaker2_Define_GetItems(const TYPEMAKER2_DEFINE *p_struct)
Definition tm_define.c:202
@ Typemaker2_Define_Mode_BitField
Definition tm_define.h:31
@ Typemaker2_Define_Mode_Sequence
Definition tm_define.h:30
struct TYPEMAKER2_DEFINE TYPEMAKER2_DEFINE
Definition tm_define.h:24
const char * Typemaker2_Group_GetTitle(TYPEMAKER2_GROUP *gr)
Definition tm_group.c:69
const char * Typemaker2_Group_GetDescription(TYPEMAKER2_GROUP *gr)
Definition tm_group.c:93
struct TYPEMAKER2_GROUP TYPEMAKER2_GROUP
Definition tm_group.h:19
int Typemaker2_Header_GetType(const TYPEMAKER2_HEADER *th)
Definition tm_header.c:90
int Typemaker2_Header_GetLocation(const TYPEMAKER2_HEADER *th)
Definition tm_header.c:108
const char * Typemaker2_Header_GetFileName(const TYPEMAKER2_HEADER *th)
Definition tm_header.c:68
@ Typemaker2_HeaderType_System
Definition tm_header.h:25
@ Typemaker2_HeaderLocation_Post
Definition tm_header.h:32
@ Typemaker2_HeaderLocation_HeaderEnd
Definition tm_header.h:35
struct TYPEMAKER2_HEADER TYPEMAKER2_HEADER
Definition tm_header.h:19
int Typemaker2_Inline_GetLocation(const TYPEMAKER2_INLINE *th)
Definition tm_inline.c:91
const char * Typemaker2_Inline_GetContent(const TYPEMAKER2_INLINE *th)
Definition tm_inline.c:69
int Typemaker2_Inline_GetAccess(const TYPEMAKER2_INLINE *th)
Definition tm_inline.c:109
int Typemaker2_Inline_GetTypeFlagsMask(const TYPEMAKER2_INLINE *th)
Definition tm_inline.c:127
int Typemaker2_Inline_GetTypeFlagsValue(const TYPEMAKER2_INLINE *th)
Definition tm_inline.c:136
@ Typemaker2_InlineLocation_Header
Definition tm_inline.h:25
@ Typemaker2_InlineLocation_Code
Definition tm_inline.h:26
struct TYPEMAKER2_INLINE TYPEMAKER2_INLINE
Definition tm_inline.h:19
const char * Typemaker2_Item_GetName(const TYPEMAKER2_ITEM *p_struct)
Definition tm_item.c:101
const char * Typemaker2_Item_GetValue(const TYPEMAKER2_ITEM *p_struct)
Definition tm_item.c:107
struct TYPEMAKER2_ITEM TYPEMAKER2_ITEM
Definition tm_item.h:22
int Typemaker2_Member_GetMemberPosition(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:539
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
TYPEMAKER2_TYPE * Typemaker2_Member_GetTypePtr(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:467
TYPEMAKER2_GROUP * Typemaker2_Member_GetGroupPtr(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:521
uint32_t Typemaker2_Member_GetFlags(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:237
const char * Typemaker2_Member_GetName(const TYPEMAKER2_MEMBER *tm)
Definition tm_member.c:83
struct TYPEMAKER2_MEMBER TYPEMAKER2_MEMBER
Definition tm_member.h:21
TYPEMAKER2_DEFINE_LIST * Typemaker2_Type_GetDefines(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:710
const char * Typemaker2_Type_GetFieldCountId(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:791
TYPEMAKER2_HEADER_LIST * Typemaker2_Type_GetHeaders(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:692
const char * Typemaker2_Type_GetIdentifier(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:585
uint32_t Typemaker2_Type_GetFlags(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:361
TYPEMAKER2_INLINE_LIST * Typemaker2_Type_GetInlines(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:728
int Typemaker2_Type_GetNonVolatileMemberCount(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:773
const char * Typemaker2_Type_GetPrefix(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:607
TYPEMAKER2_TYPE * Typemaker2_Type_GetExtendsPtr(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:629
TYPEMAKER2_MEMBER_LIST * Typemaker2_Type_GetMembers(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:683
TYPEMAKER2_GROUP_TREE * Typemaker2_Type_GetGroupTree(const TYPEMAKER2_TYPE *ty)
Definition tm_type.c:764
#define TYPEMAKER2_TYPEFLAGS_WITH_REFCOUNT
Definition tm_type.h:61
#define TYPEMAKER2_TYPEFLAGS_WITH_SIGNALS
Definition tm_type.h:62
struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE
Definition tm_type.h:21
#define TYPEMAKER2_TYPEFLAGS_WITH_CACHEFNS
Definition tm_type.h:64
#define TYPEMAKER2_TYPEFLAGS_WITH_XML
Definition tm_type.h:54
#define TYPEMAKER2_TYPEFLAGS_NODUP
Definition tm_type.h:66
#define TYPEMAKER2_TYPEFLAGS_WITH_LIST1
Definition tm_type.h:56
#define TYPEMAKER2_TYPEFLAGS_WITH_DB
Definition tm_type.h:53
#define TYPEMAKER2_FLAGS_WITH_HASH
Definition tm_type.h:47
#define TYPEMAKER2_FLAGS_WITH_GETBYMEMBER
Definition tm_type.h:46
@ TypeMaker2_Access_Private
Definition tm_type.h:89
@ TypeMaker2_Access_Library
Definition tm_type.h:88
@ TypeMaker2_Access_Protected
Definition tm_type.h:87
@ TypeMaker2_Access_Public
Definition tm_type.h:86
#define TYPEMAKER2_FLAGS_VOLATILE
Definition tm_type.h:32
#define TYPEMAKER2_TYPEFLAGS_WITH_HASH
Definition tm_type.h:69
#define TYPEMAKER2_FLAGS_SORTBYMEMBER
Definition tm_type.h:44
#define TYPEMAKER2_TYPEFLAGS_WITH_OBJECT
Definition tm_type.h:55
#define TYPEMAKER2_TYPEFLAGS_WITH_TREE
Definition tm_type.h:60
#define TYPEMAKER2_TYPEFLAGS_WITH_SLOTS
Definition tm_type.h:63
#define TYPEMAKER2_TYPEFLAGS_NOCOPY
Definition tm_type.h:68
#define TYPEMAKER2_TYPEFLAGS_WITH_TREE2
Definition tm_type.h:71
const char * Typemaker2_TypeManager_GetApiDeclaration(const TYPEMAKER2_TYPEMANAGER *tym)
struct TYPEMAKER2_TYPEMANAGER TYPEMAKER2_TYPEMANAGER