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;
139 h=Typemaker2_Header_List_First(hl);
154 h=Typemaker2_Header_List_Next(h);
170 TYPEMAKER2_MEMBER_LIST *tml;
183 tm=Typemaker2_Member_List_First(tml);
217 tm=Typemaker2_Member_List_Next(tm);
229 TYPEMAKER2_MEMBER_LIST *tml;
238 tm=Typemaker2_Member_List_First(tml);
255 tm=Typemaker2_Member_List_Next(tm);
266 TYPEMAKER2_DEFINE_LIST *defines;
271 if (Typemaker2_Define_List_GetCount(defines)) {
278 td=Typemaker2_Define_List_First(defines);
292 if (prefix==
NULL || *prefix==0) {
324 snprintf(numbuf,
sizeof(numbuf)-1,
"%d", k);
325 numbuf[
sizeof(numbuf)-1]=0;
332 ti=Typemaker2_Item_List_Next(ti);
356 td=Typemaker2_Define_List_Next(td);
369 TYPEMAKER2_MEMBER_LIST *tml;
371 const char *sTypePrefix;
384 sTypePrefix, sTypeId);
390 sTypePrefix, sTypeId);
397 tm=Typemaker2_Member_List_First(tml);
400 const char *sMemberName;
433 GWEN_Buffer_AppendArgs(tbuf,
" /* member \"%s\" doesn't have with_hash flag, ignoring */\n", sMemberName);
435 tm=Typemaker2_Member_List_Next(tm);
467 if (content && *content) {
494 ti=Typemaker2_Inline_List_Next(ti);
517 TYPEMAKER2_MEMBER_LIST *tml;
523 tm=Typemaker2_Member_List_First(tml);
526 uint32_t memberFlags;
531 if (mty && mty!=structType && mty!=ty) {
541 if (content && *content) {
569 ti=Typemaker2_Inline_List_Next(ti);
573 tm=Typemaker2_Member_List_Next(tm);
591 const char *sTypePrefix;
629 const char *sTypePrefix;
678 TYPEMAKER2_MEMBER_LIST *members;
679 const char *sTypeIdentifier;
680 const char *sTypePrefix;
714 tm=Typemaker2_Member_List_First(members);
717 const char *sMemberName;
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);
750 tm=Typemaker2_Member_List_Next(tm);
755 childGrp=Typemaker2_Group_Tree_GetFirstChild(grp);
764 childGrp=Typemaker2_Group_Tree_GetNext(childGrp);
775 TYPEMAKER2_GROUP_TREE *groupTree;
778 const char *sTypeIdentifier;
790 grp=Typemaker2_Group_Tree_GetFirst(groupTree);
793 grp=Typemaker2_Group_Tree_GetNext(grp);
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
int GWEN_Buffer_AppendArgs(GWEN_BUFFER *bf, const char *fmt,...)
void GWEN_Buffer_Reset(GWEN_BUFFER *bf)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
int GWEN_Buffer_AppendString(GWEN_BUFFER *bf, const char *buffer)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
void GWEN_DB_Group_free(GWEN_DB_NODE *n)
struct GWEN_DB_NODE GWEN_DB_NODE
#define DBG_INFO(dbg_logger, format,...)
#define DBG_ERROR(dbg_logger, format,...)
#define GWEN_ERROR_BAD_DATA
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
int TM2C_BuildConstructor(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildCopy(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildDestructor(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildDup(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildEnumToString(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_SetEnumStringFns(TYPEMAKER2_TYPE *ty)
int TM2C_BuildDefineEnums(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildEnumFromString(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildGetter(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildList1Dup(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildList1GetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
int TM2C_BuildList1SortByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
int TM2C_BuildMacroFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildCreateColumnList(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
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)
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)
int TM2C_BuildSignalFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_AddVirtualFnsFromSlots(TYPEMAKER2_TYPE *ty)
void TM2C_DelVirtualFnsFromSlots(TYPEMAKER2_TYPE *ty)
int TM2C_BuildSlotFunctions(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildStruct(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty)
int TM2C_BuildTreeGetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
int TM2C_BuildTree2GetByMember(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm)
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()
void Typemaker2_Builder_AddCode(TYPEMAKER2_BUILDER *tb, const char *s)
void Typemaker2_Builder_AddPublicDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
int Typemaker2_Builder_ReplaceVars(const char *s, GWEN_DB_NODE *db, GWEN_BUFFER *dbuf)
void Typemaker2_Builder_AddLibraryDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
GWEN_DB_NODE * Typemaker2_Builder_CreateDbForCall(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_TYPE *ty, TYPEMAKER2_MEMBER *tm, const char *src, const char *dst)
void Typemaker2_Builder_AddProtectedDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
void Typemaker2_Builder_AddDeclaration(TYPEMAKER2_BUILDER *tb, int access, const char *s)
void Typemaker2_Builder_SetBuildFn(TYPEMAKER2_BUILDER *tb, TYPEMAKER2_BUILDER_BUILD_FN fn)
void Typemaker2_Builder_AddPrivateDeclaration(TYPEMAKER2_BUILDER *tb, const char *s)
TYPEMAKER2_TYPEMANAGER * Typemaker2_Builder_GetTypeManager(const TYPEMAKER2_BUILDER *tb)
struct TYPEMAKER2_BUILDER TYPEMAKER2_BUILDER
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)
int Typemaker2_Define_GetStartValue(const TYPEMAKER2_DEFINE *p_struct)
int Typemaker2_Define_GetMode(const TYPEMAKER2_DEFINE *p_struct)
const char * Typemaker2_Define_GetId(const TYPEMAKER2_DEFINE *p_struct)
TYPEMAKER2_ITEM_LIST * Typemaker2_Define_GetItems(const TYPEMAKER2_DEFINE *p_struct)
@ Typemaker2_Define_Mode_BitField
@ Typemaker2_Define_Mode_Sequence
struct TYPEMAKER2_DEFINE TYPEMAKER2_DEFINE
const char * Typemaker2_Group_GetTitle(TYPEMAKER2_GROUP *gr)
const char * Typemaker2_Group_GetDescription(TYPEMAKER2_GROUP *gr)
struct TYPEMAKER2_GROUP TYPEMAKER2_GROUP
int Typemaker2_Inline_GetLocation(const TYPEMAKER2_INLINE *th)
const char * Typemaker2_Inline_GetContent(const TYPEMAKER2_INLINE *th)
int Typemaker2_Inline_GetAccess(const TYPEMAKER2_INLINE *th)
int Typemaker2_Inline_GetTypeFlagsMask(const TYPEMAKER2_INLINE *th)
int Typemaker2_Inline_GetTypeFlagsValue(const TYPEMAKER2_INLINE *th)
@ Typemaker2_InlineLocation_Header
@ Typemaker2_InlineLocation_Code
struct TYPEMAKER2_INLINE TYPEMAKER2_INLINE
const char * Typemaker2_Item_GetName(const TYPEMAKER2_ITEM *p_struct)
const char * Typemaker2_Item_GetValue(const TYPEMAKER2_ITEM *p_struct)
struct TYPEMAKER2_ITEM TYPEMAKER2_ITEM
int Typemaker2_Member_GetMemberPosition(const TYPEMAKER2_MEMBER *tm)
const char * Typemaker2_Member_GetFieldId(const TYPEMAKER2_MEMBER *tm)
const char * Typemaker2_Member_GetDescription(const TYPEMAKER2_MEMBER *tm)
TYPEMAKER2_TYPE * Typemaker2_Member_GetTypePtr(const TYPEMAKER2_MEMBER *tm)
TYPEMAKER2_GROUP * Typemaker2_Member_GetGroupPtr(const TYPEMAKER2_MEMBER *tm)
uint32_t Typemaker2_Member_GetFlags(const TYPEMAKER2_MEMBER *tm)
const char * Typemaker2_Member_GetName(const TYPEMAKER2_MEMBER *tm)
struct TYPEMAKER2_MEMBER TYPEMAKER2_MEMBER
TYPEMAKER2_DEFINE_LIST * Typemaker2_Type_GetDefines(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetFieldCountId(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_HEADER_LIST * Typemaker2_Type_GetHeaders(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetIdentifier(const TYPEMAKER2_TYPE *ty)
uint32_t Typemaker2_Type_GetFlags(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_INLINE_LIST * Typemaker2_Type_GetInlines(const TYPEMAKER2_TYPE *ty)
int Typemaker2_Type_GetNonVolatileMemberCount(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetPrefix(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_TYPE * Typemaker2_Type_GetExtendsPtr(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_MEMBER_LIST * Typemaker2_Type_GetMembers(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_GROUP_TREE * Typemaker2_Type_GetGroupTree(const TYPEMAKER2_TYPE *ty)
#define TYPEMAKER2_TYPEFLAGS_WITH_REFCOUNT
#define TYPEMAKER2_TYPEFLAGS_WITH_SIGNALS
struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE
#define TYPEMAKER2_TYPEFLAGS_WITH_CACHEFNS
#define TYPEMAKER2_TYPEFLAGS_WITH_XML
#define TYPEMAKER2_TYPEFLAGS_NODUP
#define TYPEMAKER2_TYPEFLAGS_WITH_LIST1
#define TYPEMAKER2_TYPEFLAGS_WITH_DB
#define TYPEMAKER2_FLAGS_WITH_HASH
#define TYPEMAKER2_FLAGS_WITH_GETBYMEMBER
@ TypeMaker2_Access_Private
@ TypeMaker2_Access_Library
@ TypeMaker2_Access_Protected
@ TypeMaker2_Access_Public
#define TYPEMAKER2_FLAGS_VOLATILE
#define TYPEMAKER2_TYPEFLAGS_WITH_HASH
#define TYPEMAKER2_FLAGS_SORTBYMEMBER
#define TYPEMAKER2_TYPEFLAGS_WITH_OBJECT
#define TYPEMAKER2_TYPEFLAGS_WITH_TREE
#define TYPEMAKER2_TYPEFLAGS_WITH_SLOTS
#define TYPEMAKER2_TYPEFLAGS_NOCOPY
#define TYPEMAKER2_TYPEFLAGS_WITH_TREE2
const char * Typemaker2_TypeManager_GetApiDeclaration(const TYPEMAKER2_TYPEMANAGER *tym)
struct TYPEMAKER2_TYPEMANAGER TYPEMAKER2_TYPEMANAGER