28 #ifndef GWENHYWFAR_DB_H 29 #define GWENHYWFAR_DB_H 102 #define GWEN_DB_LINE_MAXSIZE 1024 119 #define GWEN_DB_FLAGS_ALLOW_EMPTY_STREAM 0x00008000 121 #define GWEN_DB_FLAGS_OVERWRITE_VARS 0x00010000 123 #define GWEN_DB_FLAGS_OVERWRITE_GROUPS 0x00020000 125 #define GWEN_DB_FLAGS_QUOTE_VARNAMES 0x00040000 127 #define GWEN_DB_FLAGS_QUOTE_VALUES 0x00080000 129 #define GWEN_DB_FLAGS_WRITE_SUBGROUPS 0x00100000 131 #define GWEN_DB_FLAGS_DETAILED_GROUPS 0x00200000 134 #define GWEN_DB_FLAGS_INDEND 0x00400000 137 #define GWEN_DB_FLAGS_ADD_GROUP_NEWLINES 0x00800000 140 #define GWEN_DB_FLAGS_USE_COLON 0x01000000 142 #define GWEN_DB_FLAGS_UNTIL_EMPTY_LINE 0x02000000 145 #define GWEN_DB_FLAGS_OMIT_TYPES 0x04000000 147 #define GWEN_DB_FLAGS_APPEND_FILE 0x08000000 149 #define GWEN_DB_FLAGS_ESCAPE_CHARVALUES 0x10000000 152 #define GWEN_DB_FLAGS_UNESCAPE_CHARVALUES 0x10000000 155 #define GWEN_DB_FLAGS_LOCKFILE 0x20000000 160 #define GWEN_DB_FLAGS_INSERT 0x40000000 165 #define GWEN_DB_FLAGS_DOSMODE 0x80000000 168 #define GWEN_DB_FLAGS_DEFAULT \ 170 GWEN_DB_FLAGS_QUOTE_VALUES | \ 171 GWEN_DB_FLAGS_WRITE_SUBGROUPS | \ 172 GWEN_DB_FLAGS_DETAILED_GROUPS | \ 173 GWEN_DB_FLAGS_INDEND | \ 174 GWEN_DB_FLAGS_ADD_GROUP_NEWLINES | \ 175 GWEN_DB_FLAGS_ESCAPE_CHARVALUES | \ 176 GWEN_DB_FLAGS_UNESCAPE_CHARVALUES\ 182 #define GWEN_DB_FLAGS_COMPACT \ 184 GWEN_DB_FLAGS_QUOTE_VALUES | \ 185 GWEN_DB_FLAGS_WRITE_SUBGROUPS | \ 186 GWEN_DB_FLAGS_ESCAPE_CHARVALUES | \ 187 GWEN_DB_FLAGS_UNESCAPE_CHARVALUES\ 193 #define GWEN_DB_FLAGS_HTTP \ 195 GWEN_DB_FLAGS_USE_COLON |\ 196 GWEN_DB_FLAGS_UNTIL_EMPTY_LINE |\ 197 GWEN_DB_FLAGS_OMIT_TYPES | \ 198 GWEN_DB_FLAGS_DOSMODE \ 207 #define GWEN_DB_NODE_FLAGS_DIRTY 0x00000001 209 #define GWEN_DB_NODE_FLAGS_VOLATILE 0x00000002 212 #define GWEN_DB_NODE_FLAGS_INHERIT_HASH_MECHANISM 0x00000004 214 #define GWEN_DB_NODE_FLAGS_SAFE 0x00000008 218 #define GWEN_DB_DEFAULT_LOCK_TIMEOUT 1000 378 typedef void *(*GWEN_DB_NODES_CB)(
GWEN_DB_NODE *node,
void *user_data);
583 unsigned int defValSize,
584 unsigned int *returnValueSize);
601 unsigned int valSize);
1164 unsigned int *size);
GWENHYWFAR_API int GWEN_DB_ReplaceVars(GWEN_DB_NODE *db, const char *s, GWEN_BUFFER *dbuf)
GWENHYWFAR_API int GWEN_DB_WriteToBuffer(GWEN_DB_NODE *n, GWEN_BUFFER *buf, uint32_t dbflags)
GWENHYWFAR_API void GWEN_DB_ModifyBranchFlagsUp(GWEN_DB_NODE *n, uint32_t newflags, uint32_t mask)
GWENHYWFAR_API void GWEN_DB_Dump(GWEN_DB_NODE *n, int insert)
GWENHYWFAR_API void * GWEN_DB_Groups_Foreach(GWEN_DB_NODE *node, GWEN_DB_NODES_CB func, void *user_data)
struct GWEN_DB_NODE GWEN_DB_NODE
GWENHYWFAR_API void GWEN_DB_Group_free(GWEN_DB_NODE *n)
GWENHYWFAR_API uint32_t GWEN_DB_GetNodeFlags(const GWEN_DB_NODE *n)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetNextValue(GWEN_DB_NODE *n)
void *(* GWEN_DB_NODES_CB)(GWEN_DB_NODE *node, void *user_data)
GWENHYWFAR_API void GWEN_DB_GroupRename(GWEN_DB_NODE *n, const char *newname)
GWENHYWFAR_API unsigned int GWEN_DB_Groups_Count(const GWEN_DB_NODE *node)
GWENHYWFAR_API int GWEN_DB_ReadFromString(GWEN_DB_NODE *n, const char *str, int len, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_WriteToFastBuffer(GWEN_DB_NODE *node, GWEN_FAST_BUFFER *fb, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_WriteVarValueToBuffer(GWEN_DB_NODE *n, const char *path, int index, GWEN_BUFFER *dstBuf)
GWENHYWFAR_API void GWEN_DB_ModifyBranchFlagsDown(GWEN_DB_NODE *n, uint32_t newflags, uint32_t mask)
GWENHYWFAR_API int GWEN_DB_ValueExists(GWEN_DB_NODE *n, const char *path, unsigned int idx)
GWENHYWFAR_API int GWEN_DB_SetPtrValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, void *val)
GWENHYWFAR_API int GWEN_DB_InsertGroup(GWEN_DB_NODE *parent, GWEN_DB_NODE *node)
GWENHYWFAR_API int GWEN_DB_AddGroup(GWEN_DB_NODE *parent, GWEN_DB_NODE *node)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetFirstVar(GWEN_DB_NODE *n)
GWENHYWFAR_API GWEN_DB_NODE_TYPE GWEN_DB_GetVariableType(GWEN_DB_NODE *n, const char *p)
GWENHYWFAR_API int GWEN_DB_IsVariable(const GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_SetBinValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const void *val, unsigned int valSize)
GWENHYWFAR_API void GWEN_DB_VariableRename(GWEN_DB_NODE *n, const char *newname)
struct GWEN_SYNCIO GWEN_SYNCIO
GWENHYWFAR_API int GWEN_DB_ReadFromFastBuffer(GWEN_DB_NODE *n, GWEN_FAST_BUFFER *fb, uint32_t dbflags)
GWENHYWFAR_API const char * GWEN_DB_GroupName(GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_WriteToIo(GWEN_DB_NODE *node, GWEN_SYNCIO *sio, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_DeleteGroup(GWEN_DB_NODE *n, const char *path)
GWENHYWFAR_API int GWEN_DB_WriteFileAs(GWEN_DB_NODE *n, const char *fname, const char *type, GWEN_DB_NODE *params, uint32_t dbflags)
GWENHYWFAR_API const void * GWEN_DB_GetBinValue(GWEN_DB_NODE *n, const char *path, int idx, const void *defVal, unsigned int defValSize, unsigned int *returnValueSize)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetNextGroup(GWEN_DB_NODE *n)
GWENHYWFAR_API void * GWEN_DB_GetPtrValue(GWEN_DB_NODE *n, const char *path, int idx, void *defVal)
GWENHYWFAR_API const void * GWEN_DB_GetBinValueFromNode(const GWEN_DB_NODE *n, unsigned int *size)
GWENHYWFAR_API const char * GWEN_DB_GetCharValue(GWEN_DB_NODE *n, const char *path, int idx, const char *defVal)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_Group_dup(const GWEN_DB_NODE *n)
GWENHYWFAR_API const char * GWEN_DB_VariableName(GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_IsValue(const GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_VariableExists(GWEN_DB_NODE *n, const char *path)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_FindNextVar(GWEN_DB_NODE *n, const char *name)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetGroup(GWEN_DB_NODE *n, uint32_t flags, const char *path)
GWENHYWFAR_API int GWEN_DB_SetCharValueFromInt(GWEN_DB_NODE *n, uint32_t flags, const char *path, int val)
GWENHYWFAR_API int GWEN_DB_DeleteVar(GWEN_DB_NODE *n, const char *path)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
GWENHYWFAR_API int GWEN_DB_ReadFileAs(GWEN_DB_NODE *n, const char *fname, const char *type, GWEN_DB_NODE *params, uint32_t dbflags)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_FindFirstVar(GWEN_DB_NODE *n, const char *name)
GWENHYWFAR_API int GWEN_DB_ReadFromIo(GWEN_DB_NODE *n, GWEN_SYNCIO *sio, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_SetCharValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const char *val)
GWENHYWFAR_API unsigned int GWEN_DB_Variables_Count(const GWEN_DB_NODE *node)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetFirstValue(GWEN_DB_NODE *n)
GWENHYWFAR_API GWEN_DB_NODE_TYPE GWEN_DB_GetValueTypeByPath(GWEN_DB_NODE *n, const char *p, unsigned int i)
GWENHYWFAR_API int GWEN_DB_IsGroup(const GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_AddCharValue(GWEN_DB_NODE *n, const char *path, const char *val, int senseCase, int check)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetNextVar(GWEN_DB_NODE *n)
GWENHYWFAR_API void GWEN_DB_UnlinkGroup(GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_ReadFile(GWEN_DB_NODE *n, const char *fname, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_GetIntValue(GWEN_DB_NODE *n, const char *path, int idx, int defVal)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetParentGroup(GWEN_DB_NODE *n)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_FindFirstGroup(GWEN_DB_NODE *n, const char *name)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_Group_new(const char *name)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetFirstGroup(GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_WriteFile(GWEN_DB_NODE *n, const char *fname, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_SetIntValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, int val)
GWENHYWFAR_API int GWEN_DB_GetIntValueFromNode(const GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_RemoveCharValue(GWEN_DB_NODE *n, const char *path, const char *val, int senseCase)
GWENHYWFAR_API void * GWEN_DB_Variables_Foreach(GWEN_DB_NODE *node, GWEN_DB_NODES_CB func, void *user_data)
GWENHYWFAR_API int GWEN_DB_ClearGroup(GWEN_DB_NODE *n, const char *path)
GWENHYWFAR_API int GWEN_DB_AddGroupChildren(GWEN_DB_NODE *n, GWEN_DB_NODE *nn)
GWENHYWFAR_API int GWEN_DB_SetCharValueInNode(GWEN_DB_NODE *n, const char *s)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_FindNextGroup(GWEN_DB_NODE *n, const char *name)
GWENHYWFAR_API void * GWEN_DB_Values_Foreach(GWEN_DB_NODE *node, GWEN_DB_NODES_CB func, void *user_data)
GWENHYWFAR_API void GWEN_DB_SetNodeFlags(GWEN_DB_NODE *n, uint32_t flags)
GWENHYWFAR_API GWEN_DB_NODE_TYPE GWEN_DB_GetValueType(GWEN_DB_NODE *n)
GWENHYWFAR_API unsigned int GWEN_DB_Values_Count(const GWEN_DB_NODE *node)
GWENHYWFAR_API const char * GWEN_DB_GetCharValueFromNode(const GWEN_DB_NODE *n)