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
00086 HAM_EXPORT ham_status_t HAM_CALLCONV
00087 ham_check_integrity(ham_db_t *db, ham_txn_t *txn);
00088
00104 HAM_EXPORT ham_status_t HAM_CALLCONV
00105 ham_calc_maxkeys_per_page(ham_db_t *db, ham_size_t *keycount,
00106 ham_u16_t keysize);
00107
00119 HAM_EXPORT void HAM_CALLCONV
00120 ham_set_context_data(ham_db_t *db, void *data);
00121
00132 HAM_EXPORT void * HAM_CALLCONV
00133 ham_get_context_data(ham_db_t *db);
00134
00135 struct ham_file_filter_t;
00136 typedef struct ham_file_filter_t ham_file_filter_t;
00137
00142 typedef ham_status_t (*ham_file_filter_before_write_cb_t)(ham_env_t *env,
00143 ham_file_filter_t *filter, ham_u8_t *file_data, ham_size_t file_size);
00144
00149 typedef ham_status_t (*ham_file_filter_after_read_cb_t)(ham_env_t *env,
00150 ham_file_filter_t *filter, ham_u8_t *file_data, ham_size_t file_size);
00151
00156 typedef void (*ham_file_filter_close_cb_t)(ham_env_t *env,
00157 ham_file_filter_t *filter);
00158
00173 struct ham_file_filter_t
00174 {
00176 void *userdata;
00177
00179 ham_file_filter_before_write_cb_t before_write_cb;
00180
00182 ham_file_filter_after_read_cb_t after_read_cb;
00183
00185 ham_file_filter_close_cb_t close_cb;
00186
00188 ham_u32_t _flags;
00189
00191 ham_file_filter_t *_next, *_prev;
00192
00193 };
00194
00207 HAM_EXPORT ham_status_t HAM_CALLCONV
00208 ham_env_add_file_filter(ham_env_t *env, ham_file_filter_t *filter);
00209
00224 HAM_EXPORT ham_status_t HAM_CALLCONV
00225 ham_env_remove_file_filter(ham_env_t *env, ham_file_filter_t *filter);
00226
00227 struct ham_record_filter_t;
00228 typedef struct ham_record_filter_t ham_record_filter_t;
00229
00234 typedef ham_status_t (*ham_record_filter_before_insert_cb_t)(ham_db_t *db,
00235 ham_record_filter_t *filter, ham_record_t *record);
00236
00241 typedef ham_status_t (*ham_record_filter_after_read_cb_t)(ham_db_t *db,
00242 ham_record_filter_t *filter, ham_record_t *record);
00243
00248 typedef void (*ham_record_filter_close_cb_t)(ham_db_t *db,
00249 ham_record_filter_t *filter);
00250
00265 struct ham_record_filter_t
00266 {
00268 void *userdata;
00269
00271 ham_record_filter_before_insert_cb_t before_write_cb;
00272
00274 ham_record_filter_after_read_cb_t after_read_cb;
00275
00277 ham_record_filter_close_cb_t close_cb;
00278
00280 ham_u32_t _flags;
00281
00283 ham_record_filter_t *_next, *_prev;
00284
00285 };
00286
00299 HAM_EXPORT ham_status_t HAM_CALLCONV
00300 ham_add_record_filter(ham_db_t *db, ham_record_filter_t *filter);
00301
00316 HAM_EXPORT ham_status_t HAM_CALLCONV
00317 ham_remove_record_filter(ham_db_t *db, ham_record_filter_t *filter);
00318
00341 struct ham_device_t;
00342 typedef struct ham_device_t ham_device_t;
00343 HAM_EXPORT ham_status_t HAM_CALLCONV
00344 ham_env_set_device(ham_env_t *env, ham_device_t *device);
00345
00353 HAM_EXPORT ham_db_t * HAM_CALLCONV
00354 ham_cursor_get_database(ham_cursor_t *cursor);
00355
00360
00361 #define HAM_DAM_FAST_INSERT 0x0004
00362
00363 #define HAM_HINT_UBER_FAST_ACCESS 0x00040000
00364
00365 #define HAM_HINT_RANDOM_ACCESS 0x00020000
00366
00367 #define HAM_HINT_SEQUENTIAL 0x00010000
00368
00369 #ifdef __cplusplus
00370 }
00371 #endif
00372
00373 #endif