00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef GWEN_STO_STORAGE_BE_H
00029 #define GWEN_STO_STORAGE_BE_H
00030
00031
00032 #include <gwenhywfar/st_storage_be.h>
00033 #include <gwenhywfar/st_client_be.h>
00034 #include <gwenhywfar/st_type_be.h>
00035 #include <gwenhywfar/st_object_be.h>
00036 #include <gwenhywfar/st_find.h>
00037 #include <gwenhywfar/inherit.h>
00038
00039
00040 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_STO_STORAGE, GWENHYWFAR_API)
00041 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_STO_STORAGE, GWEN_StoStorage, GWENHYWFAR_API)
00042
00043
00044 typedef int (*GWEN_STO_STORAGE_REGISTERCLIENT_FN)(GWEN_STO_STORAGE *st,
00045 const char *userName,
00046 GWEN_STO_CLIENT **pcl);
00047 typedef int (*GWEN_STO_STORAGE_UNREGISTERCLIENT_FN)(GWEN_STO_STORAGE *st,
00048 GWEN_STO_CLIENT *cl);
00049
00050
00051 typedef int (*GWEN_STO_STORAGE_CREATE_FN)(GWEN_STO_STORAGE *st,
00052 GWEN_STO_CLIENT *cl);
00053
00054 typedef int (*GWEN_STO_STORAGE_OPEN_FN)(GWEN_STO_STORAGE *st,
00055 GWEN_STO_CLIENT *cl,
00056 GWEN_TYPE_UINT32 openFlags);
00057
00058 typedef int (*GWEN_STO_STORAGE_CLOSE_FN)(GWEN_STO_STORAGE *st,
00059 GWEN_STO_CLIENT *cl,
00060 const char *reason);
00061
00062 typedef int (*GWEN_STO_STORAGE_BEGINEDIT_FN)(GWEN_STO_STORAGE *st,
00063 GWEN_STO_CLIENT *cl);
00064 typedef int (*GWEN_STO_STORAGE_ENDEDIT_FN)(GWEN_STO_STORAGE *st,
00065 GWEN_STO_CLIENT *cl,
00066 GWEN_STO_CLOSEMODE cm);
00067
00068
00069 typedef int (*GWEN_STO_STORAGE_CREATETYPE_FN)(GWEN_STO_STORAGE *st,
00070 GWEN_STO_CLIENT *cl,
00071 const char *typeName,
00072 const char *name,
00073 GWEN_STO_TYPE **pts);
00074
00075
00076 typedef int (*GWEN_STO_STORAGE_OPENTYPE_FN)(GWEN_STO_STORAGE *st,
00077 GWEN_STO_CLIENT *cl,
00078 const char *typeName,
00079 const char *name,
00080 GWEN_TYPE_UINT32 openFlags,
00081 GWEN_STO_TYPE **pts);
00082
00083 typedef int (*GWEN_STO_STORAGE_CLOSETYPE_FN)(GWEN_STO_STORAGE *st,
00084 GWEN_STO_CLIENT *cl,
00085 GWEN_STO_TYPE *ts);
00086
00087
00088
00089 typedef int (*GWEN_STO_STORAGE_FINDFIRSTOBJECT_FN)(GWEN_STO_STORAGE *st,
00090 GWEN_STO_CLIENT *cl,
00091 GWEN_STO_TYPE *ts,
00092 GWEN_STO_FIND **pfnd,
00093 GWEN_TYPE_UINT32 *id);
00094 typedef int (*GWEN_STO_STORAGE_FINDNEXTOBJECT_FN)(GWEN_STO_STORAGE *st,
00095 GWEN_STO_CLIENT *cl,
00096 GWEN_STO_TYPE *ts,
00097 GWEN_STO_FIND *fnd,
00098 GWEN_TYPE_UINT32 *id);
00099 typedef int (*GWEN_STO_STORAGE_CLOSEFIND_FN)(GWEN_STO_STORAGE *st,
00100 GWEN_STO_CLIENT *cl,
00101 GWEN_STO_TYPE *ts,
00102 GWEN_STO_FIND *fnd);
00103
00104 typedef int (*GWEN_STO_STORAGE_CREATEOBJECT_FN)(GWEN_STO_STORAGE *st,
00105 GWEN_STO_CLIENT *cl,
00106 GWEN_STO_TYPE *ts,
00107 GWEN_STO_OBJECT **po);
00108
00109 typedef int (*GWEN_STO_STORAGE_OPENOBJECT_FN)(GWEN_STO_STORAGE *st,
00110 GWEN_STO_CLIENT *cl,
00111 GWEN_STO_TYPE *ts,
00112 GWEN_TYPE_UINT32 id,
00113 GWEN_TYPE_UINT32 openFlags,
00114 GWEN_STO_OBJECT **po);
00115
00116 typedef int (*GWEN_STO_STORAGE_CLOSEOBJECT_FN)(GWEN_STO_STORAGE *st,
00117 GWEN_STO_CLIENT *cl,
00118 GWEN_STO_TYPE *ts,
00119 GWEN_STO_OBJECT *o);
00120
00121 typedef int (*GWEN_STO_STORAGE_DELETEOBJECT_FN)(GWEN_STO_STORAGE *st,
00122 GWEN_STO_CLIENT *cl,
00123 GWEN_STO_TYPE *ts,
00124 GWEN_STO_OBJECT *o);
00125
00126 typedef int (*GWEN_STO_STORAGE_LOCKOBJECT_FN)(GWEN_STO_STORAGE *st,
00127 GWEN_STO_CLIENT *cl,
00128 GWEN_STO_TYPE *ts,
00129 GWEN_TYPE_UINT32 id,
00130 GWEN_STO_LOCKMODE lm);
00131
00132
00133 GWENHYWFAR_API
00134 GWEN_STO_STORAGE *GWEN_StoStorage_new(const char *typeName,
00135 const char *address);
00136
00137
00138 GWENHYWFAR_API
00139 GWEN_STO_CLIENT_LIST*
00140 GWEN_StoStorage_GetClientList(const GWEN_STO_STORAGE *st);
00141
00142 GWENHYWFAR_API
00143 GWEN_STO_CLIENT *GWEN_StoStorage_FindClient(const GWEN_STO_STORAGE *st,
00144 GWEN_TYPE_UINT32 id);
00145
00146
00147 GWENHYWFAR_API
00148 GWEN_STO_TYPE_LIST*
00149 GWEN_StoStorage_GetTypeList(const GWEN_STO_STORAGE *st);
00150
00151 GWENHYWFAR_API
00152 GWEN_STO_TYPE *GWEN_StoStorage_FindTypeById(const GWEN_STO_STORAGE *st,
00153 GWEN_TYPE_UINT32 id);
00154
00155 GWENHYWFAR_API
00156 GWEN_STO_TYPE *GWEN_StoStorage_FindTypeByName(const GWEN_STO_STORAGE *st,
00157 const char *typeName,
00158 const char *name);
00159
00160 GWENHYWFAR_API
00161 void GWEN_StoStorage_AddType(GWEN_STO_STORAGE *st, GWEN_STO_TYPE *ty);
00162
00163
00164 GWENHYWFAR_API
00165 GWEN_STO_OBJECT_LIST*
00166 GWEN_StoStorage_GetObjectList(const GWEN_STO_STORAGE *st);
00167
00168 GWENHYWFAR_API
00169 GWEN_STO_OBJECT *GWEN_StoStorage_FindObject(const GWEN_STO_STORAGE *st,
00170 GWEN_TYPE_UINT32 id);
00171
00172 GWENHYWFAR_API
00173 void GWEN_StoStorage_AddObject(GWEN_STO_STORAGE *st, GWEN_STO_OBJECT *o);
00174
00175
00176
00177 GWENHYWFAR_API
00178 GWEN_STO_CLOSEMODE GWEN_StoCloseMode_fromString(const char *s);
00179
00180 GWENHYWFAR_API
00181 const char *GWEN_StoCloseMode_toString(GWEN_STO_CLOSEMODE cm);
00182
00183 GWENHYWFAR_API
00184 GWEN_STO_LOCKMODE GWEN_StoLockMode_fromString(const char *s);
00185
00186 GWENHYWFAR_API
00187 const char *GWEN_StoLockMode_toString(GWEN_STO_LOCKMODE lm);
00188
00189
00190 GWENHYWFAR_API
00191 void GWEN_StoStorage_LogCallback(GWEN_STO_STORAGE *st,
00192 const GWEN_STO_LOG *log);
00193
00194
00195
00196 GWENHYWFAR_API
00197 GWEN_STO_STORAGE_CREATE_FN
00198 GWEN_StoStorage_SetCreateFn(GWEN_STO_STORAGE *st,
00199 GWEN_STO_STORAGE_CREATE_FN f);
00200
00201 GWENHYWFAR_API
00202 GWEN_STO_STORAGE_OPEN_FN
00203 GWEN_StoStorage_SetOpenFn(GWEN_STO_STORAGE *st,
00204 GWEN_STO_STORAGE_OPEN_FN f);
00205
00206 GWENHYWFAR_API
00207 GWEN_STO_STORAGE_CLOSE_FN
00208 GWEN_StoStorage_SetCloseFn(GWEN_STO_STORAGE *st,
00209 GWEN_STO_STORAGE_CLOSE_FN f);
00210
00211 GWENHYWFAR_API
00212 GWEN_STO_STORAGE_REGISTERCLIENT_FN
00213 GWEN_StoStorage_SetRegisterClientFn(GWEN_STO_STORAGE *st,
00214 GWEN_STO_STORAGE_REGISTERCLIENT_FN f);
00215
00216 GWENHYWFAR_API
00217 GWEN_STO_STORAGE_UNREGISTERCLIENT_FN
00218 GWEN_StoStorage_SetUnregisterClientFn(GWEN_STO_STORAGE *st,
00219 GWEN_STO_STORAGE_UNREGISTERCLIENT_FN f);
00220
00221 GWENHYWFAR_API
00222 GWEN_STO_STORAGE_BEGINEDIT_FN
00223 GWEN_StoStorage_SetBeginEditFn(GWEN_STO_STORAGE *st,
00224 GWEN_STO_STORAGE_BEGINEDIT_FN f);
00225
00226 GWENHYWFAR_API
00227 GWEN_STO_STORAGE_ENDEDIT_FN
00228 GWEN_StoStorage_SetEndEditFn(GWEN_STO_STORAGE *st,
00229 GWEN_STO_STORAGE_ENDEDIT_FN f);
00230
00231 GWENHYWFAR_API
00232 GWEN_STO_STORAGE_CREATETYPE_FN
00233 GWEN_StoStorage_SetCreateTypeFn(GWEN_STO_STORAGE *st,
00234 GWEN_STO_STORAGE_CREATETYPE_FN f);
00235
00236 GWENHYWFAR_API
00237 GWEN_STO_STORAGE_OPENTYPE_FN
00238 GWEN_StoStorage_SetOpenTypeFn(GWEN_STO_STORAGE *st,
00239 GWEN_STO_STORAGE_OPENTYPE_FN f);
00240
00241 GWENHYWFAR_API
00242 GWEN_STO_STORAGE_CLOSETYPE_FN
00243 GWEN_StoStorage_SetCloseTypeFn(GWEN_STO_STORAGE *st,
00244 GWEN_STO_STORAGE_CLOSETYPE_FN f);
00245
00246 GWENHYWFAR_API
00247 GWEN_STO_STORAGE_FINDFIRSTOBJECT_FN
00248 GWEN_StoStorage_SetFindFirstObjectFn(GWEN_STO_STORAGE *st,
00249 GWEN_STO_STORAGE_FINDFIRSTOBJECT_FN f);
00250
00251 GWENHYWFAR_API
00252 GWEN_STO_STORAGE_FINDNEXTOBJECT_FN
00253 GWEN_StoStorage_SetFindNextObjectFn(GWEN_STO_STORAGE *st,
00254 GWEN_STO_STORAGE_FINDNEXTOBJECT_FN f);
00255
00256 GWENHYWFAR_API
00257 GWEN_STO_STORAGE_CLOSEFIND_FN
00258 GWEN_StoStorage_SetCloseFindFn(GWEN_STO_STORAGE *st,
00259 GWEN_STO_STORAGE_CLOSEFIND_FN f);
00260
00261 GWENHYWFAR_API
00262 GWEN_STO_STORAGE_CREATEOBJECT_FN
00263 GWEN_StoStorage_SetCreateObjectFn(GWEN_STO_STORAGE *st,
00264 GWEN_STO_STORAGE_CREATEOBJECT_FN f);
00265
00266 GWENHYWFAR_API
00267 GWEN_STO_STORAGE_OPENOBJECT_FN
00268 GWEN_StoStorage_SetOpenObjectFn(GWEN_STO_STORAGE *st,
00269 GWEN_STO_STORAGE_OPENOBJECT_FN f);
00270
00271 GWENHYWFAR_API
00272 GWEN_STO_STORAGE_CLOSEOBJECT_FN
00273 GWEN_StoStorage_SetCloseObjectFn(GWEN_STO_STORAGE *st,
00274 GWEN_STO_STORAGE_CLOSEOBJECT_FN f);
00275
00276 GWENHYWFAR_API
00277 GWEN_STO_STORAGE_DELETEOBJECT_FN
00278 GWEN_StoStorage_SetDeleteObjectFn(GWEN_STO_STORAGE *st,
00279 GWEN_STO_STORAGE_DELETEOBJECT_FN f);
00280
00281 GWENHYWFAR_API
00282 GWEN_STO_STORAGE_LOCKOBJECT_FN
00283 GWEN_StoStorage_SetLockObjectFn(GWEN_STO_STORAGE *st,
00284 GWEN_STO_STORAGE_LOCKOBJECT_FN f);
00285
00286
00287
00288 #endif
00289
00290
00291