Couchbase Lite C
Couchbase Lite C API
|
Data Structures | |
struct | FLSlice |
A simple reference to a block of memory. More... | |
struct | FLSliceResult |
A heap-allocated block of memory returned from an API call. More... | |
Macros | |
#define | kFLSliceNull ((FLSlice){NULL, 0}) |
A convenient constant denoting a null slice. More... | |
#define | FLSTR(STR) ((FLSlice){("" STR), sizeof(("" STR))-1}) |
Macro version of FLStr, for use in initializing compile-time constants. More... | |
Typedefs | |
typedef FLSlice | FLHeapSlice |
A heap-allocated, reference-counted slice. More... | |
typedef FLSlice | FLString |
typedef FLSliceResult | FLStringResult |
Functions | |
static FLPURE int | FLMemCmp (const void *a, const void *b, size_t size) |
Exactly like memcmp, but safely handles the case where a or b is NULL and size is 0 (by returning 0), instead of producing "undefined behavior" as per the C spec. More... | |
static void | FLMemCpy (void *dst, const void *src, size_t size) |
Exactly like memcmp, but safely handles the case where dst or src is NULL and size is 0 (as a no-op), instead of producing "undefined behavior" as per the C spec. More... | |
static FLSlice | FLStr (const char *str) |
Returns a slice pointing to the contents of a C string. More... | |
bool | FLSlice_Equal (FLSlice a, FLSlice b) FLPURE |
Equality test of two slices. More... | |
int | FLSlice_Compare (FLSlice, FLSlice) FLPURE |
Lexicographic comparison of two slices; basically like memcmp(), but taking into account differences in length. More... | |
uint32_t | FLSlice_Hash (FLSlice s) FLPURE |
Computes a 32-bit hash of a slice's data, suitable for use in hash tables. More... | |
bool | FLSlice_ToCString (FLSlice s, char *buffer, size_t capacity) |
Copies a slice to a buffer, adding a trailing zero byte to make it a valid C string. More... | |
FLSliceResult | FLSliceResult_New (size_t) |
Allocates an FLSliceResult of the given size, without initializing the buffer. More... | |
FLSliceResult | FLSlice_Copy (FLSlice) |
Allocates an FLSliceResult, copying the given slice. More... | |
static FLSliceResult | FLSliceResult_CreateWith (const void *bytes, size_t size) |
Allocates an FLSliceResult, copying size bytes starting at buf . More... | |
void | _FLBuf_Retain (const void *) |
void | _FLBuf_Release (const void *) |
static FLSliceResult | FLSliceResult_Retain (FLSliceResult s) |
Increments the ref-count of a FLSliceResult. More... | |
static void | FLSliceResult_Release (FLSliceResult s) |
Decrements the ref-count of a FLSliceResult, freeing its memory if it reached zero. More... | |
static FLSlice | FLSliceResult_AsSlice (FLSliceResult sr) |
Type-casts a FLSliceResult to FLSlice, since C doesn't know it's a subclass. More... | |
void | FL_WipeMemory (void *dst, size_t size) |
Writes zeroes to size bytes of memory starting at dst . More... | |
#define FLSTR | ( | STR | ) | ((FLSlice){("" STR), sizeof(("" STR))-1}) |
Macro version of FLStr, for use in initializing compile-time constants.
STR
must be a C string literal. Has zero runtime overhead.
#define kFLSliceNull ((FLSlice){NULL, 0}) |
A convenient constant denoting a null slice.
typedef FLSlice FLHeapSlice |
A heap-allocated, reference-counted slice.
This type is really just a hint in an API that the data can be retained instead of copied, by assigning it to an alloc_slice. You can just treat it like FLSlice.
typedef FLSliceResult FLStringResult |
void _FLBuf_Release | ( | const void * | ) |
void _FLBuf_Retain | ( | const void * | ) |
void FL_WipeMemory | ( | void * | dst, |
size_t | size | ||
) |
Writes zeroes to size
bytes of memory starting at dst
.
Unlike a call to memset
, these writes cannot be optimized away by the compiler. This is useful for securely removing traces of passwords or encryption keys.
|
inlinestatic |
Exactly like memcmp, but safely handles the case where a or b is NULL and size is 0 (by returning 0), instead of producing "undefined behavior" as per the C spec.
|
inlinestatic |
Exactly like memcmp, but safely handles the case where dst or src is NULL and size is 0 (as a no-op), instead of producing "undefined behavior" as per the C spec.
Lexicographic comparison of two slices; basically like memcmp(), but taking into account differences in length.
FLSliceResult FLSlice_Copy | ( | FLSlice | ) |
Allocates an FLSliceResult, copying the given slice.
uint32_t FLSlice_Hash | ( | FLSlice | s | ) |
Computes a 32-bit hash of a slice's data, suitable for use in hash tables.
bool FLSlice_ToCString | ( | FLSlice | s, |
char * | buffer, | ||
size_t | capacity | ||
) |
Copies a slice to a buffer, adding a trailing zero byte to make it a valid C string.
If there is not enough capacity the slice will be truncated, but the trailing zero byte is always written.
s | The FLSlice to copy. |
buffer | Where to copy the bytes. At least capacity bytes must be available. |
capacity | The maximum number of bytes to copy (including the trailing 0.) |
|
inlinestatic |
Type-casts a FLSliceResult to FLSlice, since C doesn't know it's a subclass.
|
inlinestatic |
Allocates an FLSliceResult, copying size
bytes starting at buf
.
FLSliceResult FLSliceResult_New | ( | size_t | ) |
Allocates an FLSliceResult of the given size, without initializing the buffer.
|
inlinestatic |
Decrements the ref-count of a FLSliceResult, freeing its memory if it reached zero.
|
inlinestatic |
Increments the ref-count of a FLSliceResult.
|
inlinestatic |
Returns a slice pointing to the contents of a C string.
It's OK to pass NULL; this returns an empty slice.
strlen
.