hamsterdb_int.h

Go to the documentation of this file.
00001 
00022 #ifndef HAM_HAMSTERDB_INT_H__
00023 #define HAM_HAMSTERDB_INT_H__
00024 
00025 #include <ham/hamsterdb.h>
00026 
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif 
00030 
00049 #define HAM_DEFAULT_DATABASE_NAME     (0xf000)
00050 
00055 #define HAM_FIRST_DATABASE_NAME       (0xf001)
00056 
00061 #define HAM_DUMMY_DATABASE_NAME       (0xf002)
00062 
00082 #define HAM_PARAM_GET_STATISTICS        0x00000206
00083 
00102 HAM_EXPORT ham_status_t HAM_CALLCONV
00103 ham_check_integrity(ham_db_t *db, ham_txn_t *txn);
00104 
00120 HAM_EXPORT ham_status_t HAM_CALLCONV
00121 ham_calc_maxkeys_per_page(ham_db_t *db, ham_size_t *keycount, 
00122             ham_u16_t keysize);
00123 
00135 HAM_EXPORT void HAM_CALLCONV
00136 ham_set_context_data(ham_db_t *db, void *data);
00137 
00148 HAM_EXPORT void * HAM_CALLCONV
00149 ham_get_context_data(ham_db_t *db);
00150 
00151 struct ham_file_filter_t;
00152 typedef struct ham_file_filter_t ham_file_filter_t;
00153 
00158 typedef ham_status_t (*ham_file_filter_before_write_cb_t)(ham_env_t *env, 
00159         ham_file_filter_t *filter, ham_u8_t *file_data, ham_size_t file_size);
00160 
00165 typedef ham_status_t (*ham_file_filter_after_read_cb_t)(ham_env_t *env, 
00166         ham_file_filter_t *filter, ham_u8_t *file_data, ham_size_t file_size);
00167 
00172 typedef void (*ham_file_filter_close_cb_t)(ham_env_t *env, 
00173         ham_file_filter_t *filter);
00174 
00189 struct ham_file_filter_t
00190 {
00192     void *userdata;
00193 
00195     ham_file_filter_before_write_cb_t before_write_cb;
00196 
00198     ham_file_filter_after_read_cb_t after_read_cb;
00199 
00201     ham_file_filter_close_cb_t close_cb;
00202 
00204     ham_u32_t _flags;
00205 
00207     ham_file_filter_t *_next, *_prev;
00208 
00209 };
00210 
00223 HAM_EXPORT ham_status_t HAM_CALLCONV
00224 ham_env_add_file_filter(ham_env_t *env, ham_file_filter_t *filter);
00225 
00240 HAM_EXPORT ham_status_t HAM_CALLCONV
00241 ham_env_remove_file_filter(ham_env_t *env, ham_file_filter_t *filter);
00242 
00243 struct ham_record_filter_t;
00244 typedef struct ham_record_filter_t ham_record_filter_t;
00245 
00250 typedef ham_status_t (*ham_record_filter_before_insert_cb_t)(ham_db_t *db, 
00251         ham_record_filter_t *filter, ham_record_t *record);
00252 
00257 typedef ham_status_t (*ham_record_filter_after_read_cb_t)(ham_db_t *db, 
00258         ham_record_filter_t *filter, ham_record_t *record);
00259 
00264 typedef void (*ham_record_filter_close_cb_t)(ham_db_t *db, 
00265         ham_record_filter_t *filter);
00266 
00281 struct ham_record_filter_t
00282 {
00284     void *userdata;
00285 
00287     ham_record_filter_before_insert_cb_t before_write_cb;
00288 
00290     ham_record_filter_after_read_cb_t after_read_cb;
00291 
00293     ham_record_filter_close_cb_t close_cb;
00294 
00296     ham_u32_t _flags;
00297 
00299     ham_record_filter_t *_next, *_prev;
00300 
00301 };
00302 
00315 HAM_EXPORT ham_status_t HAM_CALLCONV
00316 ham_add_record_filter(ham_db_t *db, ham_record_filter_t *filter);
00317 
00332 HAM_EXPORT ham_status_t HAM_CALLCONV
00333 ham_remove_record_filter(ham_db_t *db, ham_record_filter_t *filter);
00334 
00357 struct ham_device_t;
00358 typedef struct ham_device_t ham_device_t;
00359 HAM_EXPORT ham_status_t HAM_CALLCONV
00360 ham_env_set_device(ham_env_t *env, ham_device_t *device);
00361 
00369 HAM_EXPORT ham_db_t * HAM_CALLCONV
00370 ham_cursor_get_database(ham_cursor_t *cursor);
00371 
00376 /* internal flag - do not use!! */
00377 #define HAM_HINT_UBER_FAST_ACCESS     0x00040000
00378 /* internal flag - do not use!! */
00379 #define HAM_HINT_RANDOM_ACCESS        0x00020000
00380 /* internal flag - do not use!! */
00381 #define HAM_HINT_SEQUENTIAL           0x00010000
00382 
00383 #ifdef __cplusplus
00384 } // extern "C"
00385 #endif 
00386 
00387 #endif /* HAM_HAMSTERDB_INT_H__ */
Generated by  doxygen 1.6.3