hamsterdb Embedded Database 1.1.15
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 
00097 HAM_EXPORT ham_status_t HAM_CALLCONV
00098 ham_check_integrity(ham_db_t *db, ham_txn_t *txn);
00099 
00115 HAM_EXPORT ham_status_t HAM_CALLCONV
00116 ham_calc_maxkeys_per_page(ham_db_t *db, ham_size_t *keycount, 
00117             ham_u16_t keysize);
00118 
00130 HAM_EXPORT void HAM_CALLCONV
00131 ham_set_context_data(ham_db_t *db, void *data);
00132 
00143 HAM_EXPORT void * HAM_CALLCONV
00144 ham_get_context_data(ham_db_t *db);
00145 
00146 struct ham_file_filter_t;
00147 typedef struct ham_file_filter_t ham_file_filter_t;
00148 
00153 typedef ham_status_t (*ham_file_filter_before_write_cb_t)(ham_env_t *env, 
00154         ham_file_filter_t *filter, ham_u8_t *file_data, ham_size_t file_size);
00155 
00160 typedef ham_status_t (*ham_file_filter_after_read_cb_t)(ham_env_t *env, 
00161         ham_file_filter_t *filter, ham_u8_t *file_data, ham_size_t file_size);
00162 
00167 typedef void (*ham_file_filter_close_cb_t)(ham_env_t *env, 
00168         ham_file_filter_t *filter);
00169 
00184 struct ham_file_filter_t
00185 {
00187     void *userdata;
00188 
00190     ham_file_filter_before_write_cb_t before_write_cb;
00191 
00193     ham_file_filter_after_read_cb_t after_read_cb;
00194 
00196     ham_file_filter_close_cb_t close_cb;
00197 
00199     ham_u32_t _flags;
00200 
00202     ham_file_filter_t *_next, *_prev;
00203 
00204 };
00205 
00218 HAM_EXPORT ham_status_t HAM_CALLCONV
00219 ham_env_add_file_filter(ham_env_t *env, ham_file_filter_t *filter);
00220 
00235 HAM_EXPORT ham_status_t HAM_CALLCONV
00236 ham_env_remove_file_filter(ham_env_t *env, ham_file_filter_t *filter);
00237 
00238 struct ham_record_filter_t;
00239 typedef struct ham_record_filter_t ham_record_filter_t;
00240 
00245 typedef ham_status_t (*ham_record_filter_before_insert_cb_t)(ham_db_t *db, 
00246         ham_record_filter_t *filter, ham_record_t *record);
00247 
00252 typedef ham_status_t (*ham_record_filter_after_read_cb_t)(ham_db_t *db, 
00253         ham_record_filter_t *filter, ham_record_t *record);
00254 
00259 typedef void (*ham_record_filter_close_cb_t)(ham_db_t *db, 
00260         ham_record_filter_t *filter);
00261 
00276 struct ham_record_filter_t
00277 {
00279     void *userdata;
00280 
00282     ham_record_filter_before_insert_cb_t before_write_cb;
00283 
00285     ham_record_filter_after_read_cb_t after_read_cb;
00286 
00288     ham_record_filter_close_cb_t close_cb;
00289 
00291     ham_u32_t _flags;
00292 
00294     ham_record_filter_t *_next, *_prev;
00295 
00296 };
00297 
00310 HAM_EXPORT ham_status_t HAM_CALLCONV
00311 ham_add_record_filter(ham_db_t *db, ham_record_filter_t *filter);
00312 
00327 HAM_EXPORT ham_status_t HAM_CALLCONV
00328 ham_remove_record_filter(ham_db_t *db, ham_record_filter_t *filter);
00329 
00352 struct ham_device_t;
00353 typedef struct ham_device_t ham_device_t;
00354 HAM_EXPORT ham_status_t HAM_CALLCONV
00355 ham_env_set_device(ham_env_t *env, ham_device_t *device);
00356 
00372 HAM_EXPORT ham_device_t * HAM_CALLCONV
00373 ham_env_get_device(ham_env_t *env);
00374 
00382 HAM_EXPORT ham_db_t * HAM_CALLCONV
00383 ham_cursor_get_database(ham_cursor_t *cursor);
00384 
00396 struct mem_allocator_t;
00397 typedef struct mem_allocator_t mem_allocator_t;
00398 HAM_EXPORT ham_status_t HAM_CALLCONV
00399 ham_env_set_allocator(ham_env_t *env, mem_allocator_t *alloc);
00400 
00401 
00406 /* internal flag - do not use!! */
00407 #define HAM_HINT_UBER_FAST_ACCESS     0x00040000
00408 /* internal flag - do not use!! */
00409 #define HAM_HINT_RANDOM_ACCESS        0x00020000
00410 /* internal flag - do not use!! */
00411 #define HAM_HINT_SEQUENTIAL           0x00010000
00412 
00413 #ifdef __cplusplus
00414 } // extern "C"
00415 #endif 
00416 
00417 #endif /* HAM_HAMSTERDB_INT_H__ */