1 /***************************************************************************
2 kdbbackend.h - Methods for backend programing
4 begin : Mon Dec 25 2004
5 copyright : (C) 2004 by Avi Alkalay
7 ***************************************************************************/
9 /***************************************************************************
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the BSD License (revised). *
14 ***************************************************************************/
16 /*You have to include this file in order to write backends or for internal
17 *source files for elektra. You do not need this functions to use elektra!*/
25 #include <kdbprivate.h>
28 #define KDBEXPORT(module) KDB *libelektra_##module##_LTX_kdbBackendFactory(void)
30 #define KDBEXPORT(module) KDB *kdbBackendFactory(void)
36 * Switches to denote the backend methods. Used in calls to kdbBackendExport().
41 KDB_BE_OPEN=1, /*!< Next arg is backend for kdbOpen() */
42 KDB_BE_CLOSE=1<<1, /*!< Next arg is backend for kdbClose() */
43 KDB_BE_GET=1<<2, /*!< Next arg is backend for kdbGet() */
44 KDB_BE_SET=1<<3, /*!< Next arg is backend for kdbSet() */
45 KDB_BE_VERSION=1<<4, /*!< Next arg is char * for Version */
46 KDB_BE_DESCRIPTION=1<<5,/*!< Next arg is char * for Description */
47 KDB_BE_AUTHOR=1<<6, /*!< Next arg is char * for Author*/
48 KDB_BE_LICENCE=1<<7, /*!< Next arg is char * for Licence*/
49 KDB_BE_END=0 /*!< End of arguments */
57 KDB *kdbBackendExport(const char *backendName, ...);
60 int kdbMount(KDB *handle, const Key *mountpoint, const KeySet *config);
61 int kdbUnmount(KDB *handle, const Key *mountpoint);
62 Key *kdbGetMountpoint(KDB *handle, const Key *where);
64 /* Idea for new api...
65 unsigned long kdbGetCapability(KDB *handle, const Key *where, unsigned long mask);
66 const char *kdbGetString(KDB *handle, const Key *where, unsigned long which);
69 /* Old capability API */
70 KDBCap *kdbGetCapability(KDB *handle, const Key *where);
71 int kdbhGetErrno(const KDB *handle);
73 /* Some internal methods */
74 int kdbiRealloc (void ** buffer, size_t size);
75 void* kdbiMalloc (size_t size);
76 void kdbiFree (void *ptr);
77 char *kdbiStrDup (const char *s);
78 size_t kdbiStrLen(const char *s);
80 ssize_t kdbbEncode(void *kdbbDecoded, size_t size, char *returned);
81 ssize_t kdbbDecode(char *kdbbEncoded,void *returned);
83 int kdbbNeedsUTF8Conversion(void);
84 int kdbbkdbbUTF8Engine(int direction, char **string, size_t *inputOutputByteSize);
86 int kdbbEncodeChar(char c, char *buffer, size_t bufSize);
87 int kdbbDecodeChar(const char *from, char *into);
89 int kdbbFilenameToKeyName(const char *string, char *buffer, int bufSize);
90 int kdbbKeyNameToRelativeFilename(const char *string, char *buffer, size_t bufSize);
91 ssize_t kdbbKeyCalcRelativeFilename(const Key *key,char *relativeFilename,size_t maxSize);
93 ssize_t kdbbGetFullKeyName (KDB *handle, const char *forFilename, const Key *parentKey, Key *returned);
94 ssize_t kdbbGetFullFilename(KDB *handle, const Key *forKey,char *returned,size_t maxSize);
97 /* Some handle manipulation methods */
98 void *kdbhGetBackendData(const KDB *handle);
99 void *kdbhSetBackendData(KDB *handle, void *data);
101 KDBCap* kdbhSetCapability(KDB *handle, KDBCap *cap);
102 KDBCap* kdbhGetCapability(const KDB *handle);
104 Trie *kdbhGetTrie(const KDB *handle);
105 void kdbhSetTrie(KDB *handle, Trie *trie);
107 const Key *kdbhGetMountpoint(KDB *handle);
108 void kdbhSetMountpoint(KDB *handle, const Key* mountpoint);
110 KeySet *kdbhGetConfig(KDB *handle);
112 /* Capability methods */
113 KDBCap *capNew (void);
114 void capDel (KDBCap *cap);
116 const char *kdbcGetName (const KDBCap *cap);
117 const char *kdbcGetVersion (const KDBCap *cap);
118 const char *kdbcGetDescription (const KDBCap *cap);
119 const char *kdbcGetAuthor (const KDBCap *cap);
120 const char *kdbcGetLicence (const KDBCap *cap);
122 /* too many functions, use flags */
123 unsigned int kdbcGetonlyFullGet (const KDBCap *cap);
124 unsigned int kdbcGetonlyFullSet (const KDBCap *cap);
125 unsigned int kdbcGetonlyRemoveAll (const KDBCap *cap);
126 unsigned int kdbcGetonlyAddKeys (const KDBCap *cap);
127 unsigned int kdbcGetonlySystem (const KDBCap *cap);
128 unsigned int kdbcGetonlyUser (const KDBCap *cap);
129 unsigned int kdbcGetonlyFullSync (const KDBCap *cap);
130 unsigned int kdbcGetnoOwner (const KDBCap *cap);
131 unsigned int kdbcGetnoValue (const KDBCap *cap);
132 unsigned int kdbcGetnoComment (const KDBCap *cap);
133 unsigned int kdbcGetnoUID (const KDBCap *cap);
134 unsigned int kdbcGetnoGID (const KDBCap *cap);
135 unsigned int kdbcGetnoMode (const KDBCap *cap);
136 unsigned int kdbcGetnoDir (const KDBCap *cap);
137 unsigned int kdbcGetnoATime (const KDBCap *cap);
138 unsigned int kdbcGetnoMTime (const KDBCap *cap);
139 unsigned int kdbcGetnoCTime (const KDBCap *cap);
140 unsigned int kdbcGetnoRemove (const KDBCap *cap);
141 unsigned int kdbcGetnoStat (const KDBCap *cap);
142 unsigned int kdbcGetnoMount (const KDBCap *cap);
143 unsigned int kdbcGetnoBinary (const KDBCap *cap);
144 unsigned int kdbcGetnoString (const KDBCap *cap);
145 unsigned int kdbcGetnoTypes (const KDBCap *cap);
146 unsigned int kdbcGetnoError (const KDBCap *cap);
147 unsigned int kdbcGetnoLock (const KDBCap *cap);
148 unsigned int kdbcGetnoThread (const KDBCap *cap);
157 #endif /* KDBBACKEND_H */