db.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003  -------------------
00004  cvs         : $Id$
00005  begin       : Tue Sep 09 2003
00006  copyright   : (C) 2003 by Martin Preuss
00007  email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *                                                                         *
00011  *   This library is free software; you can redistribute it and/or         *
00012  *   modify it under the terms of the GNU Lesser General Public            *
00013  *   License as published by the Free Software Foundation; either          *
00014  *   version 2.1 of the License, or (at your option) any later version.    *
00015  *                                                                         *
00016  *   This library is distributed in the hope that it will be useful,       *
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00019  *   Lesser General Public License for more details.                       *
00020  *                                                                         *
00021  *   You should have received a copy of the GNU Lesser General Public      *
00022  *   License along with this library; if not, write to the Free Software   *
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,                 *
00024  *   MA  02111-1307  USA                                                   *
00025  *                                                                         *
00026  ***************************************************************************/
00027 
00028 
00031 #ifndef GWENHYWFAR_DB_H
00032 #define GWENHYWFAR_DB_H
00033 
00034 #include <gwenhywfar/gwenhywfarapi.h>
00035 #include <gwenhywfar/path.h>
00036 #include <gwenhywfar/fastbuffer.h>
00037 #include <gwenhywfar/types.h>
00038 #include <stdio.h>
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00044 
00105 #define GWEN_DB_LINE_MAXSIZE  1024
00106 
00122 #define GWEN_DB_FLAGS_OVERWRITE_VARS         0x00010000
00123 
00124 #define GWEN_DB_FLAGS_OVERWRITE_GROUPS       0x00020000
00125 
00126 #define GWEN_DB_FLAGS_QUOTE_VARNAMES         0x00040000
00127 
00128 #define GWEN_DB_FLAGS_QUOTE_VALUES           0x00080000
00129 
00130 #define GWEN_DB_FLAGS_WRITE_SUBGROUPS        0x00100000
00131 
00132 #define GWEN_DB_FLAGS_DETAILED_GROUPS        0x00200000
00133 
00135 #define GWEN_DB_FLAGS_INDEND                 0x00400000
00136 
00138 #define GWEN_DB_FLAGS_ADD_GROUP_NEWLINES     0x00800000
00139 
00141 #define GWEN_DB_FLAGS_USE_COLON              0x01000000
00142 
00143 #define GWEN_DB_FLAGS_UNTIL_EMPTY_LINE       0x02000000
00144 
00146 #define GWEN_DB_FLAGS_OMIT_TYPES             0x04000000
00147 
00148 #define GWEN_DB_FLAGS_APPEND_FILE            0x08000000
00149 
00150 #define GWEN_DB_FLAGS_ESCAPE_CHARVALUES      0x10000000
00151 
00153 #define GWEN_DB_FLAGS_UNESCAPE_CHARVALUES    0x10000000
00154 
00156 #define GWEN_DB_FLAGS_LOCKFILE               0x20000000
00157 
00161 #define GWEN_DB_FLAGS_INSERT                 0x40000000
00162 
00166 #define GWEN_DB_FLAGS_DOSMODE                0x80000000
00167 
00169 #define GWEN_DB_FLAGS_DEFAULT \
00170   (\
00171   GWEN_DB_FLAGS_QUOTE_VALUES | \
00172   GWEN_DB_FLAGS_WRITE_SUBGROUPS | \
00173   GWEN_DB_FLAGS_DETAILED_GROUPS | \
00174   GWEN_DB_FLAGS_INDEND | \
00175   GWEN_DB_FLAGS_ADD_GROUP_NEWLINES | \
00176   GWEN_DB_FLAGS_ESCAPE_CHARVALUES | \
00177   GWEN_DB_FLAGS_UNESCAPE_CHARVALUES\
00178   )
00179 
00180 
00183 #define GWEN_DB_FLAGS_COMPACT \
00184   (\
00185   GWEN_DB_FLAGS_QUOTE_VALUES | \
00186   GWEN_DB_FLAGS_WRITE_SUBGROUPS | \
00187   GWEN_DB_FLAGS_ESCAPE_CHARVALUES | \
00188   GWEN_DB_FLAGS_UNESCAPE_CHARVALUES\
00189   )
00190 
00194 #define GWEN_DB_FLAGS_HTTP \
00195   (\
00196   GWEN_DB_FLAGS_USE_COLON |\
00197   GWEN_DB_FLAGS_UNTIL_EMPTY_LINE |\
00198   GWEN_DB_FLAGS_OMIT_TYPES | \
00199   GWEN_DB_FLAGS_DOSMODE \
00200   )
00201 
00208 #define GWEN_DB_NODE_FLAGS_DIRTY                   0x00000001
00209 
00210 #define GWEN_DB_NODE_FLAGS_VOLATILE                0x00000002
00211 
00213 #define GWEN_DB_NODE_FLAGS_INHERIT_HASH_MECHANISM  0x00000004
00214 
00217 #define GWEN_DB_DEFAULT_LOCK_TIMEOUT 1000
00218 
00219 
00227 typedef struct GWEN_DB_NODE GWEN_DB_NODE;
00228 
00232 typedef enum {
00234   GWEN_DB_NodeType_Unknown=-1,
00236   GWEN_DB_NodeType_Group=0,
00238   GWEN_DB_NodeType_Var,
00240   GWEN_DB_NodeType_ValueChar,
00242   GWEN_DB_NodeType_ValueInt,
00244   GWEN_DB_NodeType_ValueBin,
00246   GWEN_DB_NodeType_ValuePtr,
00248   GWEN_DB_NodeType_ValueLast
00249 } GWEN_DB_NODE_TYPE;
00250 
00251 
00252 
00257 
00264 GWENHYWFAR_API 
00265 GWEN_DB_NODE *GWEN_DB_Group_new(const char *name);
00266 
00272 GWENHYWFAR_API 
00273 void GWEN_DB_Group_free(GWEN_DB_NODE *n);
00274 
00275 
00282 GWENHYWFAR_API 
00283 GWEN_DB_NODE *GWEN_DB_Group_dup(const GWEN_DB_NODE *n);
00284 
00302 GWENHYWFAR_API 
00303 GWEN_DB_NODE *GWEN_DB_GetFirstGroup(GWEN_DB_NODE *n);
00304 
00327 GWENHYWFAR_API 
00328 GWEN_DB_NODE *GWEN_DB_GetNextGroup(GWEN_DB_NODE *n);
00329 
00330 
00342 GWENHYWFAR_API 
00343 GWEN_DB_NODE *GWEN_DB_FindFirstGroup(GWEN_DB_NODE *n, const char *name);
00344 
00363 GWENHYWFAR_API 
00364 GWEN_DB_NODE *GWEN_DB_FindNextGroup(GWEN_DB_NODE *n, const char *name);
00365 
00366 
00377 typedef void *(*GWEN_DB_NODES_CB)(GWEN_DB_NODE *node, void *user_data);
00378 
00395 GWENHYWFAR_API 
00396 void *GWEN_DB_Groups_Foreach(GWEN_DB_NODE *node, GWEN_DB_NODES_CB func,
00397                              void *user_data);
00398 
00402 GWENHYWFAR_API 
00403 unsigned int GWEN_DB_Groups_Count(const GWEN_DB_NODE *node);
00461 GWENHYWFAR_API 
00462 const char *GWEN_DB_GetCharValue(GWEN_DB_NODE *n,
00463                                  const char *path,
00464                                  int idx,
00465                                  const char *defVal);
00474 GWENHYWFAR_API 
00475 int GWEN_DB_SetCharValue(GWEN_DB_NODE *n,
00476                          uint32_t flags,
00477                          const char *path,
00478                          const char *val);
00479 
00480 
00491 GWENHYWFAR_API 
00492 int GWEN_DB_AddCharValue(GWEN_DB_NODE *n,
00493                          const char *path,
00494                          const char *val,
00495                          int senseCase,
00496                          int check);
00497 
00498 
00508 GWENHYWFAR_API 
00509 int GWEN_DB_RemoveCharValue(GWEN_DB_NODE *n,
00510                             const char *path,
00511                             const char *val,
00512                             int senseCase);
00513 
00514 
00522 GWENHYWFAR_API 
00523 int GWEN_DB_GetIntValue(GWEN_DB_NODE *n,
00524                         const char *path,
00525                         int idx,
00526                         int defVal);
00527 
00536 GWENHYWFAR_API 
00537 int GWEN_DB_SetIntValue(GWEN_DB_NODE *n,
00538                         uint32_t flags,
00539                         const char *path,
00540                         int val);
00541 
00542 
00554 GWENHYWFAR_API 
00555 const void *GWEN_DB_GetBinValue(GWEN_DB_NODE *n,
00556                                 const char *path,
00557                                 int idx,
00558                                 const void *defVal,
00559                                 unsigned int defValSize,
00560                                 unsigned int *returnValueSize);
00561 
00572 GWENHYWFAR_API 
00573 int GWEN_DB_SetBinValue(GWEN_DB_NODE *n,
00574                         uint32_t flags,
00575                         const char *path,
00576                         const void *val,
00577                         unsigned int valSize);
00578 
00579 
00587 GWENHYWFAR_API
00588 void *GWEN_DB_GetPtrValue(GWEN_DB_NODE *n,
00589                           const char *path,
00590                           int idx,
00591                           void *defVal);
00592 
00602 GWENHYWFAR_API
00603 int GWEN_DB_SetPtrValue(GWEN_DB_NODE *n,
00604                         uint32_t flags,
00605                         const char *path,
00606                         void *val);
00615 
00625 GWENHYWFAR_API 
00626 GWEN_DB_NODE *GWEN_DB_GetGroup(GWEN_DB_NODE *n,
00627                                uint32_t flags,
00628                                const char *path);
00629 
00633 GWENHYWFAR_API 
00634 const char *GWEN_DB_GroupName(GWEN_DB_NODE *n);
00635 
00641 GWENHYWFAR_API 
00642 void GWEN_DB_GroupRename(GWEN_DB_NODE *n, const char *newname);
00643 
00658 GWENHYWFAR_API 
00659 int GWEN_DB_AddGroup(GWEN_DB_NODE *parent, GWEN_DB_NODE *node);
00660 
00676 GWENHYWFAR_API 
00677 int GWEN_DB_InsertGroup(GWEN_DB_NODE *parent, GWEN_DB_NODE *node);
00678 
00688 GWENHYWFAR_API 
00689 int GWEN_DB_AddGroupChildren(GWEN_DB_NODE *n, GWEN_DB_NODE *nn);
00690 
00700 GWENHYWFAR_API 
00701 void GWEN_DB_UnlinkGroup(GWEN_DB_NODE *n);
00702 
00709 GWENHYWFAR_API 
00710 int GWEN_DB_DeleteGroup(GWEN_DB_NODE *n,
00711                         const char *path);
00719 GWENHYWFAR_API 
00720 int GWEN_DB_ClearGroup(GWEN_DB_NODE *n,
00721                        const char *path);
00722 
00729 GWENHYWFAR_API 
00730 int GWEN_DB_IsGroup(const GWEN_DB_NODE *n);
00731 
00743 GWENHYWFAR_API 
00744   uint32_t GWEN_DB_GetNodeFlags(const GWEN_DB_NODE *n);
00745 
00751 GWENHYWFAR_API 
00752   void GWEN_DB_SetNodeFlags(GWEN_DB_NODE *n,
00753                             uint32_t flags);
00754 
00763 GWENHYWFAR_API 
00764 void GWEN_DB_ModifyBranchFlagsUp(GWEN_DB_NODE *n,
00765                                  uint32_t newflags,
00766                                  uint32_t mask);
00767 
00776 GWENHYWFAR_API 
00777 void GWEN_DB_ModifyBranchFlagsDown(GWEN_DB_NODE *n,
00778                                    uint32_t newflags,
00779                                    uint32_t mask);
00780 
00794 
00795 GWENHYWFAR_API 
00796 int GWEN_DB_ReadFromFastBuffer(GWEN_DB_NODE *n,
00797                                GWEN_FAST_BUFFER *fb,
00798                                uint32_t dbflags);
00799 
00809 GWENHYWFAR_API 
00810 int GWEN_DB_ReadFromIo(GWEN_DB_NODE *n,
00811                        GWEN_IO_LAYER *io,
00812                        uint32_t dbflags,
00813                        uint32_t guiid,
00814                        int msecs);
00815 
00816 GWENHYWFAR_API 
00817 int GWEN_DB_ReadFromFd(GWEN_DB_NODE *n,
00818                        int fd,
00819                        uint32_t dbflags,
00820                        uint32_t guiid,
00821                        int msecs);
00822 
00823 GWENHYWFAR_API 
00824 int GWEN_DB_ReadFile(GWEN_DB_NODE *n,
00825                      const char *fname,
00826                      uint32_t dbflags,
00827                      uint32_t guiid,
00828                      int msecs);
00829 
00830 GWENHYWFAR_API
00831 int GWEN_DB_ReadFromString(GWEN_DB_NODE *n,
00832                            const char *str,
00833                            int len,
00834                            uint32_t dbflags,
00835                            uint32_t guiid,
00836                            int msecs);
00837 
00838 GWENHYWFAR_API
00839 int GWEN_DB_WriteToFastBuffer(GWEN_DB_NODE *node,
00840                               GWEN_FAST_BUFFER *fb,
00841                               uint32_t dbflags);
00842 
00843 
00844 GWENHYWFAR_API 
00845 int GWEN_DB_WriteToIo(GWEN_DB_NODE *node,
00846                       GWEN_IO_LAYER *io,
00847                       uint32_t dbflags,
00848                       uint32_t guiid,
00849                       int msecs);
00850 
00851 GWENHYWFAR_API 
00852 int GWEN_DB_WriteFile(GWEN_DB_NODE *n,
00853                       const char *fname,
00854                       uint32_t dbflags,
00855                       uint32_t guiid,
00856                       int msecs);
00857 
00858 GWENHYWFAR_API 
00859 int GWEN_DB_WriteToFd(GWEN_DB_NODE *n, int fd, uint32_t dbflags, uint32_t guiid, int msecs);
00860 
00861 
00862 GWENHYWFAR_API 
00863 int GWEN_DB_WriteToBuffer(GWEN_DB_NODE *n,
00864                           GWEN_BUFFER *buf,
00865                           uint32_t dbflags,
00866                           uint32_t guiid,
00867                           int msecs);
00868 
00879 GWENHYWFAR_API 
00880 int GWEN_DB_ReadFileAs(GWEN_DB_NODE *n,
00881                        const char *fname,
00882                        const char *type,
00883                        GWEN_DB_NODE *params,
00884                        uint32_t dbflags,
00885                        uint32_t guiid,
00886                        int msecs);
00887 
00898 GWENHYWFAR_API 
00899 int GWEN_DB_WriteFileAs(GWEN_DB_NODE *n,
00900                         const char *fname,
00901                         const char *type,
00902                         GWEN_DB_NODE *params,
00903                         uint32_t dbflags,
00904                         uint32_t guiid,
00905                         int msecs);
00906 
00907 
00920 GWENHYWFAR_API 
00921 GWEN_DB_NODE *GWEN_DB_GetFirstVar(GWEN_DB_NODE *n);
00922 
00923 
00945 GWENHYWFAR_API 
00946 GWEN_DB_NODE *GWEN_DB_GetNextVar(GWEN_DB_NODE *n);
00947 
00952 GWENHYWFAR_API 
00953 const char *GWEN_DB_VariableName(GWEN_DB_NODE *n);
00954 
00955 
00956 GWENHYWFAR_API 
00957 void GWEN_DB_VariableRename(GWEN_DB_NODE *n, const char *newname);
00958 
00975 GWENHYWFAR_API 
00976 void *GWEN_DB_Variables_Foreach(GWEN_DB_NODE *node, GWEN_DB_NODES_CB func,
00977                                 void *user_data);
00978 
00983 GWENHYWFAR_API 
00984 unsigned int GWEN_DB_Variables_Count(const GWEN_DB_NODE *node);
00985     
00991 GWENHYWFAR_API 
00992 GWEN_DB_NODE_TYPE GWEN_DB_GetVariableType(GWEN_DB_NODE *n,
00993                                           const char *p);
00994 
01001 GWENHYWFAR_API 
01002 int GWEN_DB_DeleteVar(GWEN_DB_NODE *n,
01003                       const char *path);
01004 
01011 GWENHYWFAR_API 
01012 int GWEN_DB_VariableExists(GWEN_DB_NODE *n,
01013                            const char *path);
01014 
01022 GWENHYWFAR_API
01023   int GWEN_DB_ValueExists(GWEN_DB_NODE *n,
01024                           const char *path,
01025                           unsigned int idx);
01026 
01033 GWENHYWFAR_API 
01034 int GWEN_DB_IsVariable(const GWEN_DB_NODE *n);
01035 
01036 
01048 GWENHYWFAR_API 
01049 GWEN_DB_NODE *GWEN_DB_FindFirstVar(GWEN_DB_NODE *n, const char *name);
01050 
01069 GWENHYWFAR_API 
01070 GWEN_DB_NODE *GWEN_DB_FindNextVar(GWEN_DB_NODE *n, const char *name);
01071 
01084 GWENHYWFAR_API 
01085 GWEN_DB_NODE *GWEN_DB_GetFirstValue(GWEN_DB_NODE *n);
01086 
01103 GWENHYWFAR_API 
01104 GWEN_DB_NODE *GWEN_DB_GetNextValue(GWEN_DB_NODE *n);
01105 
01122 GWENHYWFAR_API 
01123 void *GWEN_DB_Values_Foreach(GWEN_DB_NODE *node, GWEN_DB_NODES_CB func,
01124                              void *user_data);
01125 
01129 GWENHYWFAR_API 
01130 unsigned int GWEN_DB_Values_Count(const GWEN_DB_NODE *node);
01131 
01136 GWENHYWFAR_API 
01137 GWEN_DB_NODE_TYPE GWEN_DB_GetValueType(GWEN_DB_NODE *n);
01138 
01139 GWENHYWFAR_API
01140 GWEN_DB_NODE_TYPE GWEN_DB_GetValueTypeByPath(GWEN_DB_NODE *n,
01141                                              const char *p,
01142                                              unsigned int i);
01143 
01148 GWENHYWFAR_API
01149 const char *GWEN_DB_GetCharValueFromNode(const GWEN_DB_NODE *n);
01150 
01155 GWENHYWFAR_API
01156 int GWEN_DB_SetCharValueInNode(GWEN_DB_NODE *n, const char *s);
01157 
01158 GWENHYWFAR_API
01159 int GWEN_DB_GetIntValueFromNode(const GWEN_DB_NODE *n);
01160 
01161 GWENHYWFAR_API
01162 const void *GWEN_DB_GetBinValueFromNode(const GWEN_DB_NODE *n,
01163                                         unsigned int *size);
01164 
01165 
01172 GWENHYWFAR_API 
01173 int GWEN_DB_IsValue(const GWEN_DB_NODE *n);
01187 
01194 GWENHYWFAR_API 
01195 void GWEN_DB_Dump(GWEN_DB_NODE *n, FILE *f, int insert);
01200 
01201 
01202 #ifdef __cplusplus
01203 }
01204 #endif
01205 
01206 
01207 #endif
01208 
01209 
01210 

Generated on Wed Sep 3 15:21:58 2008 for gwenhywfar by  doxygen 1.5.6