28 namespace fleece {
struct alloc_slice; }
50 explicit operator bool() const noexcept
FLPURE {
return buf !=
nullptr;}
51 explicit operator std::string()
const {
return std::string((
char*)
buf,
size);}
68 explicit operator bool() const noexcept
FLPURE {
return buf !=
nullptr;}
70 inline explicit operator std::string()
const;
83 friend struct fleece::alloc_slice;
99 #define kFLSliceNull ((FLSlice){NULL, 0})
110 return memcmp(a, b, size);
117 memcpy(dst, src, size);
126 FLSlice foo = { str, str ? strlen(str) : 0 };
133 #define FLSTR(STR) (FLSlice {("" STR), sizeof(("" STR))-1})
135 #define FLSTR(STR) ((FLSlice){("" STR), sizeof(("" STR))-1})
189 memcpy(&ret, &sr,
sizeof(ret));
212 FLSliceResult::operator std::string ()
const {
213 auto str = std::string((
char*)buf, size);
#define FL_NULLABLE
Definition: CompilerSupport.h:74
#define FLEECE_PUBLIC
Definition: CompilerSupport.h:241
#define FL_ASSUME_NONNULL_BEGIN
Definition: CompilerSupport.h:72
#define _usuallyTrue(VAL)
Definition: CompilerSupport.h:55
#define _usuallyFalse(VAL)
Definition: CompilerSupport.h:56
#define FLPURE
Definition: CompilerSupport.h:110
#define FL_ASSUME_NONNULL_END
Definition: CompilerSupport.h:73
#define FLAPI
Definition: CompilerSupport.h:247
FLEECE_PUBLIC void _FLBuf_Release(const void *FL_NULLABLE)
static void FLSliceResult_Release(FLSliceResult s)
Decrements the ref-count of a FLSliceResult, freeing its memory if it reached zero.
Definition: FLSlice.h:182
FLEECE_PUBLIC void FL_WipeMemory(void *dst, size_t size)
Writes zeroes to size bytes of memory starting at dst.
FLEECE_PUBLIC void _FLBuf_Retain(const void *FL_NULLABLE)
FLEECE_PUBLIC FLSliceResult FLSliceResult_New(size_t)
Allocates an FLSliceResult of the given size, without initializing the buffer.
#define kFLSliceNull
A convenient constant denoting a null slice.
Definition: FLSlice.h:99
FLEECE_PUBLIC bool FLSlice_Equal(FLSlice a, FLSlice b) FLPURE
Equality test of two slices.
static void FLMemCpy(void *FL_NULLABLE dst, const void *FL_NULLABLE 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:115
static FLSliceResult FLSliceResult_Retain(FLSliceResult s)
Increments the ref-count of a FLSliceResult.
Definition: FLSlice.h:176
static FLSliceResult FLSliceResult_CreateWith(const void *FL_NULLABLE bytes, size_t size)
Allocates an FLSliceResult, copying size bytes starting at buf.
Definition: FLSlice.h:166
FLSliceResult FLStringResult
Definition: FLSlice.h:92
static FLSlice FLStr(const char *FL_NULLABLE str)
Returns a slice pointing to the contents of a C string.
Definition: FLSlice.h:125
FLSlice FLString
Definition: FLSlice.h:91
FLSlice FLHeapSlice
A heap-allocated, reference-counted slice.
Definition: FLSlice.h:86
static FLSlice FLSliceResult_AsSlice(FLSliceResult sr)
Type-casts a FLSliceResult to FLSlice, since C doesn't know it's a subclass.
Definition: FLSlice.h:187
static FLPURE int FLMemCmp(const void *FL_NULLABLE a, const void *FL_NULLABLE 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:105
FLEECE_PUBLIC 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.
FLEECE_PUBLIC int FLSlice_Compare(FLSlice, FLSlice) FLPURE
Lexicographic comparison of two slices; basically like memcmp(), but taking into account differences ...
FLEECE_PUBLIC uint32_t FLSlice_Hash(FLSlice s) FLPURE
Computes a 32-bit hash of a slice's data, suitable for use in hash tables.
FLEECE_PUBLIC FLSliceResult FLSlice_Copy(FLSlice)
Allocates an FLSliceResult, copying the given slice.
A simple reference to a block of memory.
Definition: FLSlice.h:45
size_t size
Definition: FLSlice.h:47
const void *FL_NULLABLE buf
Definition: FLSlice.h:46
A heap-allocated block of memory returned from an API call.
Definition: FLSlice.h:63
const void *FL_NULLABLE buf
Definition: FLSlice.h:64
size_t size
Definition: FLSlice.h:65