14 #include <gwenhywfar/misc.h> 15 #include <gwenhywfar/debug.h> 28 if (strcasecmp(p_s,
"int")==0)
30 else if (strcasecmp(p_s,
"bool")==0)
32 else if (strcasecmp(p_s,
"float")==0)
34 else if (strcasecmp(p_s,
"string")==0)
43 if (strcasecmp(p_s,
"simple")==0)
45 else if (strcasecmp(p_s,
"choice")==0)
84 p_struct->_refCount=1;
92 p_struct->shortDescription=
NULL;
93 p_struct->longDescription=
NULL;
94 p_struct->currentValue=
NULL;
95 p_struct->defaultValue=
NULL;
96 p_struct->choices=
NULL;
97 p_struct->internalIntValue=0;
98 p_struct->internalFloatValue=0;
99 p_struct->runtimeFlags=0;
108 assert(p_struct->_refCount);
109 if (p_struct->_refCount==1) {
113 free(p_struct->name);
114 free(p_struct->shortDescription);
115 free(p_struct->longDescription);
116 free(p_struct->currentValue);
117 free(p_struct->defaultValue);
119 p_struct->_refCount=0;
123 p_struct->_refCount--;
130 assert(p_struct->_refCount);
131 p_struct->_refCount++;
141 if (p_struct->name) {
142 free(p_struct->name);
146 p_struct->name=strdup(p_src->name);
150 p_struct->flags=p_src->flags;
153 p_struct->type=p_src->type;
156 p_struct->dataType=p_src->dataType;
159 if (p_struct->shortDescription) {
160 free(p_struct->shortDescription);
161 p_struct->shortDescription=
NULL;
163 if (p_src->shortDescription) {
164 p_struct->shortDescription=strdup(p_src->shortDescription);
168 if (p_struct->longDescription) {
169 free(p_struct->longDescription);
170 p_struct->longDescription=
NULL;
172 if (p_src->longDescription) {
173 p_struct->longDescription=strdup(p_src->longDescription);
177 if (p_struct->currentValue) {
178 free(p_struct->currentValue);
179 p_struct->currentValue=
NULL;
181 if (p_src->currentValue) {
182 p_struct->currentValue=strdup(p_src->currentValue);
186 if (p_struct->defaultValue) {
187 free(p_struct->defaultValue);
188 p_struct->defaultValue=
NULL;
190 if (p_src->defaultValue) {
191 p_struct->defaultValue=strdup(p_src->defaultValue);
195 if (p_struct->choices) {
197 p_struct->choices=
NULL;
199 if (p_src->choices) {
204 p_struct->internalIntValue=p_src->internalIntValue;
207 p_struct->internalFloatValue=p_src->internalFloatValue;
210 p_struct->runtimeFlags=p_src->runtimeFlags;
220 if (p_struct->name) {
221 free(p_struct->name);
225 p_struct->name=strdup(p_src->name);
229 p_struct->flags=p_src->flags;
232 p_struct->type=p_src->type;
235 p_struct->dataType=p_src->dataType;
238 if (p_struct->shortDescription) {
239 free(p_struct->shortDescription);
240 p_struct->shortDescription=
NULL;
242 if (p_src->shortDescription) {
243 p_struct->shortDescription=strdup(p_src->shortDescription);
247 if (p_struct->longDescription) {
248 free(p_struct->longDescription);
249 p_struct->longDescription=
NULL;
251 if (p_src->longDescription) {
252 p_struct->longDescription=strdup(p_src->longDescription);
256 if (p_struct->currentValue) {
257 free(p_struct->currentValue);
258 p_struct->currentValue=
NULL;
260 if (p_src->currentValue) {
261 p_struct->currentValue=strdup(p_src->currentValue);
265 if (p_struct->defaultValue) {
266 free(p_struct->defaultValue);
267 p_struct->defaultValue=
NULL;
269 if (p_src->defaultValue) {
270 p_struct->defaultValue=strdup(p_src->defaultValue);
274 if (p_struct->choices) {
276 p_struct->choices=
NULL;
278 if (p_src->choices) {
283 p_struct->internalIntValue=p_src->internalIntValue;
286 p_struct->internalFloatValue=p_src->internalFloatValue;
289 p_struct->runtimeFlags=p_src->runtimeFlags;
297 return p_struct->name;
303 return p_struct->flags;
309 return p_struct->type;
315 return p_struct->dataType;
321 return p_struct->shortDescription;
327 return p_struct->longDescription;
333 return p_struct->currentValue;
339 return p_struct->defaultValue;
345 return p_struct->choices;
351 return p_struct->internalIntValue;
357 return p_struct->internalFloatValue;
363 return p_struct->runtimeFlags;
369 if (p_struct->name) {
370 free(p_struct->name);
373 p_struct->name=strdup(p_src);
383 p_struct->flags=p_src;
389 p_struct->flags|=p_src;
395 p_struct->flags&=~p_src;
401 p_struct->type=p_src;
407 p_struct->dataType=p_src;
413 if (p_struct->shortDescription) {
414 free(p_struct->shortDescription);
417 p_struct->shortDescription=strdup(p_src);
420 p_struct->shortDescription=
NULL;
427 if (p_struct->longDescription) {
428 free(p_struct->longDescription);
431 p_struct->longDescription=strdup(p_src);
434 p_struct->longDescription=
NULL;
441 if (p_struct->currentValue) {
442 free(p_struct->currentValue);
445 p_struct->currentValue=strdup(p_src);
448 p_struct->currentValue=
NULL;
455 if (p_struct->defaultValue) {
456 free(p_struct->defaultValue);
459 p_struct->defaultValue=strdup(p_src);
462 p_struct->defaultValue=
NULL;
469 if (p_struct->choices) {
472 p_struct->choices=p_src;
478 p_struct->internalIntValue=p_src;
484 p_struct->internalFloatValue=p_src;
490 p_struct->runtimeFlags=p_src;
496 p_struct->runtimeFlags|=p_src;
502 p_struct->runtimeFlags&=~p_src;
529 if (p_struct->name) {
530 free(p_struct->name);
536 p_struct->name=strdup(s);
538 if (p_struct->name==
NULL) {
566 if (p_struct->shortDescription) {
567 free(p_struct->shortDescription);
573 p_struct->shortDescription=strdup(s);
575 if (p_struct->shortDescription==
NULL) {
576 p_struct->shortDescription=
NULL;
580 if (p_struct->longDescription) {
581 free(p_struct->longDescription);
587 p_struct->longDescription=strdup(s);
589 if (p_struct->longDescription==
NULL) {
590 p_struct->longDescription=
NULL;
594 if (p_struct->currentValue) {
595 free(p_struct->currentValue);
601 p_struct->currentValue=strdup(s);
603 if (p_struct->currentValue==
NULL) {
604 p_struct->currentValue=
NULL;
608 if (p_struct->defaultValue) {
609 free(p_struct->defaultValue);
615 p_struct->defaultValue=strdup(s);
617 if (p_struct->defaultValue==
NULL) {
618 p_struct->defaultValue=
NULL;
622 if (p_struct->choices) {
628 if (p_struct->choices==
NULL) {
629 p_struct->choices=
NULL;
634 p_struct->internalIntValue=0;
638 p_struct->internalFloatValue=0;
642 p_struct->runtimeFlags=0;
686 if (p_struct->shortDescription)
698 if (p_struct->longDescription)
710 if (p_struct->currentValue)
722 if (p_struct->defaultValue)
734 if (p_struct->choices) {
772 if (p_struct->name) {
773 free(p_struct->name);
779 p_struct->name=strdup(s);
781 if (p_struct->name==
NULL) {
809 if (p_struct->shortDescription) {
810 free(p_struct->shortDescription);
816 p_struct->shortDescription=strdup(s);
818 if (p_struct->shortDescription==
NULL) {
819 p_struct->shortDescription=
NULL;
823 if (p_struct->longDescription) {
824 free(p_struct->longDescription);
830 p_struct->longDescription=strdup(s);
832 if (p_struct->longDescription==
NULL) {
833 p_struct->longDescription=
NULL;
837 if (p_struct->currentValue) {
838 free(p_struct->currentValue);
844 p_struct->currentValue=strdup(s);
846 if (p_struct->currentValue==
NULL) {
847 p_struct->currentValue=
NULL;
851 if (p_struct->defaultValue) {
852 free(p_struct->defaultValue);
858 p_struct->defaultValue=strdup(s);
860 if (p_struct->defaultValue==
NULL) {
861 p_struct->defaultValue=
NULL;
865 if (p_struct->choices) {
875 p_struct->choices=
NULL;
877 if (p_struct->choices==
NULL) {
878 p_struct->choices=
NULL;
883 p_struct->internalIntValue=0;
887 p_struct->internalFloatValue=0;
891 p_struct->runtimeFlags=0;
923 if (p_struct->choices) {
960 if (p_struct->name && p_cmp)
961 p_rv=strcasecmp(p_cmp, p_struct->name);
964 else if (p_struct->name)
980 p_struct = GWEN_Param_Tree_GetFirst(p_tree);
984 if (p_struct->name && p_cmp)
985 p_rv=strcasecmp(p_cmp, p_struct->name);
988 else if (p_struct->name)
994 p_struct = GWEN_Param_Tree_GetBelow(p_struct);
GWEN_PARAM_DATATYPE GWEN_Param_DataType_fromString(const char *p_s)
GWEN_PARAM * GWEN_Param_List_First(const GWEN_PARAM_LIST *l)
int GWEN_StringList2_toDb(GWEN_STRINGLIST2 *sl2, GWEN_DB_NODE *db, const char *name)
GWEN_PARAM * GWEN_Param_dup(const GWEN_PARAM *p_src)
#define GWEN_DB_FLAGS_OVERWRITE_VARS
struct GWEN_DB_NODE GWEN_DB_NODE
void GWEN_Param_SubFlags(GWEN_PARAM *p_struct, uint32_t p_src)
GWEN_PARAM_DATATYPE GWEN_Param_GetDataType(const GWEN_PARAM *p_struct)
const char * GWEN_Param_GetDefaultValue(const GWEN_PARAM *p_struct)
const char * GWEN_Param_Type_toString(GWEN_PARAM_TYPE p_i)
GWEN_STRINGLIST2 * GWEN_StringList2_dup(GWEN_STRINGLIST2 *sl2)
GWEN_PARAM_TYPE GWEN_Param_GetType(const GWEN_PARAM *p_struct)
#define GWEN_FREE_OBJECT(varname)
void GWEN_Param_SetDataType(GWEN_PARAM *p_struct, GWEN_PARAM_DATATYPE p_src)
void GWEN_Param_SetType(GWEN_PARAM *p_struct, GWEN_PARAM_TYPE p_src)
void GWEN_Param_toXml(const GWEN_PARAM *p_struct, GWEN_XMLNODE *p_db)
struct GWEN_PARAM GWEN_PARAM
int GWEN_StringList2_toXml(GWEN_STRINGLIST2 *sl2, GWEN_XMLNODE *node)
double GWEN_Param_GetInternalFloatValue(const GWEN_PARAM *p_struct)
void GWEN_Param_AddFlags(GWEN_PARAM *p_struct, uint32_t p_src)
void GWEN_XMLNode_SetCharValue(GWEN_XMLNODE *n, const char *name, const char *value)
const char * GWEN_Param_DataType_toString(GWEN_PARAM_DATATYPE p_i)
GWEN_STRINGLIST2 * GWEN_StringList2_fromXml(GWEN_XMLNODE *node, GWEN_STRINGLIST2_INSERTMODE m)
GWEN_PARAM * GWEN_Param_fromXml(GWEN_XMLNODE *p_db)
GWEN_XMLNODE * GWEN_XMLNode_new(GWEN_XMLNODE_TYPE t, const char *data)
int GWEN_XMLNode_GetIntValue(const GWEN_XMLNODE *n, const char *name, int defValue)
void GWEN_Param_AddRuntimeFlags(GWEN_PARAM *p_struct, uint32_t p_src)
GWEN_XMLNODE * GWEN_XMLNode_FindFirstTag(const GWEN_XMLNODE *n, const char *tname, const char *pname, const char *pvalue)
void GWEN_Param_free(GWEN_PARAM *p_struct)
GWEN_PARAM * GWEN_Param_Tree_GetByName(const GWEN_PARAM_TREE *p_tree, const char *p_cmp)
#define GWEN_NEW_OBJECT(typ, varname)
void GWEN_Param_SubRuntimeFlags(GWEN_PARAM *p_struct, uint32_t p_src)
const char * GWEN_XMLNode_GetCharValue(const GWEN_XMLNODE *n, const char *name, const char *defValue)
GWEN_STRINGLIST2 * GWEN_Param_GetChoices(const GWEN_PARAM *p_struct)
GWEN_PARAM_LIST * GWEN_Param_List_dup(const GWEN_PARAM_LIST *p_src)
void GWEN_StringList2_free(GWEN_STRINGLIST2 *sl2)
#define GWEN_TREE_FINI(t, element)
GWEN_PARAM * GWEN_Param_new(void)
void GWEN_Param_SetLongDescription(GWEN_PARAM *p_struct, const char *p_src)
void GWEN_Param_SetInternalFloatValue(GWEN_PARAM *p_struct, double p_src)
GWEN_PARAM * GWEN_Param_List_Next(const GWEN_PARAM *element)
GWEN_PARAM * GWEN_Param_fromDb(GWEN_DB_NODE *p_db)
void GWEN_Param_ReadXml(GWEN_PARAM *p_struct, GWEN_XMLNODE *p_db)
const char * GWEN_DB_GetCharValue(GWEN_DB_NODE *n, const char *path, int idx, const char *defVal)
uint32_t GWEN_Param_GetFlags(const GWEN_PARAM *p_struct)
int GWEN_DB_DeleteVar(GWEN_DB_NODE *n, const char *path)
GWEN_PARAM_LIST * GWEN_Param_List_new()
GWEN_LIST2_FUNCTIONS(TYPEMAKER2_TYPE, Typemaker2_Type)
void GWEN_Param_Attach(GWEN_PARAM *p_struct)
int GWEN_Param_GetInternalIntValue(const GWEN_PARAM *p_struct)
const char * GWEN_Param_GetName(const GWEN_PARAM *p_struct)
void GWEN_Param_SetCurrentValue(GWEN_PARAM *p_struct, const char *p_src)
void GWEN_Param_SetDefaultValue(GWEN_PARAM *p_struct, const char *p_src)
int GWEN_Param_toDb(const GWEN_PARAM *p_struct, GWEN_DB_NODE *p_db)
struct GWEN_STRINGLIST2 GWEN_STRINGLIST2
int GWEN_DB_SetCharValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const char *val)
GWEN_PARAM_TYPE GWEN_Param_Type_fromString(const char *p_s)
#define DBG_INFO(dbg_logger, format, args...)
#define GWEN_TREE_INIT(t, element)
#define GWEN_LIST_INIT(t, element)
const char * GWEN_Param_GetCurrentValue(const GWEN_PARAM *p_struct)
GWEN_PARAM * GWEN_Param_copy(GWEN_PARAM *p_struct, const GWEN_PARAM *p_src)
int GWEN_DB_GetIntValue(GWEN_DB_NODE *n, const char *path, int idx, int defVal)
void GWEN_Param_SetInternalIntValue(GWEN_PARAM *p_struct, int p_src)
void GWEN_Param_SetFlags(GWEN_PARAM *p_struct, uint32_t p_src)
void GWEN_Param_SetChoices(GWEN_PARAM *p_struct, GWEN_STRINGLIST2 *p_src)
const char * GWEN_Param_GetLongDescription(const GWEN_PARAM *p_struct)
void GWEN_Param_SetShortDescription(GWEN_PARAM *p_struct, const char *p_src)
int GWEN_DB_SetIntValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, int val)
#define GWEN_LIST_FUNCTIONS(t, pr)
void GWEN_Param_List_Add(GWEN_PARAM *element, GWEN_PARAM_LIST *list)
const char * GWEN_Param_GetShortDescription(const GWEN_PARAM *p_struct)
uint32_t GWEN_Param_GetRuntimeFlags(const GWEN_PARAM *p_struct)
int GWEN_Param_WriteDb(const GWEN_PARAM *p_struct, GWEN_DB_NODE *p_db)
void GWEN_Param_SetName(GWEN_PARAM *p_struct, const char *p_src)
void GWEN_Param_ReadDb(GWEN_PARAM *p_struct, GWEN_DB_NODE *p_db)
#define GWEN_LIST_FINI(t, element)
struct GWEN__XMLNODE GWEN_XMLNODE
GWEN_PARAM * GWEN_Param_List_GetByName(const GWEN_PARAM_LIST *p_list, const char *p_cmp)
void GWEN_Param_WriteXml(const GWEN_PARAM *p_struct, GWEN_XMLNODE *p_db)
void GWEN_Param_SetRuntimeFlags(GWEN_PARAM *p_struct, uint32_t p_src)
GWEN_STRINGLIST2 * GWEN_StringList2_fromDb(GWEN_DB_NODE *db, const char *name, GWEN_STRINGLIST2_INSERTMODE m)
#define GWEN_TREE_FUNCTIONS(t, pr)
void GWEN_XMLNode_AddChild(GWEN_XMLNODE *n, GWEN_XMLNODE *child)
void GWEN_XMLNode_SetIntValue(GWEN_XMLNODE *n, const char *name, int value)