15#include "tm_typemanager_p.h"
17#include <gwenhywfar/debug.h>
18#include <gwenhywfar/misc.h>
19#include <gwenhywfar/directory.h>
26#define TM_TYPEMANAGER_XMLFLAGS (\
27 GWEN_XML_FLAGS_DEFAULT | \
28 GWEN_XML_FLAGS_HANDLE_HEADERS | \
29 GWEN_XML_FLAGS_HANDLE_OPEN_HTMLTAGS \
41 tym->typeList=Typemaker2_Type_List_new();
43 tym->lang=strdup(
"c");
54 Typemaker2_Type_List_free(tym->typeList);
85 return tym->apiDeclaration;
93 free(tym->apiDeclaration);
95 tym->apiDeclaration=strdup(s);
97 tym->apiDeclaration=
NULL;
113 Typemaker2_Type_List_Add(ty, tym->typeList);
123 ty=Typemaker2_Type_List_First(tym->typeList);
128 if (n && strcasecmp(s, n)==0)
130 ty=Typemaker2_Type_List_Next(ty);
182 "File [%s] does not contain a tm2 element",
194 if (s && *s && strcasecmp(s, tym->lang)==0)
200 "File [%s] does not contain a <typedef> element for type [%s] and language [%s]",
234 const char *baseType,
235 const char *nType,
const char *nPrefix)
247 tbuf[
sizeof(tbuf)-1]=0;
251 tbuf[
sizeof(tbuf)-1]=0;
255 tbuf[
sizeof(tbuf)-1]=0;
319 "File [%s] does not contain a tm2 element",
329 "File [%s] does not contain a type element",
359 Typemaker2_Type_List_Add(ty, tym->typeList);
394 TYPEMAKER2_TYPE_LIST2 *tlist2)
400 TYPEMAKER2_TYPE_LIST2 *tl;
401 TYPEMAKER2_TYPE_LIST2_ITERATOR *it;
417 "File [%s] does not contain a tm2 element",
427 "File [%s] does not contain a type element",
434 tl=Typemaker2_Type_List2_new();
445 Typemaker2_Type_List2_free(tl);
459 Typemaker2_Type_List_Add(ty, tym->typeList);
460 Typemaker2_Type_List2_PushBack(tl, ty);
477 it=Typemaker2_Type_List2_First(tl);
479 ty=Typemaker2_Type_List2Iterator_Data(it);
485 Typemaker2_Type_List2Iterator_free(it);
486 Typemaker2_Type_List2_free(tl);
491 ty=Typemaker2_Type_List2Iterator_Next(it);
493 Typemaker2_Type_List2Iterator_free(it);
497 it=Typemaker2_Type_List2_First(tl);
499 ty=Typemaker2_Type_List2Iterator_Data(it);
505 Typemaker2_Type_List2Iterator_free(it);
506 Typemaker2_Type_List2_free(tl);
511 Typemaker2_Type_List2_PushBack(tlist2, ty);
513 ty=Typemaker2_Type_List2Iterator_Next(it);
515 Typemaker2_Type_List2Iterator_free(it);
519 Typemaker2_Type_List2_free(tl);
527 TYPEMAKER2_TYPE_LIST2 *tlist2)
548 "File [%s] does not contain a tm2 element",
558 "File [%s] does not contain a type element",
588 Typemaker2_Type_List_Add(ty, tym->typeList);
589 Typemaker2_Type_List2_PushBack(tlist2, ty);
667 TYPEMAKER2_MEMBER_LIST *ml;
675 m=Typemaker2_Member_List_First(ml);
709 m=Typemaker2_Member_List_Next(m);
713 m=Typemaker2_Member_List_First(ml);
743 m=Typemaker2_Member_List_Next(m);
788 Typemaker2_Type_List_Add(ty, tym->typeList);
823 for (i=0; i<indent; i++)
825 fprintf(f,
"TypeManager\n");
827 for (i=0; i<indent; i++)
829 fprintf(f,
"Types\n");
831 ty=Typemaker2_Type_List_First(tym->typeList);
834 ty=Typemaker2_Type_List_Next(ty);
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
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)
#define DBG_INFO(dbg_logger, format,...)
#define DBG_ERROR(dbg_logger, format,...)
GWENHYWFAR_API int GWEN_Directory_FindFileInPaths(const GWEN_STRINGLIST *paths, const char *filePath, GWEN_BUFFER *fbuf)
#define GWEN_ERROR_NOT_FOUND
#define GWEN_ERROR_NO_DATA
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
#define GWEN_FREE_OBJECT(varname)
#define GWEN_NEW_OBJECT(typ, varname)
void GWEN_StringList_free(GWEN_STRINGLIST *sl)
int GWEN_StringList_AppendString(GWEN_STRINGLIST *sl, const char *s, int take, int checkDouble)
GWEN_STRINGLIST * GWEN_StringList_new(void)
struct TYPEMAKER2_ENUM TYPEMAKER2_ENUM
void Typemaker2_Member_SetFieldId(TYPEMAKER2_MEMBER *tm, const char *s)
const char * Typemaker2_Member_GetEnumId(const TYPEMAKER2_MEMBER *tm)
void Typemaker2_Member_SetTypePtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Member_GetTypeName(const TYPEMAKER2_MEMBER *tm)
TYPEMAKER2_TYPE * Typemaker2_Member_GetTypePtr(const TYPEMAKER2_MEMBER *tm)
void Typemaker2_Member_SetEnumPtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_ENUM *te)
TYPEMAKER2_ENUM * Typemaker2_Member_GetEnumPtr(const TYPEMAKER2_MEMBER *tm)
uint32_t Typemaker2_Member_GetFlags(const TYPEMAKER2_MEMBER *tm)
void Typemaker2_Member_SetMemberPosition(TYPEMAKER2_MEMBER *tm, int i)
const char * Typemaker2_Member_GetName(const TYPEMAKER2_MEMBER *tm)
struct TYPEMAKER2_MEMBER TYPEMAKER2_MEMBER
TYPEMAKER2_ENUM * Typemaker2_Type_FindEnum(TYPEMAKER2_TYPE *ty, const char *s)
void Typemaker2_Type_SetType(TYPEMAKER2_TYPE *ty, int i)
TYPEMAKER2_TYPE * Typemaker2_Type_GetInheritsPtr(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetIdentifier(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetIdentifier(TYPEMAKER2_TYPE *ty, const char *s)
void Typemaker2_Type_SetInheritsPtr(TYPEMAKER2_TYPE *ty, TYPEMAKER2_TYPE *p)
void Typemaker2_Type_Dump(TYPEMAKER2_TYPE *ty, FILE *f, int indent)
void Typemaker2_Type_SetName(TYPEMAKER2_TYPE *ty, const char *s)
uint32_t Typemaker2_Type_GetFlags(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetPrefix(TYPEMAKER2_TYPE *ty, const char *s)
const char * Typemaker2_Type_GetExtends(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_TYPE * Typemaker2_Type_GetBaseTypePtr(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_free(TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetName(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetPrefix(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetBaseTypePtr(TYPEMAKER2_TYPE *ty, TYPEMAKER2_TYPE *p)
TYPEMAKER2_TYPE * Typemaker2_Type_GetExtendsPtr(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_MEMBER_LIST * Typemaker2_Type_GetMembers(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetBaseType(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetInherits(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetBaseType(TYPEMAKER2_TYPE *ty, const char *s)
void Typemaker2_Type_SetExtends(TYPEMAKER2_TYPE *ty, const char *s)
void Typemaker2_Type_SetExtendsPtr(TYPEMAKER2_TYPE *ty, TYPEMAKER2_TYPE *p)
void Typemaker2_Type_SetNonVolatileMemberCount(TYPEMAKER2_TYPE *ty, int i)
TYPEMAKER2_TYPE * Typemaker2_Type_new()
int Typemaker2_Type_readXml(TYPEMAKER2_TYPE *ty, GWEN_XMLNODE *node, const char *wantedLang)
void Typemaker2_Type_SetFieldCountId(TYPEMAKER2_TYPE *ty, const char *s)
struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE
#define TYPEMAKER2_TYPEFLAGS_WITH_LIST1
#define TYPEMAKER2_FLAGS_ENUM
@ TypeMaker2_Type_Pointer
#define TYPEMAKER2_FLAGS_VOLATILE
#define TYPEMAKER2_TYPEFLAGS_WITH_LIST2
#define TYPEMAKER2_TYPEFLAGS_WITH_TREE
int Typemaker2_TypeManager_LoadTypeFile2(TYPEMAKER2_TYPEMANAGER *tym, const char *fileName, TYPEMAKER2_TYPE_LIST2 *tlist2)
int Typemaker2_TypeManager_SetMemberTypePtrs(TYPEMAKER2_TYPEMANAGER *tym, TYPEMAKER2_TYPE *ty)
#define TM_TYPEMANAGER_XMLFLAGS
void Typemaker2_TypeManager_AddFolder(TYPEMAKER2_TYPEMANAGER *tym, const char *s)
void Typemaker2_TypeManager_SetLanguage(TYPEMAKER2_TYPEMANAGER *tym, const char *s)
int Typemaker2_TypeManager_LoadTypeFileNoLookup(TYPEMAKER2_TYPEMANAGER *tym, const char *fileName, TYPEMAKER2_TYPE_LIST2 *tlist2)
void Typemaker2_TypeManager_SetApiDeclaration(TYPEMAKER2_TYPEMANAGER *tym, const char *s)
TYPEMAKER2_TYPE * Typemaker2_TypeManager_FindType(TYPEMAKER2_TYPEMANAGER *tym, const char *s)
TYPEMAKER2_TYPE * Typemaker2_TypeManager_LoadTypeFile(TYPEMAKER2_TYPEMANAGER *tym, const char *fileName)
int Typemaker2_TypeManager_MakeTypeDerivatives(TYPEMAKER2_TYPEMANAGER *tym, TYPEMAKER2_TYPE *ty, const char *baseType, const char *nType, const char *nPrefix)
int Typemaker2_TypeManager_MakeTypeList1(TYPEMAKER2_TYPEMANAGER *tym, TYPEMAKER2_TYPE *ty)
const char * Typemaker2_TypeManager_GetLanguage(const TYPEMAKER2_TYPEMANAGER *tym)
void Typemaker2_TypeManager_AddType(TYPEMAKER2_TYPEMANAGER *tym, TYPEMAKER2_TYPE *ty)
TYPEMAKER2_TYPE * Typemaker2_TypeManager_GetType(TYPEMAKER2_TYPEMANAGER *tym, const char *s)
TYPEMAKER2_TYPE * Typemaker2_TypeManager_LoadType(TYPEMAKER2_TYPEMANAGER *tym, const char *typeName)
int Typemaker2_TypeManager_MakeTypeList2(TYPEMAKER2_TYPEMANAGER *tym, TYPEMAKER2_TYPE *ty)
void Typemaker2_TypeManager_free(TYPEMAKER2_TYPEMANAGER *tym)
const char * Typemaker2_TypeManager_GetApiDeclaration(const TYPEMAKER2_TYPEMANAGER *tym)
TYPEMAKER2_TYPEMANAGER * Typemaker2_TypeManager_new()
void Typemaker2_TypeManager_Dump(TYPEMAKER2_TYPEMANAGER *tym, FILE *f, int indent)
int Typemaker2_TypeManager_SetTypePtrs(TYPEMAKER2_TYPEMANAGER *tym, TYPEMAKER2_TYPE *ty)
int Typemaker2_TypeManager_MakeTypeTree(TYPEMAKER2_TYPEMANAGER *tym, TYPEMAKER2_TYPE *ty)
struct TYPEMAKER2_TYPEMANAGER TYPEMAKER2_TYPEMANAGER
const char * GWEN_XMLNode_GetProperty(const GWEN_XMLNODE *n, const char *name, const char *defaultValue)
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
GWEN_XMLNODE * GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data)
GWEN_XMLNODE * GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
void GWEN_XMLNode_free(GWEN_XMLNODE *n)
struct GWEN__XMLNODE GWEN_XMLNODE
GWENHYWFAR_API int GWEN_XML_ReadFile(GWEN_XMLNODE *n, const char *filepath, uint32_t flags)