28 #define FLAPI noexcept
29 namespace fleece {
struct alloc_slice; }
51 explicit operator bool() const noexcept
FLPURE {
return buf !=
nullptr;}
52 explicit operator std::string()
const {
return std::string((
char*)
buf,
size);}
69 explicit operator bool() const noexcept
FLPURE {
return buf !=
nullptr;}
71 inline explicit operator std::string()
const;
84 friend struct fleece::alloc_slice;
100 #define kFLSliceNull ((FLSlice){NULL, 0})
109 return memcmp(a, b, size);
116 memcpy(dst, src, size);
125 FLSlice foo = { str, str ? strlen(str) : 0 };
132 #define FLSTR(STR) (FLSlice {("" STR), sizeof(("" STR))-1})
134 #define FLSTR(STR) ((FLSlice){("" STR), sizeof(("" STR))-1})
209 FLSliceResult::operator std::string ()
const {
210 auto str = std::string((
char*)buf, size);
#define _usuallyTrue(VAL)
Definition: Base.h:55
#define _usuallyFalse(VAL)
Definition: Base.h:56
#define FLPURE
Definition: Base.h:89
#define NONNULL
Definition: Base.h:68
#define FLAPI
Definition: FLSlice.h:31
bool FLSlice_Equal(FLSlice a, FLSlice b) FLPURE
Equality test of two slices.
static void FLSliceResult_Release(FLSliceResult s)
Decrements the ref-count of a FLSliceResult, freeing its memory if it reached zero.
Definition: FLSlice.h:181
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),...
Definition: FLSlice.h:106
#define kFLSliceNull
A convenient constant denoting a null slice.
Definition: FLSlice.h:100
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),...
Definition: FLSlice.h:114
FLSliceResult FLSliceResult_New(size_t)
Allocates an FLSliceResult of the given size, without initializing the buffer.
void _FLBuf_Retain(const void *)
void _FLBuf_Release(const void *)
static FLSliceResult FLSliceResult_Retain(FLSliceResult s)
Increments the ref-count of a FLSliceResult.
Definition: FLSlice.h:175
int FLSlice_Compare(FLSlice, FLSlice) FLPURE
Lexicographic comparison of two slices; basically like memcmp(), but taking into account differences ...
FLSliceResult FLStringResult
Definition: FLSlice.h:93
FLSlice FLString
Definition: FLSlice.h:92
FLSlice FLHeapSlice
A heap-allocated, reference-counted slice.
Definition: FLSlice.h:87
static FLSlice FLSliceResult_AsSlice(FLSliceResult sr)
Type-casts a FLSliceResult to FLSlice, since C doesn't know it's a subclass.
Definition: FLSlice.h:186
uint32_t FLSlice_Hash(FLSlice s) FLPURE
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.
FLSliceResult FLSlice_Copy(FLSlice)
Allocates an FLSliceResult, copying the given slice.
void FL_WipeMemory(void *dst, size_t size)
Writes zeroes to size bytes of memory starting at dst.
static FLSlice FLStr(const char *str)
Returns a slice pointing to the contents of a C string.
Definition: FLSlice.h:124
static FLSliceResult FLSliceResult_CreateWith(const void *bytes, size_t size)
Allocates an FLSliceResult, copying size bytes starting at buf.
Definition: FLSlice.h:165
A simple reference to a block of memory.
Definition: FLSlice.h:46
const void * buf
Definition: FLSlice.h:47
size_t size
Definition: FLSlice.h:48
A heap-allocated block of memory returned from an API call.
Definition: FLSlice.h:64
const void * buf
Definition: FLSlice.h:65
size_t size
Definition: FLSlice.h:66