xref: /aosp_15_r20/external/leveldb/include/leveldb/c.h (revision 9507f98c5f32dee4b5f9e4a38cd499f3ff5c4490)
1*9507f98cSAndroid Build Coastguard Worker /* Copyright (c) 2011 The LevelDB Authors. All rights reserved.
2*9507f98cSAndroid Build Coastguard Worker   Use of this source code is governed by a BSD-style license that can be
3*9507f98cSAndroid Build Coastguard Worker   found in the LICENSE file. See the AUTHORS file for names of contributors.
4*9507f98cSAndroid Build Coastguard Worker 
5*9507f98cSAndroid Build Coastguard Worker   C bindings for leveldb.  May be useful as a stable ABI that can be
6*9507f98cSAndroid Build Coastguard Worker   used by programs that keep leveldb in a shared library, or for
7*9507f98cSAndroid Build Coastguard Worker   a JNI api.
8*9507f98cSAndroid Build Coastguard Worker 
9*9507f98cSAndroid Build Coastguard Worker   Does not support:
10*9507f98cSAndroid Build Coastguard Worker   . getters for the option types
11*9507f98cSAndroid Build Coastguard Worker   . custom comparators that implement key shortening
12*9507f98cSAndroid Build Coastguard Worker   . custom iter, db, env, cache implementations using just the C bindings
13*9507f98cSAndroid Build Coastguard Worker 
14*9507f98cSAndroid Build Coastguard Worker   Some conventions:
15*9507f98cSAndroid Build Coastguard Worker 
16*9507f98cSAndroid Build Coastguard Worker   (1) We expose just opaque struct pointers and functions to clients.
17*9507f98cSAndroid Build Coastguard Worker   This allows us to change internal representations without having to
18*9507f98cSAndroid Build Coastguard Worker   recompile clients.
19*9507f98cSAndroid Build Coastguard Worker 
20*9507f98cSAndroid Build Coastguard Worker   (2) For simplicity, there is no equivalent to the Slice type.  Instead,
21*9507f98cSAndroid Build Coastguard Worker   the caller has to pass the pointer and length as separate
22*9507f98cSAndroid Build Coastguard Worker   arguments.
23*9507f98cSAndroid Build Coastguard Worker 
24*9507f98cSAndroid Build Coastguard Worker   (3) Errors are represented by a null-terminated c string.  NULL
25*9507f98cSAndroid Build Coastguard Worker   means no error.  All operations that can raise an error are passed
26*9507f98cSAndroid Build Coastguard Worker   a "char** errptr" as the last argument.  One of the following must
27*9507f98cSAndroid Build Coastguard Worker   be true on entry:
28*9507f98cSAndroid Build Coastguard Worker      *errptr == NULL
29*9507f98cSAndroid Build Coastguard Worker      *errptr points to a malloc()ed null-terminated error message
30*9507f98cSAndroid Build Coastguard Worker        (On Windows, *errptr must have been malloc()-ed by this library.)
31*9507f98cSAndroid Build Coastguard Worker   On success, a leveldb routine leaves *errptr unchanged.
32*9507f98cSAndroid Build Coastguard Worker   On failure, leveldb frees the old value of *errptr and
33*9507f98cSAndroid Build Coastguard Worker   set *errptr to a malloc()ed error message.
34*9507f98cSAndroid Build Coastguard Worker 
35*9507f98cSAndroid Build Coastguard Worker   (4) Bools have the type uint8_t (0 == false; rest == true)
36*9507f98cSAndroid Build Coastguard Worker 
37*9507f98cSAndroid Build Coastguard Worker   (5) All of the pointer arguments must be non-NULL.
38*9507f98cSAndroid Build Coastguard Worker */
39*9507f98cSAndroid Build Coastguard Worker 
40*9507f98cSAndroid Build Coastguard Worker #ifndef STORAGE_LEVELDB_INCLUDE_C_H_
41*9507f98cSAndroid Build Coastguard Worker #define STORAGE_LEVELDB_INCLUDE_C_H_
42*9507f98cSAndroid Build Coastguard Worker 
43*9507f98cSAndroid Build Coastguard Worker #ifdef __cplusplus
44*9507f98cSAndroid Build Coastguard Worker extern "C" {
45*9507f98cSAndroid Build Coastguard Worker #endif
46*9507f98cSAndroid Build Coastguard Worker 
47*9507f98cSAndroid Build Coastguard Worker #include <stdarg.h>
48*9507f98cSAndroid Build Coastguard Worker #include <stddef.h>
49*9507f98cSAndroid Build Coastguard Worker #include <stdint.h>
50*9507f98cSAndroid Build Coastguard Worker 
51*9507f98cSAndroid Build Coastguard Worker #include "leveldb/export.h"
52*9507f98cSAndroid Build Coastguard Worker 
53*9507f98cSAndroid Build Coastguard Worker /* Exported types */
54*9507f98cSAndroid Build Coastguard Worker 
55*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_t leveldb_t;
56*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_cache_t leveldb_cache_t;
57*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_comparator_t leveldb_comparator_t;
58*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_env_t leveldb_env_t;
59*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_filelock_t leveldb_filelock_t;
60*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_filterpolicy_t leveldb_filterpolicy_t;
61*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_iterator_t leveldb_iterator_t;
62*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_logger_t leveldb_logger_t;
63*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_options_t leveldb_options_t;
64*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_randomfile_t leveldb_randomfile_t;
65*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_readoptions_t leveldb_readoptions_t;
66*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_seqfile_t leveldb_seqfile_t;
67*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_snapshot_t leveldb_snapshot_t;
68*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_writablefile_t leveldb_writablefile_t;
69*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_writebatch_t leveldb_writebatch_t;
70*9507f98cSAndroid Build Coastguard Worker typedef struct leveldb_writeoptions_t leveldb_writeoptions_t;
71*9507f98cSAndroid Build Coastguard Worker 
72*9507f98cSAndroid Build Coastguard Worker /* DB operations */
73*9507f98cSAndroid Build Coastguard Worker 
74*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_t* leveldb_open(const leveldb_options_t* options,
75*9507f98cSAndroid Build Coastguard Worker                                        const char* name, char** errptr);
76*9507f98cSAndroid Build Coastguard Worker 
77*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_close(leveldb_t* db);
78*9507f98cSAndroid Build Coastguard Worker 
79*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_put(leveldb_t* db,
80*9507f98cSAndroid Build Coastguard Worker                                 const leveldb_writeoptions_t* options,
81*9507f98cSAndroid Build Coastguard Worker                                 const char* key, size_t keylen, const char* val,
82*9507f98cSAndroid Build Coastguard Worker                                 size_t vallen, char** errptr);
83*9507f98cSAndroid Build Coastguard Worker 
84*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_delete(leveldb_t* db,
85*9507f98cSAndroid Build Coastguard Worker                                    const leveldb_writeoptions_t* options,
86*9507f98cSAndroid Build Coastguard Worker                                    const char* key, size_t keylen,
87*9507f98cSAndroid Build Coastguard Worker                                    char** errptr);
88*9507f98cSAndroid Build Coastguard Worker 
89*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_write(leveldb_t* db,
90*9507f98cSAndroid Build Coastguard Worker                                   const leveldb_writeoptions_t* options,
91*9507f98cSAndroid Build Coastguard Worker                                   leveldb_writebatch_t* batch, char** errptr);
92*9507f98cSAndroid Build Coastguard Worker 
93*9507f98cSAndroid Build Coastguard Worker /* Returns NULL if not found.  A malloc()ed array otherwise.
94*9507f98cSAndroid Build Coastguard Worker    Stores the length of the array in *vallen. */
95*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT char* leveldb_get(leveldb_t* db,
96*9507f98cSAndroid Build Coastguard Worker                                  const leveldb_readoptions_t* options,
97*9507f98cSAndroid Build Coastguard Worker                                  const char* key, size_t keylen, size_t* vallen,
98*9507f98cSAndroid Build Coastguard Worker                                  char** errptr);
99*9507f98cSAndroid Build Coastguard Worker 
100*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_iterator_t* leveldb_create_iterator(
101*9507f98cSAndroid Build Coastguard Worker     leveldb_t* db, const leveldb_readoptions_t* options);
102*9507f98cSAndroid Build Coastguard Worker 
103*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT const leveldb_snapshot_t* leveldb_create_snapshot(leveldb_t* db);
104*9507f98cSAndroid Build Coastguard Worker 
105*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_release_snapshot(
106*9507f98cSAndroid Build Coastguard Worker     leveldb_t* db, const leveldb_snapshot_t* snapshot);
107*9507f98cSAndroid Build Coastguard Worker 
108*9507f98cSAndroid Build Coastguard Worker /* Returns NULL if property name is unknown.
109*9507f98cSAndroid Build Coastguard Worker    Else returns a pointer to a malloc()-ed null-terminated value. */
110*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT char* leveldb_property_value(leveldb_t* db,
111*9507f98cSAndroid Build Coastguard Worker                                             const char* propname);
112*9507f98cSAndroid Build Coastguard Worker 
113*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_approximate_sizes(
114*9507f98cSAndroid Build Coastguard Worker     leveldb_t* db, int num_ranges, const char* const* range_start_key,
115*9507f98cSAndroid Build Coastguard Worker     const size_t* range_start_key_len, const char* const* range_limit_key,
116*9507f98cSAndroid Build Coastguard Worker     const size_t* range_limit_key_len, uint64_t* sizes);
117*9507f98cSAndroid Build Coastguard Worker 
118*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_compact_range(leveldb_t* db, const char* start_key,
119*9507f98cSAndroid Build Coastguard Worker                                           size_t start_key_len,
120*9507f98cSAndroid Build Coastguard Worker                                           const char* limit_key,
121*9507f98cSAndroid Build Coastguard Worker                                           size_t limit_key_len);
122*9507f98cSAndroid Build Coastguard Worker 
123*9507f98cSAndroid Build Coastguard Worker /* Management operations */
124*9507f98cSAndroid Build Coastguard Worker 
125*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_destroy_db(const leveldb_options_t* options,
126*9507f98cSAndroid Build Coastguard Worker                                        const char* name, char** errptr);
127*9507f98cSAndroid Build Coastguard Worker 
128*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_repair_db(const leveldb_options_t* options,
129*9507f98cSAndroid Build Coastguard Worker                                       const char* name, char** errptr);
130*9507f98cSAndroid Build Coastguard Worker 
131*9507f98cSAndroid Build Coastguard Worker /* Iterator */
132*9507f98cSAndroid Build Coastguard Worker 
133*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_iter_destroy(leveldb_iterator_t*);
134*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT uint8_t leveldb_iter_valid(const leveldb_iterator_t*);
135*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_iter_seek_to_first(leveldb_iterator_t*);
136*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_iter_seek_to_last(leveldb_iterator_t*);
137*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_iter_seek(leveldb_iterator_t*, const char* k,
138*9507f98cSAndroid Build Coastguard Worker                                       size_t klen);
139*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_iter_next(leveldb_iterator_t*);
140*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_iter_prev(leveldb_iterator_t*);
141*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT const char* leveldb_iter_key(const leveldb_iterator_t*,
142*9507f98cSAndroid Build Coastguard Worker                                             size_t* klen);
143*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT const char* leveldb_iter_value(const leveldb_iterator_t*,
144*9507f98cSAndroid Build Coastguard Worker                                               size_t* vlen);
145*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_iter_get_error(const leveldb_iterator_t*,
146*9507f98cSAndroid Build Coastguard Worker                                            char** errptr);
147*9507f98cSAndroid Build Coastguard Worker 
148*9507f98cSAndroid Build Coastguard Worker /* Write batch */
149*9507f98cSAndroid Build Coastguard Worker 
150*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_writebatch_t* leveldb_writebatch_create(void);
151*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_writebatch_destroy(leveldb_writebatch_t*);
152*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_writebatch_clear(leveldb_writebatch_t*);
153*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_writebatch_put(leveldb_writebatch_t*,
154*9507f98cSAndroid Build Coastguard Worker                                            const char* key, size_t klen,
155*9507f98cSAndroid Build Coastguard Worker                                            const char* val, size_t vlen);
156*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_writebatch_delete(leveldb_writebatch_t*,
157*9507f98cSAndroid Build Coastguard Worker                                               const char* key, size_t klen);
158*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_writebatch_iterate(
159*9507f98cSAndroid Build Coastguard Worker     const leveldb_writebatch_t*, void* state,
160*9507f98cSAndroid Build Coastguard Worker     void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen),
161*9507f98cSAndroid Build Coastguard Worker     void (*deleted)(void*, const char* k, size_t klen));
162*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_writebatch_append(
163*9507f98cSAndroid Build Coastguard Worker     leveldb_writebatch_t* destination, const leveldb_writebatch_t* source);
164*9507f98cSAndroid Build Coastguard Worker 
165*9507f98cSAndroid Build Coastguard Worker /* Options */
166*9507f98cSAndroid Build Coastguard Worker 
167*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_options_t* leveldb_options_create(void);
168*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_destroy(leveldb_options_t*);
169*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_comparator(leveldb_options_t*,
170*9507f98cSAndroid Build Coastguard Worker                                                    leveldb_comparator_t*);
171*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_filter_policy(leveldb_options_t*,
172*9507f98cSAndroid Build Coastguard Worker                                                       leveldb_filterpolicy_t*);
173*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_create_if_missing(leveldb_options_t*,
174*9507f98cSAndroid Build Coastguard Worker                                                           uint8_t);
175*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_error_if_exists(leveldb_options_t*,
176*9507f98cSAndroid Build Coastguard Worker                                                         uint8_t);
177*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_paranoid_checks(leveldb_options_t*,
178*9507f98cSAndroid Build Coastguard Worker                                                         uint8_t);
179*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_env(leveldb_options_t*, leveldb_env_t*);
180*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_info_log(leveldb_options_t*,
181*9507f98cSAndroid Build Coastguard Worker                                                  leveldb_logger_t*);
182*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_write_buffer_size(leveldb_options_t*,
183*9507f98cSAndroid Build Coastguard Worker                                                           size_t);
184*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_max_open_files(leveldb_options_t*, int);
185*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_cache(leveldb_options_t*,
186*9507f98cSAndroid Build Coastguard Worker                                               leveldb_cache_t*);
187*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_block_size(leveldb_options_t*, size_t);
188*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_block_restart_interval(
189*9507f98cSAndroid Build Coastguard Worker     leveldb_options_t*, int);
190*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_max_file_size(leveldb_options_t*,
191*9507f98cSAndroid Build Coastguard Worker                                                       size_t);
192*9507f98cSAndroid Build Coastguard Worker 
193*9507f98cSAndroid Build Coastguard Worker enum { leveldb_no_compression = 0, leveldb_snappy_compression = 1 };
194*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_options_set_compression(leveldb_options_t*, int);
195*9507f98cSAndroid Build Coastguard Worker 
196*9507f98cSAndroid Build Coastguard Worker /* Comparator */
197*9507f98cSAndroid Build Coastguard Worker 
198*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_comparator_t* leveldb_comparator_create(
199*9507f98cSAndroid Build Coastguard Worker     void* state, void (*destructor)(void*),
200*9507f98cSAndroid Build Coastguard Worker     int (*compare)(void*, const char* a, size_t alen, const char* b,
201*9507f98cSAndroid Build Coastguard Worker                    size_t blen),
202*9507f98cSAndroid Build Coastguard Worker     const char* (*name)(void*));
203*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_comparator_destroy(leveldb_comparator_t*);
204*9507f98cSAndroid Build Coastguard Worker 
205*9507f98cSAndroid Build Coastguard Worker /* Filter policy */
206*9507f98cSAndroid Build Coastguard Worker 
207*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_filterpolicy_t* leveldb_filterpolicy_create(
208*9507f98cSAndroid Build Coastguard Worker     void* state, void (*destructor)(void*),
209*9507f98cSAndroid Build Coastguard Worker     char* (*create_filter)(void*, const char* const* key_array,
210*9507f98cSAndroid Build Coastguard Worker                            const size_t* key_length_array, int num_keys,
211*9507f98cSAndroid Build Coastguard Worker                            size_t* filter_length),
212*9507f98cSAndroid Build Coastguard Worker     uint8_t (*key_may_match)(void*, const char* key, size_t length,
213*9507f98cSAndroid Build Coastguard Worker                              const char* filter, size_t filter_length),
214*9507f98cSAndroid Build Coastguard Worker     const char* (*name)(void*));
215*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_filterpolicy_destroy(leveldb_filterpolicy_t*);
216*9507f98cSAndroid Build Coastguard Worker 
217*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_filterpolicy_t* leveldb_filterpolicy_create_bloom(
218*9507f98cSAndroid Build Coastguard Worker     int bits_per_key);
219*9507f98cSAndroid Build Coastguard Worker 
220*9507f98cSAndroid Build Coastguard Worker /* Read options */
221*9507f98cSAndroid Build Coastguard Worker 
222*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_readoptions_t* leveldb_readoptions_create(void);
223*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_readoptions_destroy(leveldb_readoptions_t*);
224*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_readoptions_set_verify_checksums(
225*9507f98cSAndroid Build Coastguard Worker     leveldb_readoptions_t*, uint8_t);
226*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_readoptions_set_fill_cache(leveldb_readoptions_t*,
227*9507f98cSAndroid Build Coastguard Worker                                                        uint8_t);
228*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_readoptions_set_snapshot(leveldb_readoptions_t*,
229*9507f98cSAndroid Build Coastguard Worker                                                      const leveldb_snapshot_t*);
230*9507f98cSAndroid Build Coastguard Worker 
231*9507f98cSAndroid Build Coastguard Worker /* Write options */
232*9507f98cSAndroid Build Coastguard Worker 
233*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_writeoptions_t* leveldb_writeoptions_create(void);
234*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_writeoptions_destroy(leveldb_writeoptions_t*);
235*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_writeoptions_set_sync(leveldb_writeoptions_t*,
236*9507f98cSAndroid Build Coastguard Worker                                                   uint8_t);
237*9507f98cSAndroid Build Coastguard Worker 
238*9507f98cSAndroid Build Coastguard Worker /* Cache */
239*9507f98cSAndroid Build Coastguard Worker 
240*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_cache_t* leveldb_cache_create_lru(size_t capacity);
241*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_cache_destroy(leveldb_cache_t* cache);
242*9507f98cSAndroid Build Coastguard Worker 
243*9507f98cSAndroid Build Coastguard Worker /* Env */
244*9507f98cSAndroid Build Coastguard Worker 
245*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT leveldb_env_t* leveldb_create_default_env(void);
246*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_env_destroy(leveldb_env_t*);
247*9507f98cSAndroid Build Coastguard Worker 
248*9507f98cSAndroid Build Coastguard Worker /* If not NULL, the returned buffer must be released using leveldb_free(). */
249*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT char* leveldb_env_get_test_directory(leveldb_env_t*);
250*9507f98cSAndroid Build Coastguard Worker 
251*9507f98cSAndroid Build Coastguard Worker /* Utility */
252*9507f98cSAndroid Build Coastguard Worker 
253*9507f98cSAndroid Build Coastguard Worker /* Calls free(ptr).
254*9507f98cSAndroid Build Coastguard Worker    REQUIRES: ptr was malloc()-ed and returned by one of the routines
255*9507f98cSAndroid Build Coastguard Worker    in this file.  Note that in certain cases (typically on Windows), you
256*9507f98cSAndroid Build Coastguard Worker    may need to call this routine instead of free(ptr) to dispose of
257*9507f98cSAndroid Build Coastguard Worker    malloc()-ed memory returned by this library. */
258*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT void leveldb_free(void* ptr);
259*9507f98cSAndroid Build Coastguard Worker 
260*9507f98cSAndroid Build Coastguard Worker /* Return the major version number for this release. */
261*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT int leveldb_major_version(void);
262*9507f98cSAndroid Build Coastguard Worker 
263*9507f98cSAndroid Build Coastguard Worker /* Return the minor version number for this release. */
264*9507f98cSAndroid Build Coastguard Worker LEVELDB_EXPORT int leveldb_minor_version(void);
265*9507f98cSAndroid Build Coastguard Worker 
266*9507f98cSAndroid Build Coastguard Worker #ifdef __cplusplus
267*9507f98cSAndroid Build Coastguard Worker } /* end extern "C" */
268*9507f98cSAndroid Build Coastguard Worker #endif
269*9507f98cSAndroid Build Coastguard Worker 
270*9507f98cSAndroid Build Coastguard Worker #endif /* STORAGE_LEVELDB_INCLUDE_C_H_ */
271