18#include <gwenhywfar/debug.h>
19#include <gwenhywfar/misc.h>
40 ty->headers=Typemaker2_Header_List_new();
41 ty->enums=Typemaker2_Enum_List_new();
42 ty->defines=Typemaker2_Define_List_new();
43 ty->codeDefs=Typemaker2_Code_List_new();
44 ty->inlines=Typemaker2_Inline_List_new();
45 ty->virtualFns=Typemaker2_VirtualFn_List_new();
46 ty->signals=Typemaker2_Signal_List_new();
47 ty->slots=Typemaker2_Slot_List_new();
55 ty->members=Typemaker2_Member_List_new();
57 ty->groupTree=Typemaker2_Group_Tree_new();
69 if (ty->refCount==1) {
78 free(ty->defaultValue);
79 free(ty->presetValue);
82 free(ty->baseFileName);
88 Typemaker2_Header_List_free(ty->headers);
89 Typemaker2_Enum_List_free(ty->enums);
90 Typemaker2_Define_List_free(ty->defines);
91 Typemaker2_Code_List_free(ty->codeDefs);
92 Typemaker2_Inline_List_free(ty->inlines);
93 Typemaker2_VirtualFn_List_free(ty->virtualFns);
94 Typemaker2_Signal_List_free(ty->signals);
95 Typemaker2_Slot_List_free(ty->slots);
103 Typemaker2_Member_List_free(ty->members);
104 Typemaker2_Group_Tree_free(ty->groupTree);
106 free(ty->fieldCountId);
121 assert(ty->refCount);
130 assert(ty->refCount);
139 assert(ty->refCount);
152 assert(ty->refCount);
161 assert(ty->refCount);
174 assert(ty->refCount);
189 assert(ty->refCount);
198 assert(ty->refCount);
200 if (ty->aqdb_type==
NULL && ty->extendsPtr)
203 return ty->aqdb_type;
211 assert(ty->refCount);
214 ty->aqdb_type=strdup(s);
224 assert(ty->refCount);
226 return ty->baseFileName;
234 assert(ty->refCount);
235 free(ty->baseFileName);
237 ty->baseFileName=strdup(s);
239 ty->baseFileName=
NULL;
247 assert(ty->refCount);
257 assert(ty->refCount);
260 ty->freeHook=strdup(s);
270 assert(ty->refCount);
279 assert(ty->refCount);
282 ty->extends=strdup(s);
292 assert(ty->refCount);
301 assert(ty->refCount);
312 assert(ty->refCount);
314 if (ty->baseType==
NULL && ty->extendsPtr)
325 assert(ty->refCount);
328 ty->baseType=strdup(s);
338 assert(ty->refCount);
340 if (ty->inherits==
NULL && ty->extendsPtr)
351 assert(ty->refCount);
354 ty->inherits=strdup(s);
364 assert(ty->refCount);
366 if (ty->flags==0 && ty->extendsPtr)
377 assert(ty->refCount);
386 assert(ty->refCount);
388 if (ty->setFlags==0 && ty->extendsPtr)
399 assert(ty->refCount);
408 assert(ty->refCount);
410 if (ty->getFlags==0 && ty->extendsPtr)
421 assert(ty->refCount);
430 assert(ty->refCount);
432 if (ty->dupFlags==0 && ty->extendsPtr)
443 assert(ty->refCount);
452 assert(ty->refCount);
454 if (ty->copyFlags==0 && ty->extendsPtr)
457 return ty->copyFlags;
465 assert(ty->refCount);
474 assert(ty->refCount);
487 assert(ty->refCount);
496 assert(ty->refCount);
501 return ty->structAccess;
509 assert(ty->refCount);
518 assert(ty->refCount);
519 return ty->usePrivateConstructor;
527 assert(ty->refCount);
528 ty->usePrivateConstructor=i;
536 assert(ty->refCount);
538 if (ty->defaultValue==
NULL && ty->extendsPtr)
541 return ty->defaultValue;
549 assert(ty->refCount);
550 free(ty->defaultValue);
552 ty->defaultValue=strdup(s);
554 ty->defaultValue=
NULL;
562 assert(ty->refCount);
564 if (ty->presetValue==
NULL && ty->extendsPtr)
567 return ty->presetValue;
575 assert(ty->refCount);
576 free(ty->presetValue);
578 ty->presetValue=strdup(s);
580 ty->presetValue=
NULL;
588 assert(ty->refCount);
589 return ty->identifier;
597 assert(ty->refCount);
598 free(ty->identifier);
600 ty->identifier=strdup(s);
610 assert(ty->refCount);
619 assert(ty->refCount);
622 ty->prefix=strdup(s);
632 assert(ty->refCount);
633 return ty->extendsPtr;
641 assert(ty->refCount);
650 assert(ty->refCount);
651 return ty->inheritsPtr;
659 assert(ty->refCount);
668 assert(ty->refCount);
669 return ty->baseTypePtr;
677 assert(ty->refCount);
686 assert(ty->refCount);
695 assert(ty->refCount);
704 assert(ty->refCount);
713 assert(ty->refCount);
722 assert(ty->refCount);
731 assert(ty->refCount);
740 assert(ty->refCount);
741 return ty->virtualFns;
749 assert(ty->refCount);
758 assert(ty->refCount);
767 assert(ty->refCount);
768 return ty->groupTree;
776 assert(ty->refCount);
777 return ty->nonVolatileMemberCount;
785 assert(ty->refCount);
786 ty->nonVolatileMemberCount=i;
794 assert(ty->refCount);
795 return ty->fieldCountId;
803 assert(ty->refCount);
804 free(ty->fieldCountId);
806 ty->fieldCountId=strdup(s);
808 ty->fieldCountId=
NULL;
815 const char *wantedLang)
827 if (strcasecmp(s,
"member")==0) {
841 Typemaker2_Member_List_Add(tm, ty->members);
843 else if (strcasecmp(s,
"group")==0) {
855 Typemaker2_Group_Tree_AddChild(parentGroup, group);
884 if (strcasecmp(s,
"opaque")==0)
886 else if (strcasecmp(s,
"pointer")==0)
888 else if (strcasecmp(s,
"array")==0)
932 DBG_ERROR(0,
"Invalid structAcces entry [%s]", s);
962 Typemaker2_Header_List_Add(th, ty->headers);
985 Typemaker2_Group_Tree_Clear(ty->groupTree);
990 Typemaker2_Group_Tree_Add(ty->groupTree, rootGroup);
1026 Typemaker2_Code_List_Add(tc, ty->codeDefs);
1041 Typemaker2_Inline_List_Add(ti, ty->inlines);
1068 Typemaker2_Enum_List_Add(te, ty->enums);
1095 Typemaker2_Define_List_Add(td, ty->defines);
1117 Typemaker2_VirtualFn_List_Add(vf, ty->virtualFns);
1157 while (nnnn && i<3) {
1169 Typemaker2_Signal_List_Add(sig, ty->signals);
1211 while (nnnn && i<3) {
1223 Typemaker2_Slot_List_Add(slot, ty->slots);
1289 const char *s1, *s2;
1291 for (i=0; i<indent; i++)
1293 fprintf(f,
"Type\n");
1295 for (i=0; i<indent+2; i++)
1297 fprintf(f,
"Name : %s\n", (ty->name)?(ty->name):
"<null>");
1299 for (i=0; i<indent+2; i++)
1301 fprintf(f,
"Identifier: %s\n", (ty->identifier)?(ty->identifier):
"<null>");
1303 for (i=0; i<indent+2; i++)
1305 fprintf(f,
"AEDB Type : %s\n", (ty->aqdb_type)?(ty->aqdb_type):
"<null>");
1307 for (i=0; i<indent+2; i++)
1309 fprintf(f,
"Extends : %s\n", (ty->extends)?(ty->extends):
"<null>");
1311 for (i=0; i<indent+2; i++)
1315 fprintf(f,
"Inherits : %s [%s]\n", s1?s1:
"<null>", s2?s2:
"<null>");
1317 for (i=0; i<indent+2; i++)
1319 fprintf(f,
"BaseType : %s\n", (ty->baseType)?(ty->baseType):
"<null>");
1321 for (i=0; i<indent+2; i++)
1323 fprintf(f,
"Prefix : %s\n", (ty->prefix)?(ty->prefix):
"<null>");
1325 for (i=0; i<indent+2; i++)
1329 for (i=0; i<indent+2; i++)
1333 for (i=0; i<indent+2; i++)
1337 for (i=0; i<indent+2; i++)
1341 for (i=0; i<indent+2; i++)
1345 for (i=0; i<indent+2; i++)
1349 for (i=0; i<indent+2; i++)
1351 s1=ty->defaultValue;
1353 fprintf(f,
"Default : %s [%s]\n", s1?s1:
"<null>", s2?s2:
"<null>");
1355 for (i=0; i<indent+2; i++)
1359 fprintf(f,
"Preset : %s [%s]\n", s1?s1:
"<null>", s2?s2:
"<null>");
1361 for (i=0; i<indent+2; i++)
1363 fprintf(f,
"Members\n");
1364 tm=Typemaker2_Member_List_First(ty->members);
1366 for (i=0; i<indent+4; i++)
1368 fprintf(f,
"none\n");
1373 tm=Typemaker2_Member_List_Next(tm);
1376 for (i=0; i<indent+2; i++)
1378 fprintf(f,
"Field Count Id: %s\n", (ty->fieldCountId)?(ty->fieldCountId):
"<null>");
1380 for (i=0; i<indent+2; i++)
1382 fprintf(f,
"Descript. : %s\n", (ty->descr)?(ty->descr):
"<null>");
1394 te=Typemaker2_Enum_List_First(ty->enums);
1399 if (n && strcasecmp(s, n)==0)
1401 te=Typemaker2_Enum_List_Next(te);
1426 if (s && strcasecmp(s,
id)==0) {
1430 tc=Typemaker2_Code_List_Next(tc);
1435 tc=Typemaker2_Code_List_First(ty->codeDefs);
1440 if (s && strcasecmp(s,
id)==0) {
1444 tc=Typemaker2_Code_List_Next(tc);
GWEN_BUFFER * GWEN_Buffer_new(char *buffer, uint32_t size, uint32_t used, int take)
void GWEN_Buffer_free(GWEN_BUFFER *bf)
char * GWEN_Buffer_GetStart(const GWEN_BUFFER *bf)
#define DBG_INFO(dbg_logger, format,...)
#define DBG_ERROR(dbg_logger, format,...)
#define GWEN_ERROR_INVALID
#define GWEN_ERROR_BAD_DATA
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
#define GWEN_LIST_FINI(t, element)
#define GWEN_LIST_FUNCTIONS(t, pr)
#define GWEN_LIST_INIT(t, element)
#define GWEN_LIST2_FUNCTIONS(t, pr)
#define GWEN_FREE_OBJECT(varname)
#define GWEN_NEW_OBJECT(typ, varname)
void GWEN_StringList_free(GWEN_STRINGLIST *sl)
GWEN_STRINGLIST * GWEN_StringList_new(void)
uint32_t Typemaker2_Code_GetMemberFlagsValueInt(const TYPEMAKER2_CODE *p_struct)
void Typemaker2_Code_SetMemberFlagsMaskInt(TYPEMAKER2_CODE *p_struct, uint32_t p_src)
uint32_t Typemaker2_Code_GetMemberFlagsMaskInt(const TYPEMAKER2_CODE *p_struct)
const char * Typemaker2_Code_GetMemberFlagsMask(const TYPEMAKER2_CODE *p_struct)
TYPEMAKER2_CODE * Typemaker2_Code_fromXml(GWEN_XMLNODE *p_db)
const char * Typemaker2_Code_GetId(const TYPEMAKER2_CODE *p_struct)
const char * Typemaker2_Code_GetMemberFlagsValue(const TYPEMAKER2_CODE *p_struct)
void Typemaker2_Code_SetMemberFlagsValueInt(TYPEMAKER2_CODE *p_struct, uint32_t p_src)
struct TYPEMAKER2_CODE TYPEMAKER2_CODE
TYPEMAKER2_DEFINE * Typemaker2_Define_fromXml(GWEN_XMLNODE *p_db)
TYPEMAKER2_ITEM_LIST * Typemaker2_Define_GetItems(const TYPEMAKER2_DEFINE *p_struct)
struct TYPEMAKER2_DEFINE TYPEMAKER2_DEFINE
TYPEMAKER2_ENUM * Typemaker2_Enum_fromXml(GWEN_XMLNODE *p_db)
TYPEMAKER2_ITEM_LIST * Typemaker2_Enum_GetItems(const TYPEMAKER2_ENUM *p_struct)
const char * Typemaker2_Enum_GetId(const TYPEMAKER2_ENUM *p_struct)
struct TYPEMAKER2_ENUM TYPEMAKER2_ENUM
void Typemaker2_Group_free(TYPEMAKER2_GROUP *gr)
int Typemaker2_Group_readXml(TYPEMAKER2_GROUP *gr, GWEN_XMLNODE *node, GWEN_UNUSED const char *wantedLang)
void Typemaker2_Group_SetTitle(TYPEMAKER2_GROUP *gr, const char *s)
TYPEMAKER2_GROUP * Typemaker2_Group_new()
void Typemaker2_Group_SetDescription(TYPEMAKER2_GROUP *gr, const char *s)
struct TYPEMAKER2_GROUP TYPEMAKER2_GROUP
TYPEMAKER2_INLINE * Typemaker2_Inline_fromXml(GWEN_XMLNODE *node)
struct TYPEMAKER2_INLINE TYPEMAKER2_INLINE
TYPEMAKER2_ITEM * Typemaker2_Item_fromXml(GWEN_XMLNODE *p_db)
struct TYPEMAKER2_ITEM TYPEMAKER2_ITEM
int Typemaker2_Member_readXml(TYPEMAKER2_MEMBER *tm, GWEN_XMLNODE *node, const char *wantedLang)
void Typemaker2_Member_Dump(TYPEMAKER2_MEMBER *tm, FILE *f, int indent)
TYPEMAKER2_MEMBER * Typemaker2_Member_new()
void Typemaker2_Member_free(TYPEMAKER2_MEMBER *tm)
uint32_t Typemaker2_Member_GetFlags(const TYPEMAKER2_MEMBER *tm)
TYPEMAKER2_CODE_LIST * Typemaker2_Member_GetCodeDefs(const TYPEMAKER2_MEMBER *tm)
void Typemaker2_Member_SetGroupPtr(TYPEMAKER2_MEMBER *tm, TYPEMAKER2_GROUP *gr)
struct TYPEMAKER2_MEMBER TYPEMAKER2_MEMBER
void Typemaker2_Signal_SetParamType2(TYPEMAKER2_SIGNAL *p_struct, const char *p_src)
void Typemaker2_Signal_SetName(TYPEMAKER2_SIGNAL *p_struct, const char *p_src)
void Typemaker2_Signal_AddFlags(TYPEMAKER2_SIGNAL *p_struct, uint32_t p_src)
TYPEMAKER2_SIGNAL * Typemaker2_Signal_new(void)
void Typemaker2_Signal_SetParamType1(TYPEMAKER2_SIGNAL *p_struct, const char *p_src)
#define TYPEMAKER2_SIGNAL_FLAGS_USE_PARAM4
#define TYPEMAKER2_SIGNAL_FLAGS_USE_PARAM3
struct TYPEMAKER2_SIGNAL TYPEMAKER2_SIGNAL
void Typemaker2_Slot_SetName(TYPEMAKER2_SLOT *p_struct, const char *p_src)
void Typemaker2_Slot_AddFlags(TYPEMAKER2_SLOT *p_struct, uint32_t p_src)
void Typemaker2_Slot_SetParamType2(TYPEMAKER2_SLOT *p_struct, const char *p_src)
TYPEMAKER2_SLOT * Typemaker2_Slot_new(void)
void Typemaker2_Slot_SetParamType1(TYPEMAKER2_SLOT *p_struct, const char *p_src)
struct TYPEMAKER2_SLOT TYPEMAKER2_SLOT
#define TYPEMAKER2_SLOT_FLAGS_USE_PARAM4
#define TYPEMAKER2_SLOT_FLAGS_USE_PARAM3
TYPEMAKER2_CODE_LIST * Typemaker2_Type_GetCodeDefs(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_DEFINE_LIST * Typemaker2_Type_GetDefines(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetCopyFlags(TYPEMAKER2_TYPE *ty, uint32_t i)
uint32_t Typemaker2_Type_GetSetFlags(const TYPEMAKER2_TYPE *ty)
int Typemaker2_Type_GetStructAccess(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetDupFlags(TYPEMAKER2_TYPE *ty, uint32_t i)
TYPEMAKER2_ENUM * Typemaker2_Type_FindEnum(TYPEMAKER2_TYPE *ty, const char *s)
int Typemaker2_Type_GetType(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetAqDbType(TYPEMAKER2_TYPE *ty, const char *s)
uint32_t Typemaker2_Type_GetCopyFlags(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetType(TYPEMAKER2_TYPE *ty, int i)
const char * Typemaker2_Type_GetFieldCountId(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetFreeHook(TYPEMAKER2_TYPE *ty, const char *s)
TYPEMAKER2_TYPE * Typemaker2_Type_GetInheritsPtr(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetDescription(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_HEADER_LIST * Typemaker2_Type_GetHeaders(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetIdentifier(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetUsePrivateConstructor(TYPEMAKER2_TYPE *ty, int i)
int Typemaker2_Type_GetAccess(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_SetFlags(TYPEMAKER2_TYPE *ty, uint32_t i)
TYPEMAKER2_SLOT_LIST * Typemaker2_Type_GetSlots(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_Dump(TYPEMAKER2_TYPE *ty, FILE *f, int indent)
TYPEMAKER2_VIRTUALFN_LIST * Typemaker2_Type_GetVirtualFns(const TYPEMAKER2_TYPE *ty)
int Typemaker2_Type_GetPack(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetPresetValue(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetSetFlags(TYPEMAKER2_TYPE *ty, uint32_t i)
void Typemaker2_Type_SetPack(TYPEMAKER2_TYPE *ty, int i)
void Typemaker2_Type_SetName(TYPEMAKER2_TYPE *ty, const char *s)
uint32_t Typemaker2_Type_GetFlags(const TYPEMAKER2_TYPE *ty)
int Typemaker2_Type_readMembersAndGroupsXml(TYPEMAKER2_TYPE *ty, GWEN_XMLNODE *node, TYPEMAKER2_GROUP *parentGroup, const char *wantedLang)
void Typemaker2_Type_SetPrefix(TYPEMAKER2_TYPE *ty, const char *s)
const char * Typemaker2_Type_GetExtends(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_Attach(TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetFreeHook(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_TYPE * Typemaker2_Type_GetBaseTypePtr(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_free(TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetBaseFileName(TYPEMAKER2_TYPE *ty, const char *s)
const char * Typemaker2_Type_GetBaseFileName(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetDefaultValue(TYPEMAKER2_TYPE *ty, const char *s)
void Typemaker2_Type_SetGetFlags(TYPEMAKER2_TYPE *ty, uint32_t i)
uint32_t Typemaker2_Type_GetGetFlags(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_ENUM_LIST * Typemaker2_Type_GetEnums(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetName(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)
void Typemaker2_Type_SetAccess(TYPEMAKER2_TYPE *ty, int i)
const char * Typemaker2_Type_GetAqDbType(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetBaseTypePtr(TYPEMAKER2_TYPE *ty, TYPEMAKER2_TYPE *p)
void Typemaker2_Type_SetPresetValue(TYPEMAKER2_TYPE *ty, const char *s)
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)
void Typemaker2_Type_SetInherits(TYPEMAKER2_TYPE *ty, const char *s)
const char * Typemaker2_Type_GetInherits(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_GROUP_TREE * Typemaker2_Type_GetGroupTree(const TYPEMAKER2_TYPE *ty)
const char * Typemaker2_Type_GetDefaultValue(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_SetStructAccess(TYPEMAKER2_TYPE *ty, int i)
void Typemaker2_Type_SetExtendsPtr(TYPEMAKER2_TYPE *ty, TYPEMAKER2_TYPE *p)
void Typemaker2_Type_SetDescription(TYPEMAKER2_TYPE *ty, const char *s)
int Typemaker2_Type_GetUsePrivateConstructor(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_CODE * Typemaker2_Type_FindCodeForMember(const TYPEMAKER2_TYPE *ty, const TYPEMAKER2_MEMBER *tm, const char *id)
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)
uint32_t Typemaker2_Type_GetDupFlags(const TYPEMAKER2_TYPE *ty)
TYPEMAKER2_SIGNAL_LIST * Typemaker2_Type_GetSignals(const TYPEMAKER2_TYPE *ty)
void Typemaker2_Type_SetFieldCountId(TYPEMAKER2_TYPE *ty, const char *s)
struct TYPEMAKER2_TYPE TYPEMAKER2_TYPE
@ TypeMaker2_Access_Private
@ TypeMaker2_Access_Unknown
@ TypeMaker2_Type_Pointer
@ TypeMaker2_Type_Unknown
int Typemaker2_AccessFromString(const char *s)
uint32_t Typemaker2_FlagsFromString(const char *t)
uint32_t Typemaker2_TypeFlagsFromString(const char *t)
void Typemaker2_VirtualFn_free(TYPEMAKER2_VIRTUALFN *vf)
TYPEMAKER2_VIRTUALFN * Typemaker2_VirtualFn_new()
int Typemaker2_VirtualFn_readXml(TYPEMAKER2_VIRTUALFN *vf, GWEN_XMLNODE *node)
struct TYPEMAKER2_VIRTUALFN TYPEMAKER2_VIRTUALFN
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_GetFirstTag(const GWEN_XMLNODE *n)
GWEN_XMLNODE * GWEN_XMLNode_GetNextTag(const GWEN_XMLNODE *n)
int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n, const char *name, int defValue)
GWEN_XMLNODE * GWEN_XMLNode_FindNextTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
const char * GWEN_XMLNode_GetData(const GWEN_XMLNODE *n)
int GWEN_XMLNode_GetIntProperty(const GWEN_XMLNODE *n, const char *name, int defaultValue)
GWENHYWFAR_API int GWEN_XMLNode_toBuffer(const GWEN_XMLNODE *n, GWEN_BUFFER *buf, uint32_t flags)
#define GWEN_XML_FLAGS_HANDLE_COMMENTS
struct GWEN__XMLNODE GWEN_XMLNODE
#define GWEN_XML_FLAGS_SIMPLE