gwenhywfar 5.10.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
138 h=Typemaker2_Header_List_First(hl);
139 if (h) {
140 GWEN_Buffer_AppendString(tbuf, "/* end-headers */\n");
141 while (h) {
143 GWEN_Buffer_AppendString(tbuf, "#include ");
144
147 else
149 GWEN_Buffer_AppendString(tbuf, "\n");
150 }
151 h=Typemaker2_Header_List_Next(h);
152 }
153 }
154 GWEN_Buffer_AppendString(tbuf, "\n");
155 }
156
158 GWEN_Buffer_free(tbuf);
159
160 return 0;
161}
162
163
164
166{
167 GWEN_BUFFER *tbuf;
168 TYPEMAKER2_MEMBER_LIST *tml;
169 uint32_t flags;
170 /* TYPEMAKER2_TYPEMANAGER *tym; */
171
172 /* tym=Typemaker2_Builder_GetTypeManager(tb); */
173 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
174
175 flags=Typemaker2_Type_GetFlags(ty);
176
178 if (tml) {
180
181 tm=Typemaker2_Member_List_First(tml);
182 while (tm) {
183 TYPEMAKER2_TYPE *mty;
184 int rv;
185
187 assert(mty);
188
191 rv=TM2C_BuildList1GetByMember(tb, ty, tm);
192 if (rv<0) {
193 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
194 return rv;
195 }
196 }
197
198 if (flags & TYPEMAKER2_TYPEFLAGS_WITH_TREE) {
199 rv=TM2C_BuildTreeGetByMember(tb, ty, tm);
200 if (rv<0) {
201 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
202 return rv;
203 }
204 }
205
207 rv=TM2C_BuildTree2GetByMember(tb, ty, tm);
208 if (rv<0) {
209 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
210 return rv;
211 }
212 }
213
214 }
215 tm=Typemaker2_Member_List_Next(tm);
216 }
217 GWEN_Buffer_AppendString(tbuf, " return p_cl;\n");
218 }
219
220 return 0;
221}
222
223
224
226{
227 TYPEMAKER2_MEMBER_LIST *tml;
228 uint32_t flags;
229
230 flags=Typemaker2_Type_GetFlags(ty);
231
233 if (tml) {
235
236 tm=Typemaker2_Member_List_First(tml);
237 while (tm) {
238 TYPEMAKER2_TYPE *mty;
239 int rv;
240
242 assert(mty);
243
246 rv=TM2C_BuildList1SortByMember(tb, ty, tm);
247 if (rv<0) {
248 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
249 return rv;
250 }
251 }
252 }
253 tm=Typemaker2_Member_List_Next(tm);
254 }
255 }
256
257 return 0;
258}
259
260
261
263{
264 TYPEMAKER2_DEFINE_LIST *defines;
265
266 defines=Typemaker2_Type_GetDefines(ty);
267
268 assert(defines);
269 if (Typemaker2_Define_List_GetCount(defines)) {
270 GWEN_BUFFER *tbuf;
271 const char *s;
273
274 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
275
276 td=Typemaker2_Define_List_First(defines);
277 while (td) {
278 const char *prefix;
279 TYPEMAKER2_ITEM *ti;
280 int access=TypeMaker2_Access_Public;
282
283 GWEN_Buffer_AppendString(tbuf, "/* define ");
285 if (s && *s)
287 GWEN_Buffer_AppendString(tbuf, " */\n");
288
290 if (prefix==NULL || *prefix==0) {
291 DBG_ERROR(GWEN_LOGDOMAIN, "No prefix in define definition");
292 GWEN_Buffer_free(tbuf);
293 return GWEN_ERROR_BAD_DATA;
294 }
295
296 ti=Typemaker2_Item_List_First(Typemaker2_Define_GetItems(td));
297 while (ti) {
298 GWEN_Buffer_AppendString(tbuf, "#define ");
299 if (prefix)
300 GWEN_Buffer_AppendString(tbuf, prefix);
302 if (s && *s) {
304 }
306 if (s) {
307 GWEN_Buffer_AppendString(tbuf, " ");
309 }
310 else {
311 char numbuf[32];
312 int k=0;
313
314 switch (Typemaker2_Define_GetMode(td)) {
316 k=1<<j;
317 break;
319 default:
320 k=j;
321 }
322 snprintf(numbuf, sizeof(numbuf)-1, "%d", k);
323 numbuf[sizeof(numbuf)-1]=0;
324 GWEN_Buffer_AppendString(tbuf, " ");
325 GWEN_Buffer_AppendString(tbuf, numbuf);
326 j++;
327 }
328
329 GWEN_Buffer_AppendString(tbuf, "\n");
330 ti=Typemaker2_Item_List_Next(ti);
331 }
332 GWEN_Buffer_AppendString(tbuf, "\n");
333
334 switch (access) {
337 break;
340 break;
343 break;
346 break;
347 default:
348 DBG_ERROR(GWEN_LOGDOMAIN, "Invalid access type");
349 GWEN_Buffer_free(tbuf);
350 return GWEN_ERROR_BAD_DATA;
351 }
352 GWEN_Buffer_Reset(tbuf);
353
354 td=Typemaker2_Define_List_Next(td);
355 }
356 }
357 return 0;
358}
359
360
361
363{
364 GWEN_BUFFER *tbuf;
365 const char *s;
367 TYPEMAKER2_MEMBER_LIST *tml;
368 const char *sTypeId;
369 const char *sTypePrefix;
370
372 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
373
375 sTypePrefix=Typemaker2_Type_GetPrefix(ty);
376
377 /* prototype */
379 if (s && *s)
380 GWEN_Buffer_AppendArgs(tbuf, "%s ", s);
381 GWEN_Buffer_AppendArgs(tbuf, "void %s_toHashString(const %s *p_struct, GWEN_BUFFER *p_buffer);\n",
382 sTypePrefix, sTypeId);
384 GWEN_Buffer_Reset(tbuf);
385
386 /* implementation */
387 GWEN_Buffer_AppendArgs(tbuf, "void %s_toHashString(const %s *p_struct, GWEN_BUFFER *p_buffer) {\n",
388 sTypePrefix, sTypeId);
389 GWEN_Buffer_AppendString(tbuf, " assert(p_struct);\n");
390
392 if (tml) {
394
395 tm=Typemaker2_Member_List_First(tml);
396 while (tm) {
397 TYPEMAKER2_TYPE *mty;
398 const char *sMemberName;
399
401 assert(mty);
402 sMemberName=Typemaker2_Member_GetName(tm);
403
405 GWEN_Buffer_AppendArgs(tbuf, " /* member \"%s\"*/\n", sMemberName);
406 /* toHashString */
407 if (1) {
408 GWEN_BUFFER *srcbuf;
409 int rv;
410
411 srcbuf=GWEN_Buffer_new(0, 256, 0, 1);
412 GWEN_Buffer_AppendArgs(srcbuf, "p_struct->%s", sMemberName);
413
414 GWEN_Buffer_AppendString(tbuf, " ");
416 GWEN_Buffer_GetStart(srcbuf),
417 NULL, /* no dest */
418 tbuf);
419 GWEN_Buffer_free(srcbuf);
420 if (rv<0) {
421 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
422 GWEN_Buffer_free(tbuf);
423 return rv;
424 }
425 GWEN_Buffer_AppendString(tbuf, "\n");
426 }
427
428 GWEN_Buffer_AppendString(tbuf, " GWEN_Buffer_AppendByte(p_buffer, \':\');\n");
429 }
430 else
431 GWEN_Buffer_AppendArgs(tbuf, " /* member \"%s\" doesn't have with_hash flag, ignoring */\n", sMemberName);
432
433 tm=Typemaker2_Member_List_Next(tm);
434 } /* while tm */
435 }
436
437 GWEN_Buffer_AppendString(tbuf, "}\n");
438
440 GWEN_Buffer_free(tbuf);
441
442 return 0;
443}
444
445
446
448{
449 GWEN_BUFFER *tbuf;
450 uint32_t flags;
451
452 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
453
454 flags=Typemaker2_Type_GetFlags(ty);
455
456 while (ty) {
458
459 ti=Typemaker2_Inline_List_First(Typemaker2_Type_GetInlines(ty));
460 while (ti) {
462 const char *content;
463
465 if (content && *content) {
466 GWEN_DB_NODE *db;
467 int rv;
468
470 assert(db);
471 rv=Typemaker2_Builder_ReplaceVars(content, db, tbuf);
472 if (rv<0) {
473 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
474 GWEN_Buffer_free(tbuf);
475 return rv;
476 }
477
478 /* include code */
479 switch (Typemaker2_Inline_GetLocation(ti)) {
482 break;
483
486 break;
487 }
488 }
489 GWEN_Buffer_Reset(tbuf);
490 }
491
492 ti=Typemaker2_Inline_List_Next(ti);
493 }
495 }
496
497 return 0;
498}
499
500
501
503{
504 GWEN_BUFFER *tbuf;
505 uint32_t flags;
506 /* TYPEMAKER2_TYPEMANAGER *tym; */
507
508 /* tym=Typemaker2_Builder_GetTypeManager(tb); */
509 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
510
511 flags=Typemaker2_Type_GetFlags(ty);
512
513 while (ty) {
514 TYPEMAKER2_MEMBER_LIST *tml;
515
517 if (tml) {
519
520 tm=Typemaker2_Member_List_First(tml);
521 while (tm) {
522 TYPEMAKER2_TYPE *mty;
523
525 if (mty) {
527
528 /* get inlines from member type */
529 ti=Typemaker2_Inline_List_First(Typemaker2_Type_GetInlines(mty));
530 while (ti) {
532 const char *content;
533
535 if (content && *content) {
536 GWEN_DB_NODE *db;
537 int rv;
538
539 /* replace vars in context of the struct type, not the particular member type */
541 assert(db);
542 rv=Typemaker2_Builder_ReplaceVars(content, db, tbuf);
543 if (rv<0) {
544 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
545 GWEN_Buffer_free(tbuf);
546 return rv;
547 }
548
549 /* include code */
550 switch (Typemaker2_Inline_GetLocation(ti)) {
553 break;
554
557 break;
558 }
559 }
560 GWEN_Buffer_Reset(tbuf);
561 }
562
563 ti=Typemaker2_Inline_List_Next(ti);
564 }
565 } /* if mty */
566
567 tm=Typemaker2_Member_List_Next(tm);
568 } /* while tm */
569 } /* if tml */
570
572 }
573
574 return 0;
575}
576
577
578
580{
581 GWEN_BUFFER *tbuf;
582 const char *s;
584 const char *sTypeId;
585 const char *sTypePrefix;
586
588 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
589
591 sTypePrefix=Typemaker2_Type_GetPrefix(ty);
592
593 /* prototype */
595 if (s && *s)
596 GWEN_Buffer_AppendArgs(tbuf, "%s ", s);
597
598 GWEN_Buffer_AppendArgs(tbuf, "void %s_Attach(%s *p_struct);\n", sTypePrefix, sTypeId);
599
601 GWEN_Buffer_Reset(tbuf);
602
603 /* implementation */
604 GWEN_Buffer_AppendArgs(tbuf, "void %s_Attach(%s *p_struct) {\n", sTypePrefix, sTypeId);
605 GWEN_Buffer_AppendString(tbuf, " assert(p_struct);\n");
606 GWEN_Buffer_AppendString(tbuf, " assert(p_struct->_refCount);\n");
607 GWEN_Buffer_AppendString(tbuf, " p_struct->_refCount++;\n");
608 GWEN_Buffer_AppendString(tbuf, "}\n");
609
611 GWEN_Buffer_free(tbuf);
612
613 return 0;
614}
615
616
617
619{
620 GWEN_BUFFER *tbuf;
622 const char *sApi;
623 const char *sTypePrefix;
624
626 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
627
629 sTypePrefix=Typemaker2_Type_GetPrefix(ty);
630
631 /* public prototypes */
632 GWEN_Buffer_AppendString(tbuf, "/* cache functions */\n");
633
634 if (sApi && *sApi)
635 GWEN_Buffer_AppendArgs(tbuf, "%s ", sApi);
636 GWEN_Buffer_AppendArgs(tbuf, "int GWENHYWFAR_CB %s_CacheFn_Attach(void *ptr);\n", sTypePrefix);
637 GWEN_Buffer_AppendString(tbuf, "\n");
638
639 if (sApi && *sApi)
640 GWEN_Buffer_AppendArgs(tbuf, "%s ", sApi);
641 GWEN_Buffer_AppendArgs(tbuf, "int GWENHYWFAR_CB %s_CacheFn_Free(void *ptr);\n", sTypePrefix);
642 GWEN_Buffer_AppendString(tbuf, "\n");
643
645 GWEN_Buffer_Reset(tbuf);
646
647 /* implementations */
648 GWEN_Buffer_AppendString(tbuf, "/* cache functions */\n");
649 GWEN_Buffer_AppendArgs(tbuf, "int %s_CacheFn_Attach(void *ptr) {\n", sTypePrefix);
650 GWEN_Buffer_AppendString(tbuf, " return 0;\n");
651 GWEN_Buffer_AppendString(tbuf, "}\n");
652 GWEN_Buffer_AppendString(tbuf, "\n");
653
654 GWEN_Buffer_AppendArgs(tbuf, "int %s_CacheFn_Free(void *ptr) {\n", sTypePrefix);
655 GWEN_Buffer_AppendString(tbuf, " return 0;\n");
656 GWEN_Buffer_AppendString(tbuf, "}\n");
657 GWEN_Buffer_AppendString(tbuf, "\n");
658
660 GWEN_Buffer_free(tbuf);
661
662 return 0;
663}
664
665
666
668 TYPEMAKER2_GROUP *grp, int depth, GWEN_BUFFER *buf)
669{
670 const char *s;
671 TYPEMAKER2_GROUP *childGrp;
672 TYPEMAKER2_MEMBER_LIST *members;
673 const char *sTypeIdentifier;
674 const char *sTypePrefix;
675
676 sTypeIdentifier=Typemaker2_Type_GetIdentifier(ty);
677 sTypePrefix=Typemaker2_Type_GetPrefix(ty);
678
679 /* write title */
681 GWEN_Buffer_AppendString(buf, "\n\n");
682 GWEN_Buffer_AppendArgs(buf, "<h%d>%s</h%d>\n", depth, (s && *s)?s:"Unnamed Group", depth);
683 GWEN_Buffer_AppendString(buf, "\n");
684
686 if (s && *s) {
687 GWEN_DB_NODE *dbCall;
688 int rv;
689
691 assert(dbCall);
692 rv=Typemaker2_Builder_ReplaceVars(s, dbCall, buf);
693 if (rv<0) {
694 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
695 GWEN_DB_Group_free(dbCall);
696 GWEN_Buffer_free(buf);
697 return rv;
698 }
699 GWEN_DB_Group_free(dbCall);
700 GWEN_Buffer_AppendString(buf, "\n");
701 }
702
703 /* write member docs */
704 members=Typemaker2_Type_GetMembers(ty);
705 if (members) {
707
708 tm=Typemaker2_Member_List_First(members);
709 while (tm) {
710 if (Typemaker2_Member_GetGroupPtr(tm)==grp) {
711 const char *sMemberName;
712
713 sMemberName=Typemaker2_Member_GetName(tm);
714 GWEN_Buffer_AppendArgs(buf, "\n\n@anchor %s_%s\n", sTypeIdentifier, sMemberName);
715 GWEN_Buffer_AppendArgs(buf, "<h%d>%s</h%d>\n\n", depth+1, sMemberName, depth+1);
716
717 /* add description, if any */
719 if (s && *s) {
720 GWEN_DB_NODE *dbCall;
721 int rv;
722
723 dbCall=Typemaker2_Builder_CreateDbForCall(tb, ty, tm, NULL, NULL);
724 assert(dbCall);
725 rv=Typemaker2_Builder_ReplaceVars(s, dbCall, buf);
726 if (rv<0) {
727 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
728 GWEN_DB_Group_free(dbCall);
729 GWEN_Buffer_free(buf);
730 return rv;
731 }
732 GWEN_DB_Group_free(dbCall);
733 GWEN_Buffer_AppendString(buf, "\n");
734 }
735
736 /* add setter/getter info */
738 "<p>Set this property with @ref %s_Set%c%s(), ",
739 sTypePrefix, toupper(*sMemberName), sMemberName+1);
741 "get it with @ref %s_Get%c%s().</p>\n",
742 sTypePrefix, toupper(*sMemberName), sMemberName+1);
743 }
744 tm=Typemaker2_Member_List_Next(tm);
745 }
746 }
747
748 /* write children groups */
749 childGrp=Typemaker2_Group_Tree_GetFirstChild(grp);
750 while (childGrp) {
751 int rv;
752
753 rv=_buildGroupApiDoc(tb, ty, childGrp, depth+1, buf);
754 if (rv<0) {
755 DBG_ERROR(0, "here (%d)", rv);
756 return rv;
757 }
758 childGrp=Typemaker2_Group_Tree_GetNext(childGrp);
759 }
760
761 return 0;
762}
763
764
765
766
768{
769 TYPEMAKER2_GROUP_TREE *groupTree;
770 TYPEMAKER2_GROUP *grp;
771 GWEN_BUFFER *tbuf;
772 const char *sTypeIdentifier;
773
774 sTypeIdentifier=Typemaker2_Type_GetIdentifier(ty);
775
776 groupTree=Typemaker2_Type_GetGroupTree(ty);
777
778 tbuf=GWEN_Buffer_new(0, 256, 0, 1);
779
780 GWEN_Buffer_AppendArgs(tbuf, "/** @page P_%s Structure %s\n", sTypeIdentifier, sTypeIdentifier);
781 GWEN_Buffer_AppendArgs(tbuf, "<p>This page describes the properties of %s.</p>\n", sTypeIdentifier);
782 GWEN_Buffer_AppendString(tbuf, "\n");
783
784 grp=Typemaker2_Group_Tree_GetFirst(groupTree);
785 while (grp) {
786 _buildGroupApiDoc(tb, ty, grp, 1, tbuf);
787 grp=Typemaker2_Group_Tree_GetNext(grp);
788 }
789 GWEN_Buffer_AppendString(tbuf, "\n");
790 GWEN_Buffer_AppendString(tbuf, "*/\n");
791
793
794 GWEN_Buffer_free(tbuf);
795
796 return 0;
797}
798
799
800
801
802
803
804
805
807{
808 int rv;
809 uint32_t flags;
810
811 flags=Typemaker2_Type_GetFlags(ty);
812
816 if (rv<0) {
817 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
818 return rv;
819 }
820 }
821
822
824 if (rv<0) {
825 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
826 return rv;
827 }
828
830 rv=_buildFieldIds(tb, ty);
831 if (rv<0) {
832 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
833 return rv;
834 }
835 }
836
837 rv=_buildApiDoc(tb, ty);
838 if (rv<0) {
839 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
840 return rv;
841 }
842
843 rv=_buildDefineDefines(tb, ty);
844 if (rv<0) {
845 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
846 return rv;
847 }
848
849 rv=TM2C_BuildTypedef(tb, ty);
850 if (rv<0) {
851 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
852 return rv;
853 }
854
855 rv=TM2C_BuildDefineEnums(tb, ty);
856 if (rv<0) {
857 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
858 return rv;
859 }
860
861 rv=TM2C_BuildDefineVirtualFns(tb, ty, "pre");
862 if (rv<0) {
863 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
864 return rv;
865 }
866
867 rv=_buildPostHeaders(tb, ty);
868 if (rv<0) {
869 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
870 return rv;
871 }
872
873 rv=TM2C_BuildDefineVirtualFns(tb, ty, "post");
874 if (rv<0) {
875 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
876 return rv;
877 }
878
879 rv=TM2C_BuildStruct(tb, ty);
880 if (rv<0) {
881 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
882 return rv;
883 }
884
885 rv=TM2C_BuildMacroFunctions(tb, ty);
886 if (rv<0) {
887 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
888 return rv;
889 }
890
891 rv=TM2C_BuildEnumFromString(tb, ty);
892 if (rv<0) {
893 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
894 return rv;
895 }
896
897 rv=TM2C_BuildEnumToString(tb, ty);
898 if (rv<0) {
899 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
900 return rv;
901 }
902
903 rv=TM2C_BuildConstructor(tb, ty);
904 if (rv<0) {
905 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
906 return rv;
907 }
908
909 rv=TM2C_BuildDestructor(tb, ty);
910 if (rv<0) {
911 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
912 return rv;
913 }
914
916 rv=_buildAttach(tb, ty);
917 if (rv<0) {
918 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
919 return rv;
920 }
921 }
922
923 if (!(flags & TYPEMAKER2_TYPEFLAGS_NODUP)) {
924 rv=TM2C_BuildDup(tb, ty);
925 if (rv<0) {
926 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
927 return rv;
928 }
929 }
930
931 if (!(flags & TYPEMAKER2_TYPEFLAGS_NOCOPY)) {
932 rv=TM2C_BuildCopy(tb, ty);
933 if (rv<0) {
934 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
935 return rv;
936 }
937 }
938
939 rv=TM2C_BuildGetter(tb, ty);
940 if (rv<0) {
941 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
942 return rv;
943 }
944
945 rv=TM2C_BuildSetter(tb, ty);
946 if (rv<0) {
947 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
948 return rv;
949 }
950
951 rv=TM2C_BuildProtoVirtualFns(tb, ty);
952 if (rv<0) {
953 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
954 return rv;
955 }
956
957 rv=TM2C_BuildCodeVirtualFns(tb, ty);
958 if (rv<0) {
959 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
960 return rv;
961 }
962
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 (!(flags & TYPEMAKER2_TYPEFLAGS_NODUP)) {
989 rv=TM2C_BuildList1Dup(tb, ty);
990 if (rv<0) {
991 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
992 return rv;
993 }
994 }
995 }
996
997 if (flags & TYPEMAKER2_TYPEFLAGS_WITH_DB) {
998 rv=TM2C_BuildReadDb(tb, ty);
999 if (rv<0) {
1000 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1001 return rv;
1002 }
1003
1004 rv=TM2C_BuildWriteDb(tb, ty);
1005 if (rv<0) {
1006 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1007 return rv;
1008 }
1009
1010 rv=TM2C_BuildFromDb(tb, ty);
1011 if (rv<0) {
1012 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1013 return rv;
1014 }
1015
1016 rv=TM2C_BuildToDb(tb, ty);
1017 if (rv<0) {
1018 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1019 return rv;
1020 }
1021
1022 }
1023
1024 if (flags & TYPEMAKER2_TYPEFLAGS_WITH_XML) {
1025 rv=TM2C_BuildReadXml(tb, ty);
1026 if (rv<0) {
1027 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1028 return rv;
1029 }
1030
1031 rv=TM2C_BuildWriteXml(tb, ty);
1032 if (rv<0) {
1033 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1034 return rv;
1035 }
1036
1037 rv=TM2C_BuildToXml(tb, ty);
1038 if (rv<0) {
1039 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1040 return rv;
1041 }
1042
1043 rv=TM2C_BuildFromXml(tb, ty);
1044 if (rv<0) {
1045 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1046 return rv;
1047 }
1048 }
1049
1051 rv=TM2C_BuildReadObject(tb, ty);
1052 if (rv<0) {
1053 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1054 return rv;
1055 }
1056
1057 rv=TM2C_BuildWriteObject(tb, ty);
1058 if (rv<0) {
1059 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1060 return rv;
1061 }
1062
1063 rv=TM2C_BuildToObject(tb, ty);
1064 if (rv<0) {
1065 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1066 return rv;
1067 }
1068
1069 rv=TM2C_BuildFromObject(tb, ty);
1070 if (rv<0) {
1071 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1072 return rv;
1073 }
1074
1075 rv=TM2C_BuildCreateColumnList(tb, ty);
1076 if (rv<0) {
1077 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1078 return rv;
1079 }
1080
1081 rv=TM2C_BuildCreateTable(tb, ty);
1082 if (rv<0) {
1083 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1084 return rv;
1085 }
1086
1087 rv=TM2C_BuildCreateObject(tb, ty);
1088 if (rv<0) {
1089 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1090 return rv;
1091 }
1092 }
1093
1094 rv=_buildGetByMember(tb, ty);
1095 if (rv<0) {
1096 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1097 return rv;
1098 }
1099
1100 if (flags & TYPEMAKER2_TYPEFLAGS_WITH_HASH) {
1101 rv=_buildToHashString(tb, ty);
1102 if (rv<0) {
1103 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1104 return rv;
1105 }
1106 }
1107
1108 rv=_buildMemberInlines(tb, ty);
1109 if (rv<0) {
1110 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1111 return rv;
1112 }
1113
1114
1115 rv=_buildSortByMember(tb, ty);
1116 if (rv<0) {
1117 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1118 return rv;
1119 }
1120
1121
1123 rv=TM2C_BuildSignalFunctions(tb, ty);
1124 if (rv<0) {
1125 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1126 return rv;
1127 }
1128 }
1129
1130 if (flags & TYPEMAKER2_TYPEFLAGS_WITH_SLOTS) {
1131 rv=TM2C_BuildSlotFunctions(tb, ty);
1132 if (rv<0) {
1133 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1134 return rv;
1135 }
1136 }
1137
1139 rv=_buildCacheFunctions(tb, ty);
1140 if (rv<0) {
1141 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1142 return rv;
1143 }
1144 }
1145
1146 rv=_buildInlines(tb, ty);
1147 if (rv<0) {
1148 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1149 return rv;
1150 }
1151
1152 rv=_buildEndHeaders(tb, ty);
1153 if (rv<0) {
1154 DBG_INFO(GWEN_LOGDOMAIN, "here (%d)", rv);
1155 return rv;
1156 }
1157
1158 return 0;
1159}
1160
1161
1162
1164{
1166
1169
1170 return tb;
1171}
1172
1173
1174
1175
1176
#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:1084
void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
Definition: buffer.c:650
void GWEN_Buffer_free(GWEN_BUFFER *bf)
Definition: buffer.c:89
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
Definition: buffer.c:989
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, args...)
Definition: debug.h:181
#define DBG_ERROR(dbg_logger, format, args...)
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:35
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)
Definition: tm2c_object.c:140
int TM2C_BuildCreateObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm2c_object.c:198
int TM2C_BuildReadDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm2c_readdb.c:31
int TM2C_BuildFromDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm2c_readdb.c:171
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)
Definition: tm2c_readxml.c:31
int TM2C_BuildFromXml(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm2c_readxml.c:171
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)
Definition: tm2c_typedef.c:31
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)
Definition: tm2c_writedb.c:32
int TM2C_BuildToDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm2c_writedb.c:161
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)
Definition: tm2c_writexml.c:32
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)
Definition: tm_builder_c.c:502
static int _buildToHashString(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:362
static int Typemaker2_Builder_C_Build(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:806
static int _buildGroupApiDoc(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_GROUP *grp, int depth, GWEN_BUFFER *buf)
Definition: tm_builder_c.c:667
static int _buildGetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:165
static int _buildAttach(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:579
static int _buildDefineDefines(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:262
static int _buildInlines(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:447
static int _buildPostHeaders(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:83
static int _buildApiDoc(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:767
static int _buildCacheFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:618
static int _buildSortByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:225
static int _buildFieldIds(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:50
TYPEMAKER2_BUILDER * Typemaker2_Builder_C_new()
static int _buildEndHeaders(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
Definition: tm_builder_c.c:124
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_HeaderLocation_Post
Definition: tm_header.h:32
@ Typemaker2_HeaderLocation_HeaderEnd
Definition: tm_header.h:35
@ Typemaker2_HeaderType_System
Definition: tm_header.h:25
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:668
const char * Typemaker2_Type_GetFieldCountId(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:749
TYPEMAKER2_HEADER_LIST * Typemaker2_Type_GetHeaders(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:650
const char * Typemaker2_Type_GetIdentifier(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:543
uint32_t Typemaker2_Type_GetFlags(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:341
TYPEMAKER2_INLINE_LIST * Typemaker2_Type_GetInlines(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:686
int Typemaker2_Type_GetNonVolatileMemberCount(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:731
const char * Typemaker2_Type_GetPrefix(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:565
TYPEMAKER2_TYPE * Typemaker2_Type_GetExtendsPtr(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:587
TYPEMAKER2_MEMBER_LIST * Typemaker2_Type_GetMembers(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:641
TYPEMAKER2_GROUP_TREE * Typemaker2_Type_GetGroupTree(const TYPEMAKER2_TYPE *ty)
Definition: tm_type.c:722
#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
#define TYPEMAKER2_FLAGS_VOLATILE
Definition: tm_type.h:32
#define TYPEMAKER2_TYPEFLAGS_WITH_HASH
Definition: tm_type.h:69
@ 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_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