contact | forum | legal | impressum | privacy

hamsterdb.h

Go to the documentation of this file.
00001 
00018 #ifndef HAM_HAMSTERDB_H__
00019 #define HAM_HAMSTERDB_H__
00020 
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024 
00025 #include <ham/types.h>
00026 
00033 struct ham_db_t;
00034 typedef struct ham_db_t ham_db_t;
00035 
00042 struct ham_env_t;
00043 typedef struct ham_env_t ham_env_t;
00044 
00054 struct ham_cursor_t;
00055 typedef struct ham_cursor_t ham_cursor_t;
00056 
00074 typedef struct
00075 {
00077     ham_size_t size;
00078 
00080     void *data;
00081 
00083     ham_u32_t flags;
00084 
00086     ham_u32_t _intflags;
00087 
00089     ham_u64_t _rid;
00090 
00091 } ham_record_t;
00092 
00094 #define HAM_RECORD_USER_ALLOC   1
00095 
00115 typedef struct
00116 {
00118     ham_u16_t size;
00119 
00121     void *data;
00122 
00124     ham_u32_t flags;
00125 
00127     ham_u32_t _flags;
00128 } ham_key_t;
00129 
00131 #define HAM_KEY_USER_ALLOC      1
00132 
00150 typedef struct {
00152     ham_u32_t name;
00153 
00155     ham_u64_t value;
00156 
00157 } ham_parameter_t;
00158 
00165 #define HAM_SUCCESS                  (  0)
00166 
00167 #define HAM_INV_KEYSIZE              ( -3)
00168 
00169 #define HAM_INV_PAGESIZE             ( -4)
00170 
00171 #define HAM_OUT_OF_MEMORY            ( -6)
00172 
00173 #define HAM_NOT_INITIALIZED          ( -7)
00174 
00175 #define HAM_INV_PARAMETER            ( -8)
00176 
00177 #define HAM_INV_FILE_HEADER          ( -9)
00178 
00179 #define HAM_INV_FILE_VERSION         (-10)
00180 
00181 #define HAM_KEY_NOT_FOUND            (-11)
00182 
00183 #define HAM_DUPLICATE_KEY            (-12)
00184 
00185 #define HAM_INTEGRITY_VIOLATED       (-13)
00186 
00187 #define HAM_INTERNAL_ERROR           (-14)
00188 
00189 #define HAM_DB_READ_ONLY             (-15)
00190 
00191 #define HAM_BLOB_NOT_FOUND           (-16)
00192 
00193 #define HAM_PREFIX_REQUEST_FULLKEY   (-17)
00194 
00195 #define HAM_IO_ERROR                 (-18)
00196 
00197 #define HAM_CACHE_FULL               (-19)
00198 
00199 #define HAM_NOT_IMPLEMENTED          (-20)
00200 
00201 #define HAM_FILE_NOT_FOUND           (-21)
00202 
00203 #define HAM_WOULD_BLOCK              (-22)
00204 
00205 #define HAM_NOT_READY                (-23)
00206 
00207 #define HAM_LIMITS_REACHED           (-24)
00208 
00209 #define HAM_ACCESS_DENIED            (-25)
00210 
00211 #define HAM_ALREADY_INITIALIZED      (-27)
00212 
00213 #define HAM_NEED_RECOVERY            (-28)
00214 
00215 #define HAM_CURSOR_STILL_OPEN        (-29)
00216 
00217 #define HAM_CURSOR_IS_NIL           (-100)
00218 
00219 #define HAM_DATABASE_NOT_FOUND      (-200)
00220 
00221 #define HAM_DATABASE_ALREADY_EXISTS (-201)
00222 
00223 #define HAM_DATABASE_ALREADY_OPEN   (-202)
00224 
00225 #define HAM_LOG_INV_FILE_HEADER     (-300)
00226 
00248 typedef void (HAM_CALLCONV *ham_errhandler_fun)
00249                     (int level, const char *message);
00250 
00266 HAM_EXPORT void HAM_CALLCONV
00267 ham_set_errhandler(ham_errhandler_fun f);
00268 
00276 HAM_EXPORT const char * HAM_CALLCONV
00277 ham_strerror(ham_status_t status);
00278 
00286 HAM_EXPORT void HAM_CALLCONV
00287 ham_get_version(ham_u32_t *major, ham_u32_t *minor,
00288         ham_u32_t *revision);
00289 
00297 HAM_EXPORT void HAM_CALLCONV
00298 ham_get_license(const char **licensee, const char **product);
00299 
00316 HAM_EXPORT ham_status_t HAM_CALLCONV
00317 ham_env_new(ham_env_t **env);
00318 
00330 HAM_EXPORT ham_status_t HAM_CALLCONV
00331 ham_env_delete(ham_env_t *env);
00332 
00364 HAM_EXPORT ham_status_t HAM_CALLCONV
00365 ham_env_create(ham_env_t *env, const char *filename,
00366         ham_u32_t flags, ham_u32_t mode);
00367 
00453 HAM_EXPORT ham_status_t HAM_CALLCONV
00454 ham_env_create_ex(ham_env_t *env, const char *filename,
00455         ham_u32_t flags, ham_u32_t mode, ham_parameter_t *param);
00456 
00475 HAM_EXPORT ham_status_t HAM_CALLCONV
00476 ham_env_open(ham_env_t *env, const char *filename, ham_u32_t flags);
00477 
00541 HAM_EXPORT ham_status_t HAM_CALLCONV
00542 ham_env_open_ex(ham_env_t *env, const char *filename,
00543         ham_u32_t flags, ham_parameter_t *param);
00544 
00593 HAM_EXPORT ham_status_t HAM_CALLCONV
00594 ham_env_create_db(ham_env_t *env, ham_db_t *db,
00595         ham_u16_t name, ham_u32_t flags, ham_parameter_t *params);
00596 
00626 HAM_EXPORT ham_status_t HAM_CALLCONV
00627 ham_env_open_db(ham_env_t *env, ham_db_t *db,
00628         ham_u16_t name, ham_u32_t flags, ham_parameter_t *params);
00629 
00654 HAM_EXPORT ham_status_t HAM_CALLCONV
00655 ham_env_rename_db(ham_env_t *env, ham_u16_t oldname, 
00656                 ham_u16_t newname, ham_u32_t flags);
00657 
00676 HAM_EXPORT ham_status_t HAM_CALLCONV
00677 ham_env_erase_db(ham_env_t *env, ham_u16_t name, ham_u32_t flags);
00678 
00711 HAM_EXPORT ham_status_t HAM_CALLCONV
00712 ham_env_enable_encryption(ham_env_t *env, ham_u8_t key[16], ham_u32_t flags);
00713 
00736 HAM_EXPORT ham_status_t HAM_CALLCONV
00737 ham_env_get_database_names(ham_env_t *env, ham_u16_t *names, ham_size_t *count);
00738 
00773 HAM_EXPORT ham_status_t HAM_CALLCONV
00774 ham_env_close(ham_env_t *env, ham_u32_t flags);
00775 
00791 struct ham_txn_t;
00792 typedef struct ham_txn_t ham_txn_t;
00793 
00815 extern ham_status_t
00816 ham_txn_begin(ham_txn_t **txn, ham_db_t *db, ham_u32_t flags);
00817 
00819 #define HAM_TXN_READ_ONLY                                       1
00820 
00838 extern ham_status_t
00839 ham_txn_commit(ham_txn_t *txn, ham_u32_t flags);
00840 
00858 extern ham_status_t
00859 ham_txn_abort(ham_txn_t *txn, ham_u32_t flags);
00860 
00873 HAM_EXPORT ham_status_t HAM_CALLCONV
00874 ham_new(ham_db_t **db);
00875 
00887 HAM_EXPORT ham_status_t HAM_CALLCONV
00888 ham_delete(ham_db_t *db);
00889 
00912 HAM_EXPORT ham_status_t HAM_CALLCONV
00913 ham_create(ham_db_t *db, const char *filename,
00914         ham_u32_t flags, ham_u32_t mode);
00915 
01007 HAM_EXPORT ham_status_t HAM_CALLCONV
01008 ham_create_ex(ham_db_t *db, const char *filename,
01009         ham_u32_t flags, ham_u32_t mode, ham_parameter_t *param);
01010 
01030 HAM_EXPORT ham_status_t HAM_CALLCONV
01031 ham_open(ham_db_t *db, const char *filename, ham_u32_t flags);
01032 
01100 HAM_EXPORT ham_status_t HAM_CALLCONV
01101 ham_open_ex(ham_db_t *db, const char *filename,
01102         ham_u32_t flags, ham_parameter_t *param);
01103 
01105 #define HAM_WRITE_THROUGH            0x00000001
01106 
01108 #define HAM_READ_ONLY                0x00000004
01109 
01110 /* unused                            0x00000008 */
01111 
01113 #define HAM_USE_BTREE                0x00000010
01114 
01115 /* reserved                          0x00000020 */
01116 
01118 #define HAM_DISABLE_VAR_KEYLEN       0x00000040
01119 
01121 #define HAM_IN_MEMORY_DB             0x00000080
01122 
01123 /* reserved                          0x00000100 */
01124 
01126 #define HAM_DISABLE_MMAP             0x00000200
01127 
01129 #define HAM_CACHE_STRICT             0x00000400
01130 
01131 /* Flag for @a ham_open, @a ham_open_ex, @a ham_create, @a ham_create_ex 
01132  * (deprecated) */
01133 #define HAM_DISABLE_FREELIST_FLUSH   0x00000800
01134 
01136 #define HAM_LOCK_EXCLUSIVE           0x00001000
01137 
01139 #define HAM_RECORD_NUMBER            0x00002000
01140 
01142 #define HAM_ENABLE_DUPLICATES        0x00004000
01143 
01146 #define HAM_ENABLE_RECOVERY          0x00008000
01147 
01149 #define HAM_AUTO_RECOVERY            0x00010000
01150 
01153 #define HAM_ENABLE_TRANSACTIONS      0x00020000
01154 
01157 #define HAM_PARAM_CACHESIZE          0x00000100
01158 
01161 #define HAM_PARAM_PAGESIZE           0x00000101
01162 
01164 #define HAM_PARAM_KEYSIZE            0x00000102
01165 
01168 #define HAM_PARAM_MAX_ENV_DATABASES  0x00000103
01169 
01177 HAM_EXPORT ham_u32_t HAM_CALLCONV
01178 ham_get_flags(ham_db_t *db);
01179 
01189 HAM_EXPORT ham_status_t HAM_CALLCONV
01190 ham_get_error(ham_db_t *db);
01191 
01204 typedef int (*ham_prefix_compare_func_t)
01205                                  (ham_db_t *db, 
01206                                   const ham_u8_t *lhs, ham_size_t lhs_length, 
01207                                   ham_size_t lhs_real_length,
01208                                   const ham_u8_t *rhs, ham_size_t rhs_length,
01209                                   ham_size_t rhs_real_length);
01210 
01226 HAM_EXPORT ham_status_t HAM_CALLCONV
01227 ham_set_prefix_compare_func(ham_db_t *db, ham_prefix_compare_func_t foo);
01228 
01237 typedef int (*ham_compare_func_t)(ham_db_t *db, 
01238                                   const ham_u8_t *lhs, ham_size_t lhs_length, 
01239                                   const ham_u8_t *rhs, ham_size_t rhs_length);
01240 
01261 HAM_EXPORT ham_status_t HAM_CALLCONV
01262 ham_set_compare_func(ham_db_t *db, ham_compare_func_t foo);
01263 
01293 HAM_EXPORT ham_status_t HAM_CALLCONV
01294 ham_enable_compression(ham_db_t *db, ham_u32_t level, ham_u32_t flags);
01295 
01332 HAM_EXPORT ham_status_t HAM_CALLCONV
01333 ham_find(ham_db_t *db, ham_txn_t *txn, ham_key_t *key,
01334         ham_record_t *record, ham_u32_t flags);
01335 
01390 HAM_EXPORT ham_status_t HAM_CALLCONV
01391 ham_insert(ham_db_t *db, ham_txn_t *txn, ham_key_t *key,
01392         ham_record_t *record, ham_u32_t flags);
01393 
01395 #define HAM_OVERWRITE                   1
01396 
01398 #define HAM_DUPLICATE                   2
01399 
01401 #define HAM_DUPLICATE_INSERT_BEFORE     4
01402 
01404 #define HAM_DUPLICATE_INSERT_AFTER      8
01405 
01407 #define HAM_DUPLICATE_INSERT_FIRST     16
01408 
01410 #define HAM_DUPLICATE_INSERT_LAST      32
01411 
01433 HAM_EXPORT ham_status_t HAM_CALLCONV
01434 ham_erase(ham_db_t *db, ham_txn_t *txn, ham_key_t *key, ham_u32_t flags);
01435 
01452 HAM_EXPORT ham_status_t HAM_CALLCONV
01453 ham_flush(ham_db_t *db, ham_u32_t flags);
01454 
01489 HAM_EXPORT ham_status_t HAM_CALLCONV
01490 ham_close(ham_db_t *db, ham_u32_t flags);
01491 
01493 #define HAM_AUTO_CLEANUP            1
01494 
01495 /* (Internal) flag for @a ham_close, @a ham_env_close */
01496 #define HAM_DONT_CLEAR_LOG          2
01497 
01499 #define HAM_TXN_AUTO_ABORT          4
01500 
01502 #define HAM_TXN_AUTO_COMMIT         8
01503 
01535 HAM_EXPORT ham_status_t HAM_CALLCONV
01536 ham_cursor_create(ham_db_t *db, ham_txn_t *txn, ham_u32_t flags,
01537         ham_cursor_t **cursor);
01538 
01557 HAM_EXPORT ham_status_t HAM_CALLCONV
01558 ham_cursor_clone(ham_cursor_t *src, ham_cursor_t **dest);
01559 
01612 HAM_EXPORT ham_status_t HAM_CALLCONV
01613 ham_cursor_move(ham_cursor_t *cursor, ham_key_t *key,
01614         ham_record_t *record, ham_u32_t flags);
01615 
01617 #define HAM_CURSOR_FIRST            1
01618 
01620 #define HAM_CURSOR_LAST             2
01621 
01623 #define HAM_CURSOR_NEXT             4
01624 
01626 #define HAM_CURSOR_PREVIOUS         8
01627 
01629 #define HAM_SKIP_DUPLICATES        16
01630 
01632 #define HAM_ONLY_DUPLICATES        32
01633 
01647 HAM_EXPORT ham_status_t HAM_CALLCONV
01648 ham_cursor_overwrite(ham_cursor_t *cursor, ham_record_t *record,
01649             ham_u32_t flags);
01650 
01669 HAM_EXPORT ham_status_t HAM_CALLCONV
01670 ham_cursor_find(ham_cursor_t *cursor, ham_key_t *key, ham_u32_t flags);
01671 
01741 HAM_EXPORT ham_status_t HAM_CALLCONV
01742 ham_cursor_insert(ham_cursor_t *cursor, ham_key_t *key,
01743             ham_record_t *record, ham_u32_t flags);
01744 
01764 HAM_EXPORT ham_status_t HAM_CALLCONV
01765 ham_cursor_erase(ham_cursor_t *cursor, ham_u32_t flags);
01766 
01782 HAM_EXPORT ham_status_t HAM_CALLCONV
01783 ham_cursor_get_duplicate_count(ham_cursor_t *cursor, 
01784         ham_size_t *count, ham_u32_t flags);
01785 
01797 HAM_EXPORT ham_status_t HAM_CALLCONV
01798 ham_cursor_close(ham_cursor_t *cursor);
01799 
01800 /*
01801  * @}
01802  */
01803 
01804 #ifdef __cplusplus
01805 } // extern "C"
01806 #endif
01807 
01808 #endif /* HAM_HAMSTERDB_H__ */
 
 

The hamsterdb API

 

Help us!

Found an information that is missing on this page? Please send a mail.