|
hamsterdb Embedded Database 1.1.10
|
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__ */
1.7.3