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 /* internal flag - do not use!! */
00361 #define HAM_HINT_UBER_FAST_ACCESS     0x00040000
00362 /* internal flag - do not use!! */
00363 #define HAM_HINT_RANDOM_ACCESS        0x00020000
00364 /* internal flag - do not use!! */
00365 #define HAM_HINT_SEQUENTIAL           0x00010000
00366 
00367 #ifdef __cplusplus
00368 } // extern "C"
00369 #endif 
00370 
00371 #endif /* HAM_HAMSTERDB_INT_H__ */

Generated on Wed Apr 14 20:37:55 2010 for hamsterdb Embedded Database by  doxygen 1.6.1