38 #include <gwenhywfar/debug.h> 53 TYPEMAKER2_MEMBER_LIST *tml;
61 tm=Typemaker2_Member_List_First(tml);
68 tm=Typemaker2_Member_List_Next(tm);
87 TYPEMAKER2_HEADER_LIST *hl;
97 h=Typemaker2_Header_List_First(hl);
110 h=Typemaker2_Header_List_Next(h);
128 TYPEMAKER2_HEADER_LIST *hl;
138 h=Typemaker2_Header_List_First(hl);
151 h=Typemaker2_Header_List_Next(h);
168 TYPEMAKER2_MEMBER_LIST *tml;
181 tm=Typemaker2_Member_List_First(tml);
215 tm=Typemaker2_Member_List_Next(tm);
227 TYPEMAKER2_MEMBER_LIST *tml;
236 tm=Typemaker2_Member_List_First(tml);
253 tm=Typemaker2_Member_List_Next(tm);
264 TYPEMAKER2_DEFINE_LIST *defines;
269 if (Typemaker2_Define_List_GetCount(defines)) {
276 td=Typemaker2_Define_List_First(defines);
290 if (prefix==
NULL || *prefix==0) {
322 snprintf(numbuf,
sizeof(numbuf)-1,
"%d", k);
323 numbuf[
sizeof(numbuf)-1]=0;
330 ti=Typemaker2_Item_List_Next(ti);
354 td=Typemaker2_Define_List_Next(td);
367 TYPEMAKER2_MEMBER_LIST *tml;
369 const char *sTypePrefix;
382 sTypePrefix, sTypeId);
388 sTypePrefix, sTypeId);
395 tm=Typemaker2_Member_List_First(tml);
398 const char *sMemberName;
431 GWEN_Buffer_AppendArgs(tbuf,
" /* member \"%s\" doesn't have with_hash flag, ignoring */\n", sMemberName);
433 tm=Typemaker2_Member_List_Next(tm);
465 if (content && *content) {
492 ti=Typemaker2_Inline_List_Next(ti);
514 TYPEMAKER2_MEMBER_LIST *tml;
520 tm=Typemaker2_Member_List_First(tml);
535 if (content && *content) {
563 ti=Typemaker2_Inline_List_Next(ti);
567 tm=Typemaker2_Member_List_Next(tm);
585 const char *sTypePrefix;
623 const char *sTypePrefix;
672 TYPEMAKER2_MEMBER_LIST *members;
673 const char *sTypeIdentifier;
674 const char *sTypePrefix;
708 tm=Typemaker2_Member_List_First(members);
711 const char *sMemberName;
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);
744 tm=Typemaker2_Member_List_Next(tm);
749 childGrp=Typemaker2_Group_Tree_GetFirstChild(grp);
758 childGrp=Typemaker2_Group_Tree_GetNext(childGrp);
769 TYPEMAKER2_GROUP_TREE *groupTree;
772 const char *sTypeIdentifier;
784 grp=Typemaker2_Group_Tree_GetFirst(groupTree);
787 grp=Typemaker2_Group_Tree_GetNext(grp);
int TM2C_BuildSlotFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Item_GetName(const TYPEMAKER2_ITEM *p_struct)
#define TYPEMAKER2_TYPEFLAGS_WITH_TREE2
TYPEMAKER2_TYPEMANAGER * Typemaker2_Builder_GetTypeManager(const TYPEMAKER2_BUILDER *tb)
void Typemaker2_Builder_SetBuildFn(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_BUILDER_BUILD_FN fn)
int TM2C_BuildCreateColumnList(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
TYPEMAKER2_TYPE * Typemaker2_Member_GetTypePtr(const TYPEMAKER2_MEMBER *tm)
int TM2C_BuildDestructor(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
uint32_t Typemaker2_Member_GetFlags(const TYPEMAKER2_MEMBER *tm)
int TM2C_BuildTreeGetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
#define TYPEMAKER2_TYPEFLAGS_WITH_HASH
#define TYPEMAKER2_TYPEFLAGS_NODUP
struct GWEN_DB_NODE GWEN_DB_NODE
int Typemaker2_Inline_GetTypeFlagsValue(const TYPEMAKER2_INLINE *th)
void GWEN_DB_Group_free(GWEN_DB_NODE *n)
const char * Typemaker2_Inline_GetContent(const TYPEMAKER2_INLINE *th)
int TM2C_BuildReadXml(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
TYPEMAKER2_HEADER_LIST * Typemaker2_Type_GetHeaders(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Member_GetFieldId(const TYPEMAKER2_MEMBER *tm)
TYPEMAKER2_TYPE * Typemaker2_Type_GetExtendsPtr(const TYPEMAKER2_TYPE *ty)
#define TYPEMAKER2_TYPEFLAGS_NOCOPY
int TM2C_BuildSetterVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildCacheFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildSetter(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Member_GetDescription(const TYPEMAKER2_MEMBER *tm)
int TM2C_BuildConstructor(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Group_GetTitle(TYPEMAKER2_GROUP *gr)
#define TYPEMAKER2_TYPEFLAGS_WITH_XML
static int _buildToHashString(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildSignalFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildGetter(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
struct TYPEMAKER2_GROUP TYPEMAKER2_GROUP
#define TYPEMAKER2_FLAGS_WITH_GETBYMEMBER
static int _buildFieldIds(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
#define TYPEMAKER2_TYPEFLAGS_WITH_SLOTS
struct TYPEMAKER2_DEFINE TYPEMAKER2_DEFINE
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
#define TYPEMAKER2_FLAGS_SORTBYMEMBER
struct TYPEMAKER2_ITEM TYPEMAKER2_ITEM
const char * Typemaker2_Define_GetPrefix(const TYPEMAKER2_DEFINE *p_struct)
void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
void Typemaker2_Builder_AddPrivateDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
int TM2C_BuildReadDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int Typemaker2_Builder_ReplaceVars(const char *s, GWEN_DB_NODE *db, GWEN_BUFFER *dbuf)
int TM2C_BuildDup(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Item_GetValue(const TYPEMAKER2_ITEM *p_struct)
int TM2C_BuildCodeVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildWriteObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildMemberInlines(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
struct TYPEMAKER2_INLINE TYPEMAKER2_INLINE
#define GWEN_ERROR_BAD_DATA
int TM2C_BuildToObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildCreateTable(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildGroupApiDoc(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_GROUP *grp, int depth, GWEN_BUFFER *buf)
int TM2C_BuildProtoSetterVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Define_GetId(const TYPEMAKER2_DEFINE *p_struct)
void Typemaker2_Builder_AddDeclaration(TYPEMAKER2_BUILDER *tb, int access, const char *s)
TYPEMAKER2_INLINE_LIST * Typemaker2_Type_GetInlines(const TYPEMAKER2_TYPE *ty)
static int _buildPostHeaders(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildMacroFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildFromObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Group_GetDescription(TYPEMAKER2_GROUP *gr)
int TM2C_BuildList1Dup(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int Typemaker2_Member_GetMemberPosition(const TYPEMAKER2_MEMBER *tm)
int TM2C_BuildReadObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int Typemaker2_Define_GetStartValue(const TYPEMAKER2_DEFINE *p_struct)
int Typemaker2_Inline_GetTypeFlagsMask(const TYPEMAKER2_INLINE *th)
int TM2C_BuildDefineVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, const char *loc)
int TM2C_BuildWriteDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildSortByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
#define TYPEMAKER2_TYPEFLAGS_WITH_SIGNALS
#define TYPEMAKER2_FLAGS_WITH_HASH
const char * Typemaker2_Type_GetIdentifier(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Builder_AddProtectedDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
int GWEN_Buffer_AppendArgs(GWEN_BUFFER *bf, const char *fmt,...)
#define TYPEMAKER2_TYPEFLAGS_WITH_CACHEFNS
#define TYPEMAKER2_TYPEFLAGS_WITH_TREE
static int Typemaker2_Builder_C_Build(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildCreateObject(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildApiDoc(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildTypedef(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
TYPEMAKER2_ITEM_LIST * Typemaker2_Define_GetItems(const TYPEMAKER2_DEFINE *p_struct)
int Typemaker2_Type_GetNonVolatileMemberCount(const TYPEMAKER2_TYPE *ty)
static int _buildDefineDefines(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
struct TYPEMAKER2_BUILDER TYPEMAKER2_BUILDER
void TM2C_DelVirtualFnsFromSlots(TYPEMAKER2_TYPE *ty)
TYPEMAKER2_MEMBER_LIST * Typemaker2_Type_GetMembers(const TYPEMAKER2_TYPE *ty)
int TM2C_BuildProtoGetterVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
int TM2C_BuildEnumToString(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildTree2GetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
void Typemaker2_Builder_AddCode(TYPEMAKER2_BUILDER *tb, const char *s)
static int _buildAttach(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildWriteXml(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
#define DBG_ERROR(dbg_logger, format, args...)
struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE
void Typemaker2_Builder_AddPublicDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
int TM2C_BuildToDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
struct TYPEMAKER2_TYPEMANAGER TYPEMAKER2_TYPEMANAGER
TYPEMAKER2_BUILDER * Typemaker2_Builder_C_new()
int TM2C_BuildDefineEnums(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
static int _buildInlines(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int Typemaker2_Inline_GetLocation(const TYPEMAKER2_INLINE *th)
#define DBG_INFO(dbg_logger, format, args...)
int TM2C_BuildGetterVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
void Typemaker2_Builder_AddLibraryDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
int TM2C_BuildList1SortByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
static int _buildGetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
#define TYPEMAKER2_TYPEFLAGS_WITH_REFCOUNT
const char * Typemaker2_Type_GetPrefix(const TYPEMAKER2_TYPE *ty)
int Typemaker2_Inline_GetAccess(const TYPEMAKER2_INLINE *th)
TYPEMAKER2_GROUP * Typemaker2_Member_GetGroupPtr(const TYPEMAKER2_MEMBER *tm)
int TM2C_BuildStruct(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_AddVirtualFnsFromSlots(TYPEMAKER2_TYPE *ty)
TYPEMAKER2_BUILDER * Typemaker2_Builder_new()
const char * Typemaker2_TypeManager_GetApiDeclaration(const TYPEMAKER2_TYPEMANAGER *tym)
struct TYPEMAKER2_MEMBER TYPEMAKER2_MEMBER
int TM2C_BuildList1GetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
int TM2C_SetEnumStringFns(TYPEMAKER2_TYPE *ty)
int TM2C_BuildFromXml(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
TYPEMAKER2_GROUP_TREE * Typemaker2_Type_GetGroupTree(const TYPEMAKER2_TYPE *ty)
int TM2C_BuildFromDb(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
uint32_t Typemaker2_Type_GetFlags(const TYPEMAKER2_TYPE *ty)
int TM2C_BuildToXml(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Member_GetName(const TYPEMAKER2_MEMBER *tm)
static int _buildEndHeaders(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
#define TYPEMAKER2_FLAGS_VOLATILE
#define TYPEMAKER2_TYPEFLAGS_WITH_OBJECT
TYPEMAKER2_DEFINE_LIST * Typemaker2_Type_GetDefines(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetFieldCountId(const TYPEMAKER2_TYPE *ty)
int TM2C_BuildEnumFromString(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
int TM2C_BuildProtoVirtualFns(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int Typemaker2_Builder_Invoke_ToHashStringFn(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm, const char *src, const char *dst, GWEN_BUFFER *dbuf)
#define TYPEMAKER2_TYPEFLAGS_WITH_DB
int Typemaker2_Define_GetMode(const TYPEMAKER2_DEFINE *p_struct)
GWEN_DB_NODE * Typemaker2_Builder_CreateDbForCall(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm, const char *src, const char *dst)
int TM2C_BuildCopy(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
#define TYPEMAKER2_TYPEFLAGS_WITH_LIST1