Feathercoin  0.5.0
P2P Digital Currency
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
c.h
Go to the documentation of this file.
1 /* Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2  Use of this source code is governed by a BSD-style license that can be
3  found in the LICENSE file. See the AUTHORS file for names of contributors.
4 
5  C bindings for leveldb. May be useful as a stable ABI that can be
6  used by programs that keep leveldb in a shared library, or for
7  a JNI api.
8 
9  Does not support:
10  . getters for the option types
11  . custom comparators that implement key shortening
12  . capturing post-write-snapshot
13  . custom iter, db, env, cache implementations using just the C bindings
14 
15  Some conventions:
16 
17  (1) We expose just opaque struct pointers and functions to clients.
18  This allows us to change internal representations without having to
19  recompile clients.
20 
21  (2) For simplicity, there is no equivalent to the Slice type. Instead,
22  the caller has to pass the pointer and length as separate
23  arguments.
24 
25  (3) Errors are represented by a null-terminated c string. NULL
26  means no error. All operations that can raise an error are passed
27  a "char** errptr" as the last argument. One of the following must
28  be true on entry:
29  *errptr == NULL
30  *errptr points to a malloc()ed null-terminated error message
31  (On Windows, *errptr must have been malloc()-ed by this library.)
32  On success, a leveldb routine leaves *errptr unchanged.
33  On failure, leveldb frees the old value of *errptr and
34  set *errptr to a malloc()ed error message.
35 
36  (4) Bools have the type unsigned char (0 == false; rest == true)
37 
38  (5) All of the pointer arguments must be non-NULL.
39 */
40 
41 #ifndef STORAGE_LEVELDB_INCLUDE_C_H_
42 #define STORAGE_LEVELDB_INCLUDE_C_H_
43 
44 #ifdef __cplusplus
45 extern "C" {
46 #endif
47 
48 #include <stdarg.h>
49 #include <stddef.h>
50 #include <stdint.h>
51 
52 /* Exported types */
53 
54 typedef struct leveldb_t leveldb_t;
70 
71 /* DB operations */
72 
73 extern leveldb_t* leveldb_open(
74  const leveldb_options_t* options,
75  const char* name,
76  char** errptr);
77 
78 extern void leveldb_close(leveldb_t* db);
79 
80 extern void leveldb_put(
81  leveldb_t* db,
82  const leveldb_writeoptions_t* options,
83  const char* key, size_t keylen,
84  const char* val, size_t vallen,
85  char** errptr);
86 
87 extern void leveldb_delete(
88  leveldb_t* db,
89  const leveldb_writeoptions_t* options,
90  const char* key, size_t keylen,
91  char** errptr);
92 
93 extern void leveldb_write(
94  leveldb_t* db,
95  const leveldb_writeoptions_t* options,
96  leveldb_writebatch_t* batch,
97  char** errptr);
98 
99 /* Returns NULL if not found. A malloc()ed array otherwise.
100  Stores the length of the array in *vallen. */
101 extern char* leveldb_get(
102  leveldb_t* db,
103  const leveldb_readoptions_t* options,
104  const char* key, size_t keylen,
105  size_t* vallen,
106  char** errptr);
107 
109  leveldb_t* db,
110  const leveldb_readoptions_t* options);
111 
113  leveldb_t* db);
114 
115 extern void leveldb_release_snapshot(
116  leveldb_t* db,
117  const leveldb_snapshot_t* snapshot);
118 
119 /* Returns NULL if property name is unknown.
120  Else returns a pointer to a malloc()-ed null-terminated value. */
121 extern char* leveldb_property_value(
122  leveldb_t* db,
123  const char* propname);
124 
125 extern void leveldb_approximate_sizes(
126  leveldb_t* db,
127  int num_ranges,
128  const char* const* range_start_key, const size_t* range_start_key_len,
129  const char* const* range_limit_key, const size_t* range_limit_key_len,
130  uint64_t* sizes);
131 
132 extern void leveldb_compact_range(
133  leveldb_t* db,
134  const char* start_key, size_t start_key_len,
135  const char* limit_key, size_t limit_key_len);
136 
137 /* Management operations */
138 
139 extern void leveldb_destroy_db(
140  const leveldb_options_t* options,
141  const char* name,
142  char** errptr);
143 
144 extern void leveldb_repair_db(
145  const leveldb_options_t* options,
146  const char* name,
147  char** errptr);
148 
149 /* Iterator */
150 
152 extern unsigned char leveldb_iter_valid(const leveldb_iterator_t*);
155 extern void leveldb_iter_seek(leveldb_iterator_t*, const char* k, size_t klen);
158 extern const char* leveldb_iter_key(const leveldb_iterator_t*, size_t* klen);
159 extern const char* leveldb_iter_value(const leveldb_iterator_t*, size_t* vlen);
160 extern void leveldb_iter_get_error(const leveldb_iterator_t*, char** errptr);
161 
162 /* Write batch */
163 
167 extern void leveldb_writebatch_put(
169  const char* key, size_t klen,
170  const char* val, size_t vlen);
171 extern void leveldb_writebatch_delete(
173  const char* key, size_t klen);
174 extern void leveldb_writebatch_iterate(
176  void* state,
177  void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen),
178  void (*deleted)(void*, const char* k, size_t klen));
179 
180 /* Options */
181 
191  leveldb_options_t*, unsigned char);
193  leveldb_options_t*, unsigned char);
195  leveldb_options_t*, unsigned char);
203 
204 enum {
207 };
209 
210 /* Comparator */
211 
213  void* state,
214  void (*destructor)(void*),
215  int (*compare)(
216  void*,
217  const char* a, size_t alen,
218  const char* b, size_t blen),
219  const char* (*name)(void*));
221 
222 /* Filter policy */
223 
225  void* state,
226  void (*destructor)(void*),
227  char* (*create_filter)(
228  void*,
229  const char* const* key_array, const size_t* key_length_array,
230  int num_keys,
231  size_t* filter_length),
232  unsigned char (*key_may_match)(
233  void*,
234  const char* key, size_t length,
235  const char* filter, size_t filter_length),
236  const char* (*name)(void*));
238 
240  int bits_per_key);
241 
242 /* Read options */
243 
248  unsigned char);
250  leveldb_readoptions_t*, unsigned char);
253  const leveldb_snapshot_t*);
254 
255 /* Write options */
256 
260  leveldb_writeoptions_t*, unsigned char);
261 
262 /* Cache */
263 
264 extern leveldb_cache_t* leveldb_cache_create_lru(size_t capacity);
265 extern void leveldb_cache_destroy(leveldb_cache_t* cache);
266 
267 /* Env */
268 
270 extern void leveldb_env_destroy(leveldb_env_t*);
271 
272 /* Utility */
273 
274 /* Calls free(ptr).
275  REQUIRES: ptr was malloc()-ed and returned by one of the routines
276  in this file. Note that in certain cases (typically on Windows), you
277  may need to call this routine instead of free(ptr) to dispose of
278  malloc()-ed memory returned by this library. */
279 extern void leveldb_free(void* ptr);
280 
281 /* Return the major version number for this release. */
282 extern int leveldb_major_version();
283 
284 /* Return the minor version number for this release. */
285 extern int leveldb_minor_version();
286 
287 #ifdef __cplusplus
288 } /* end extern "C" */
289 #endif
290 
291 #endif /* STORAGE_LEVELDB_INCLUDE_C_H_ */
leveldb_env_t * leveldb_create_default_env()
Definition: c.cc:571
void leveldb_put(leveldb_t *db, const leveldb_writeoptions_t *options, const char *key, size_t keylen, const char *val, size_t vallen, char **errptr)
Definition: c.cc:170
leveldb_cache_t * leveldb_cache_create_lru(size_t capacity)
Definition: c.cc:560
const leveldb_snapshot_t * leveldb_create_snapshot(leveldb_t *db)
Definition: c.cc:226
void leveldb_options_set_info_log(leveldb_options_t *, leveldb_logger_t *)
Definition: c.cc:425
void leveldb_options_set_env(leveldb_options_t *, leveldb_env_t *)
Definition: c.cc:421
leveldb_readoptions_t * leveldb_readoptions_create()
Definition: c.cc:522
void leveldb_writeoptions_destroy(leveldb_writeoptions_t *)
Definition: c.cc:551
leveldb_t * leveldb_open(const leveldb_options_t *options, const char *name, char **errptr)
Definition: c.cc:152
void leveldb_free(void *ptr)
Definition: c.cc:583
const char * leveldb_iter_value(const leveldb_iterator_t *, size_t *vlen)
Definition: c.cc:327
void leveldb_writeoptions_set_sync(leveldb_writeoptions_t *, unsigned char)
Definition: c.cc:555
void leveldb_readoptions_destroy(leveldb_readoptions_t *)
Definition: c.cc:526
leveldb_filterpolicy_t * leveldb_filterpolicy_create_bloom(int bits_per_key)
Definition: c.cc:499
void leveldb_iter_seek_to_last(leveldb_iterator_t *)
Definition: c.cc:305
leveldb_filterpolicy_t * leveldb_filterpolicy_create(void *state, void(*destructor)(void *), char *(*create_filter)(void *, const char *const *key_array, const size_t *key_length_array, int num_keys, size_t *filter_length), unsigned char(*key_may_match)(void *, const char *key, size_t length, const char *filter, size_t filter_length), const char *(*name)(void *))
Definition: c.cc:473
Definition: c.cc:46
void leveldb_options_set_error_if_exists(leveldb_options_t *, unsigned char)
Definition: c.cc:411
void leveldb_repair_db(const leveldb_options_t *options, const char *name, char **errptr)
Definition: c.cc:285
leveldb_comparator_t * leveldb_comparator_create(void *state, void(*destructor)(void *), int(*compare)(void *, const char *a, size_t alen, const char *b, size_t blen), const char *(*name)(void *))
Definition: c.cc:453
void leveldb_iter_destroy(leveldb_iterator_t *)
Definition: c.cc:292
leveldb_writebatch_t * leveldb_writebatch_create()
Definition: c.cc:337
void leveldb_release_snapshot(leveldb_t *db, const leveldb_snapshot_t *snapshot)
Definition: c.cc:233
void leveldb_options_set_block_restart_interval(leveldb_options_t *, int)
Definition: c.cc:445
void leveldb_writebatch_put(leveldb_writebatch_t *, const char *key, size_t klen, const char *val, size_t vlen)
Definition: c.cc:349
void leveldb_options_set_comparator(leveldb_options_t *, leveldb_comparator_t *)
Definition: c.cc:394
leveldb_options_t * leveldb_options_create()
Definition: c.cc:386
char * leveldb_get(leveldb_t *db, const leveldb_readoptions_t *options, const char *key, size_t keylen, size_t *vallen, char **errptr)
Definition: c.cc:197
void leveldb_iter_prev(leveldb_iterator_t *)
Definition: c.cc:317
void leveldb_destroy_db(const leveldb_options_t *options, const char *name, char **errptr)
Definition: c.cc:278
void leveldb_writebatch_destroy(leveldb_writebatch_t *)
Definition: c.cc:341
int leveldb_major_version()
Definition: c.cc:587
void leveldb_options_set_max_open_files(leveldb_options_t *, int)
Definition: c.cc:433
const char * leveldb_iter_key(const leveldb_iterator_t *, size_t *klen)
Definition: c.cc:321
void leveldb_iter_seek(leveldb_iterator_t *, const char *k, size_t klen)
Definition: c.cc:309
void leveldb_options_set_cache(leveldb_options_t *, leveldb_cache_t *)
Definition: c.cc:437
unsigned long long uint64_t
Definition: stdint.h:22
void leveldb_close(leveldb_t *db)
Definition: c.cc:165
int leveldb_minor_version()
Definition: c.cc:591
MTState * state
Definition: db_test.cc:1708
void leveldb_options_set_paranoid_checks(leveldb_options_t *, unsigned char)
Definition: c.cc:416
void leveldb_cache_destroy(leveldb_cache_t *cache)
Definition: c.cc:566
void leveldb_iter_next(leveldb_iterator_t *)
Definition: c.cc:313
void leveldb_delete(leveldb_t *db, const leveldb_writeoptions_t *options, const char *key, size_t keylen, char **errptr)
Definition: c.cc:180
void leveldb_options_set_write_buffer_size(leveldb_options_t *, size_t)
Definition: c.cc:429
leveldb_writeoptions_t * leveldb_writeoptions_create()
Definition: c.cc:547
void leveldb_readoptions_set_verify_checksums(leveldb_readoptions_t *, unsigned char)
Definition: c.cc:530
void leveldb_approximate_sizes(leveldb_t *db, int num_ranges, const char *const *range_start_key, const size_t *range_start_key_len, const char *const *range_limit_key, const size_t *range_limit_key_len, uint64_t *sizes)
Definition: c.cc:252
void leveldb_writebatch_iterate(leveldb_writebatch_t *, void *state, void(*put)(void *, const char *k, size_t klen, const char *v, size_t vlen), void(*deleted)(void *, const char *k, size_t klen))
Definition: c.cc:362
void leveldb_compact_range(leveldb_t *db, const char *start_key, size_t start_key_len, const char *limit_key, size_t limit_key_len)
Definition: c.cc:267
unsigned char leveldb_iter_valid(const leveldb_iterator_t *)
Definition: c.cc:297
leveldb_iterator_t * leveldb_create_iterator(leveldb_t *db, const leveldb_readoptions_t *options)
Definition: c.cc:218
void leveldb_readoptions_set_snapshot(leveldb_readoptions_t *, const leveldb_snapshot_t *)
Definition: c.cc:541
void leveldb_writebatch_delete(leveldb_writebatch_t *, const char *key, size_t klen)
Definition: c.cc:356
void leveldb_options_set_create_if_missing(leveldb_options_t *, unsigned char)
Definition: c.cc:406
char * leveldb_property_value(leveldb_t *db, const char *propname)
Definition: c.cc:240
void leveldb_filterpolicy_destroy(leveldb_filterpolicy_t *)
Definition: c.cc:495
void leveldb_iter_get_error(const leveldb_iterator_t *, char **errptr)
Definition: c.cc:333
void leveldb_options_set_filter_policy(leveldb_options_t *, leveldb_filterpolicy_t *)
Definition: c.cc:400
void leveldb_options_destroy(leveldb_options_t *)
Definition: c.cc:390
void leveldb_comparator_destroy(leveldb_comparator_t *)
Definition: c.cc:469
void leveldb_options_set_block_size(leveldb_options_t *, size_t)
Definition: c.cc:441
void leveldb_writebatch_clear(leveldb_writebatch_t *)
Definition: c.cc:345
void leveldb_iter_seek_to_first(leveldb_iterator_t *)
Definition: c.cc:301
void leveldb_env_destroy(leveldb_env_t *)
Definition: c.cc:578
void leveldb_write(leveldb_t *db, const leveldb_writeoptions_t *options, leveldb_writebatch_t *batch, char **errptr)
Definition: c.cc:189
void leveldb_readoptions_set_fill_cache(leveldb_readoptions_t *, unsigned char)
Definition: c.cc:536
const char * name
Definition: testharness.cc:18
void leveldb_options_set_compression(leveldb_options_t *, int)
Definition: c.cc:449