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