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
00377 #define HAM_HINT_UBER_FAST_ACCESS 0x00040000
00378
00379 #define HAM_HINT_RANDOM_ACCESS 0x00020000
00380
00381 #define HAM_HINT_SEQUENTIAL 0x00010000
00382
00383 #ifdef __cplusplus
00384 }
00385 #endif
00386
00387 #endif