bitable  0.1
Ordered immutable key value storage system.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
bitablecommon.h
Go to the documentation of this file.
1 
5 #ifndef BITABLE_COMMON_H__
6 #define BITABLE_COMMON_H__
7 #pragma once
8 
9 #include <stdint.h>
10 #include <stdlib.h>
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 /* Used to define DLL exports/imports across platforms. Define BITABLE_DLL if using bitable in dll mode*/
17 #if defined BITABLE_DLL
18 #if defined _WIN32 || defined __CYGWIN__
19 #if defined BITABLE_DLL_EXPORT
20 #define BITABLE_API __declspec(dllexport)
21 #else
22 #define BITABLE_API __declspec(dllimport)
23 #endif
24 #else
25 #if __GNUC__ >= 4 || defined __clang__
26 #define BITABLE_API __attribute__ ((visibility ("default")))
27 #endif
28 #endif
29 #else
30 
33 #define BITABLE_API
34 #endif
35 
38 #define BITABLE_MAX_KEY_SIZE 768
39 
42 #define BITABLE_MIN_PAGE_SIZE 2048
43 
46 #define BITABLE_MAX_PAGE_SIZE 65536
47 
50 #define BITABLE_MAX_ALIGNMENT 512
51 
54 #define BITABLE_MAX_BRANCH_LEVELS 32
55 
58 typedef enum BitableResult
59 {
63 
67 
71 
75 
79 
83 
87 
91 
95 
99 
103 
107 
111 
115 
119 
120 } BitableResult;
121 
125 {
126 
129  BRO_NONE = 0,
130 
134 
138 
140 
143 typedef struct BitableValue
144 {
147  const void* data;
148 
151  int32_t size;
152 
153 } BitableValue;
154 
157 typedef struct BitablePaths
158 {
161  char* leafPath;
162 
166 
170 
171 } BitablePaths;
172 
175 typedef struct BitableStats
176 {
177 
180  uint64_t itemCount;
181 
184  uint64_t leafPages;
185 
189 
192  uint32_t depth;
193 
196  uint32_t keyAlignment;
197 
200  uint32_t valueAlignment;
201 
204  uint32_t pageSize;
205 
206 } BitableStats;
207 
210 typedef int (BitableComparisonFunction)(const BitableValue* left, const BitableValue* right);
211 
219 BITABLE_API void bitable_build_paths( BitablePaths* paths, const char* basePath );
220 
225 
226 #ifdef __cplusplus
227 }
228 #endif
229 
230 #endif // -- BITABLE_COMMON_H__
struct BitableValue BitableValue
uint32_t valueAlignment
Definition: bitablecommon.h:200
Definition: bitablecommon.h:86
Definition: bitablecommon.h:133
Definition: bitablecommon.h:175
Definition: bitablecommon.h:78
const void * data
Definition: bitablecommon.h:147
Definition: bitablecommon.h:106
int32_t size
Definition: bitablecommon.h:151
BitableReadOpenFlags
Definition: bitablecommon.h:124
Definition: bitablecommon.h:118
Definition: bitablecommon.h:70
Definition: bitablecommon.h:66
Definition: bitablecommon.h:94
Definition: bitablecommon.h:137
Definition: bitablecommon.h:143
Definition: bitablecommon.h:82
Definition: bitablecommon.h:114
struct BitablePaths BitablePaths
char * largeValuePath
Definition: bitablecommon.h:165
Definition: bitablecommon.h:102
Definition: bitablecommon.h:129
Definition: bitablecommon.h:62
Definition: bitablecommon.h:110
int( BitableComparisonFunction)(const BitableValue *left, const BitableValue *right)
Definition: bitablecommon.h:210
BitableResult
Definition: bitablecommon.h:58
#define BITABLE_MAX_BRANCH_LEVELS
Definition: bitablecommon.h:54
uint32_t depth
Definition: bitablecommon.h:192
char * branchPaths[BITABLE_MAX_BRANCH_LEVELS]
Definition: bitablecommon.h:169
struct BitableStats BitableStats
Definition: bitablecommon.h:157
uint64_t itemCount
Definition: bitablecommon.h:180
char * leafPath
Definition: bitablecommon.h:161
Definition: bitablecommon.h:90
BITABLE_API void bitable_free_paths(BitablePaths *paths)
uint32_t keyAlignment
Definition: bitablecommon.h:196
uint32_t pageSize
Definition: bitablecommon.h:204
BITABLE_API void bitable_build_paths(BitablePaths *paths, const char *basePath)
uint64_t leafPages
Definition: bitablecommon.h:184
#define BITABLE_API
Definition: bitablecommon.h:33
uint64_t largeValueStoreSize
Definition: bitablecommon.h:188
Definition: bitablecommon.h:74
Definition: bitablecommon.h:98