gwenhywfar 5.11.2beta
db.h
Go to the documentation of this file.
1/***************************************************************************
2 begin : Tue Sep 09 2003
3 copyright : (C) 2003-2010 by Martin Preuss
4 email : martin@libchipcard.de
5
6 ***************************************************************************
7 * *
8 * This library is free software; you can redistribute it and/or *
9 * modify it under the terms of the GNU Lesser General Public *
10 * License as published by the Free Software Foundation; either *
11 * version 2.1 of the License, or (at your option) any later version. *
12 * *
13 * This library is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
16 * Lesser General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU Lesser General Public *
19 * License along with this library; if not, write to the Free Software *
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
21 * MA 02111-1307 USA *
22 * *
23 ***************************************************************************/
24
25
28#ifndef GWENHYWFAR_DB_H
29#define GWENHYWFAR_DB_H
30
32#include <gwenhywfar/path.h>
34#include <gwenhywfar/types.h>
35#include <stdio.h>
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41
102#define GWEN_DB_LINE_MAXSIZE 1024
103
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
156
160#define GWEN_DB_FLAGS_INSERT 0x40000000
161
165#define GWEN_DB_FLAGS_DOSMODE 0x80000000
166
168#define GWEN_DB_FLAGS_DEFAULT \
169 (\
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\
177 )
178
179
182#define GWEN_DB_FLAGS_COMPACT \
183 (\
184 GWEN_DB_FLAGS_QUOTE_VALUES | \
185 GWEN_DB_FLAGS_WRITE_SUBGROUPS | \
186 GWEN_DB_FLAGS_ESCAPE_CHARVALUES | \
187 GWEN_DB_FLAGS_UNESCAPE_CHARVALUES\
188 )
189
193#define GWEN_DB_FLAGS_HTTP \
194 (\
195 GWEN_DB_FLAGS_USE_COLON |\
196 GWEN_DB_FLAGS_UNTIL_EMPTY_LINE |\
197 GWEN_DB_FLAGS_OMIT_TYPES | \
198 GWEN_DB_FLAGS_DOSMODE \
199 )
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
219
220
229
251
252
253
258
267
275
276
285
305
330
331
345
366
367
378typedef void *(*GWEN_DB_NODES_CB)(GWEN_DB_NODE *node, void *user_data);
379
398 void *user_data);
399
404unsigned int GWEN_DB_Groups_Count(const GWEN_DB_NODE *node);
405
411
471 const char *path,
472 int idx,
473 const char *defVal);
484 uint32_t flags,
485 const char *path,
486 const char *val);
487
488
489
500 uint32_t flags,
501 const char *path,
502 int val);
503
504
517 const char *path,
518 const char *val,
519 int senseCase,
520 int check);
521
522
534 const char *path,
535 const char *val,
536 int senseCase);
537
538
548 const char *path,
549 int idx,
550 int defVal);
551
562 uint32_t flags,
563 const char *path,
564 int val);
565
566
580 const char *path,
581 int idx,
582 const void *defVal,
583 unsigned int defValSize,
584 unsigned int *returnValueSize);
585
598 uint32_t flags,
599 const char *path,
600 const void *val,
601 unsigned int valSize);
602
603
613 const char *path,
614 int idx,
615 void *defVal);
616
628 uint32_t flags,
629 const char *path,
630 void *val);
631
632
643int GWEN_DB_WriteVarValueToBuffer(GWEN_DB_NODE *n, const char *path, int index, GWEN_BUFFER *dstBuf);
644
645
654
666 uint32_t flags,
667 const char *path);
668
674
681void GWEN_DB_GroupRename(GWEN_DB_NODE *n, const char *newname);
682
699
717
729
741
750 const char *path);
760 const char *path);
761
770
784
792 uint32_t flags);
793
804 uint32_t newflags,
805 uint32_t mask);
806
817 uint32_t newflags,
818 uint32_t mask);
819
833
837 uint32_t dbflags);
838
840int GWEN_DB_ReadFromIo(GWEN_DB_NODE *n, GWEN_SYNCIO *sio, uint32_t dbflags);
841
844 const char *fname,
845 uint32_t dbflags);
846
849 const char *str,
850 int len,
851 uint32_t dbflags);
852
856 uint32_t dbflags);
857
860 GWEN_SYNCIO *sio,
861 uint32_t dbflags);
862
863
866 const char *fname,
867 uint32_t dbflags);
868
871 GWEN_BUFFER *buf,
872 uint32_t dbflags);
873
886 const char *fname,
887 const char *type,
888 GWEN_DB_NODE *params,
889 uint32_t dbflags);
890
903 const char *fname,
904 const char *type,
905 GWEN_DB_NODE *params,
906 uint32_t dbflags);
907
908
923
924
948
955
956
958void GWEN_DB_VariableRename(GWEN_DB_NODE *n, const char *newname);
959
978 void *user_data);
979
985unsigned int GWEN_DB_Variables_Count(const GWEN_DB_NODE *node);
986
994 const char *p);
995
1004 const char *path);
1005
1014 const char *path);
1015
1025 const char *path,
1026 unsigned int idx);
1027
1036
1037
1051
1072
1087
1106
1125 void *user_data);
1126
1131unsigned int GWEN_DB_Values_Count(const GWEN_DB_NODE *node);
1132
1139
1142 const char *p,
1143 unsigned int i);
1144
1151
1158
1161
1164 unsigned int *size);
1165
1166
1188
1195void GWEN_DB_Dump(GWEN_DB_NODE *n, int insert);
1204
1205
1211int GWEN_DB_ReplaceVars(GWEN_DB_NODE *db, const char *s, GWEN_BUFFER *dbuf);
1217
1218
1219#ifdef __cplusplus
1220}
1221#endif
1222
1223
1224#endif
1225
1226
1227
GWENHYWFAR_API int GWEN_DB_WriteToFastBuffer(GWEN_DB_NODE *node, GWEN_FAST_BUFFER *fb, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_ReadFromString(GWEN_DB_NODE *n, const char *str, int len, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_AddGroup(GWEN_DB_NODE *parent, GWEN_DB_NODE *node)
GWENHYWFAR_API void GWEN_DB_Dump(GWEN_DB_NODE *n, int insert)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetFirstValue(GWEN_DB_NODE *n)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_Group_new(const char *name)
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)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetFirstVar(GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_GetIntValue(GWEN_DB_NODE *n, const char *path, int idx, int defVal)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetNextVar(GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_ReadFile(GWEN_DB_NODE *n, const char *fname, uint32_t dbflags)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetParentGroup(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 int GWEN_DB_VariableExists(GWEN_DB_NODE *n, const char *path)
GWENHYWFAR_API const char * GWEN_DB_VariableName(GWEN_DB_NODE *n)
GWENHYWFAR_API void GWEN_DB_Group_free(GWEN_DB_NODE *n)
GWENHYWFAR_API void * GWEN_DB_GetPtrValue(GWEN_DB_NODE *n, const char *path, int idx, void *defVal)
void *(* GWEN_DB_NODES_CB)(GWEN_DB_NODE *node, void *user_data)
Definition db.h:378
GWENHYWFAR_API void GWEN_DB_ModifyBranchFlagsUp(GWEN_DB_NODE *n, uint32_t newflags, uint32_t mask)
GWENHYWFAR_API int GWEN_DB_IsValue(const GWEN_DB_NODE *n)
GWENHYWFAR_API void * GWEN_DB_Variables_Foreach(GWEN_DB_NODE *node, GWEN_DB_NODES_CB func, void *user_data)
GWENHYWFAR_API uint32_t GWEN_DB_GetNodeFlags(const GWEN_DB_NODE *n)
GWENHYWFAR_API unsigned int GWEN_DB_Variables_Count(const GWEN_DB_NODE *node)
GWENHYWFAR_API int GWEN_DB_SetPtrValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, void *val)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetNextGroup(GWEN_DB_NODE *n)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_FindNextGroup(GWEN_DB_NODE *n, const char *name)
GWENHYWFAR_API int GWEN_DB_WriteVarValueToBuffer(GWEN_DB_NODE *n, const char *path, int index, GWEN_BUFFER *dstBuf)
GWENHYWFAR_API const char * GWEN_DB_GetCharValueFromNode(const GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_ValueExists(GWEN_DB_NODE *n, const char *path, unsigned int idx)
GWENHYWFAR_API int GWEN_DB_ReadFromIo(GWEN_DB_NODE *n, GWEN_SYNCIO *sio, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_WriteToIo(GWEN_DB_NODE *node, GWEN_SYNCIO *sio, uint32_t dbflags)
GWENHYWFAR_API void GWEN_DB_ModifyBranchFlagsDown(GWEN_DB_NODE *n, uint32_t newflags, uint32_t mask)
GWENHYWFAR_API int GWEN_DB_DeleteGroup(GWEN_DB_NODE *n, const char *path)
GWENHYWFAR_API int GWEN_DB_WriteFile(GWEN_DB_NODE *n, const char *fname, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_ReadFromFastBuffer(GWEN_DB_NODE *n, GWEN_FAST_BUFFER *fb, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_ReplaceVars(GWEN_DB_NODE *db, const char *s, GWEN_BUFFER *dbuf)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_Group_dup(const GWEN_DB_NODE *n)
GWENHYWFAR_API void GWEN_DB_SetNodeFlags(GWEN_DB_NODE *n, uint32_t flags)
GWENHYWFAR_API int GWEN_DB_WriteToBuffer(GWEN_DB_NODE *n, GWEN_BUFFER *buf, uint32_t dbflags)
GWENHYWFAR_API int GWEN_DB_SetIntValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, int val)
GWENHYWFAR_API void GWEN_DB_VariableRename(GWEN_DB_NODE *n, const char *newname)
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)
GWEN_DB_NODE_TYPE
Definition db.h:233
@ GWEN_DB_NodeType_ValueInt
Definition db.h:243
@ GWEN_DB_NodeType_Group
Definition db.h:237
@ GWEN_DB_NodeType_ValueChar
Definition db.h:241
@ GWEN_DB_NodeType_ValuePtr
Definition db.h:247
@ GWEN_DB_NodeType_ValueLast
Definition db.h:249
@ GWEN_DB_NodeType_Var
Definition db.h:239
@ GWEN_DB_NodeType_Unknown
Definition db.h:235
@ GWEN_DB_NodeType_ValueBin
Definition db.h:245
GWENHYWFAR_API const void * GWEN_DB_GetBinValueFromNode(const GWEN_DB_NODE *n, unsigned int *size)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetNextValue(GWEN_DB_NODE *n)
GWENHYWFAR_API unsigned int GWEN_DB_Values_Count(const GWEN_DB_NODE *node)
GWENHYWFAR_API unsigned int GWEN_DB_Groups_Count(const GWEN_DB_NODE *node)
GWENHYWFAR_API int GWEN_DB_IsVariable(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 int GWEN_DB_AddGroupChildren(GWEN_DB_NODE *n, GWEN_DB_NODE *nn)
GWENHYWFAR_API void * GWEN_DB_Values_Foreach(GWEN_DB_NODE *node, GWEN_DB_NODES_CB func, void *user_data)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_FindFirstVar(GWEN_DB_NODE *n, const char *name)
GWENHYWFAR_API GWEN_DB_NODE_TYPE GWEN_DB_GetValueType(GWEN_DB_NODE *n)
GWENHYWFAR_API int GWEN_DB_SetCharValue(GWEN_DB_NODE *n, uint32_t flags, const char *path, const char *val)
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 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 int GWEN_DB_GetIntValueFromNode(const GWEN_DB_NODE *n)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetFirstGroup(GWEN_DB_NODE *n)
GWENHYWFAR_API const char * GWEN_DB_GroupName(GWEN_DB_NODE *n)
GWENHYWFAR_API void GWEN_DB_GroupRename(GWEN_DB_NODE *n, const char *newname)
GWENHYWFAR_API int GWEN_DB_SetCharValueInNode(GWEN_DB_NODE *n, const char *s)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_FindNextVar(GWEN_DB_NODE *n, const char *name)
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 int GWEN_DB_InsertGroup(GWEN_DB_NODE *parent, GWEN_DB_NODE *node)
GWENHYWFAR_API const char * GWEN_DB_GetCharValue(GWEN_DB_NODE *n, const char *path, int idx, const char *defVal)
GWENHYWFAR_API int GWEN_DB_ClearGroup(GWEN_DB_NODE *n, const char *path)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_FindFirstGroup(GWEN_DB_NODE *n, const char *name)
struct GWEN_DB_NODE GWEN_DB_NODE
Definition db.h:228
GWENHYWFAR_API void GWEN_DB_UnlinkGroup(GWEN_DB_NODE *n)
GWENHYWFAR_API GWEN_DB_NODE_TYPE GWEN_DB_GetVariableType(GWEN_DB_NODE *n, const char *p)
GWENHYWFAR_API GWEN_DB_NODE * GWEN_DB_GetGroup(GWEN_DB_NODE *n, uint32_t flags, const char *path)
GWENHYWFAR_API GWEN_DB_NODE_TYPE GWEN_DB_GetValueTypeByPath(GWEN_DB_NODE *n, const char *p, unsigned int i)
GWENHYWFAR_API void * GWEN_DB_Groups_Foreach(GWEN_DB_NODE *node, GWEN_DB_NODES_CB func, void *user_data)
struct GWEN_BUFFER GWEN_BUFFER
A dynamically resizeable text buffer.
Definition buffer.h:38
#define GWENHYWFAR_API
struct GWEN_SYNCIO GWEN_SYNCIO
Definition syncio.h:40