Couchbase Lite C
Couchbase Lite C API
Typedefs | Functions
Shared Keys

FLSharedKeys represents a mapping from short strings to small integers in the range [0...2047]. More...

Typedefs

typedef bool(* FLSharedKeysReadCallback) (void *context, FLSharedKeys)
 
typedef struct _FLSharedKeyScope * FLSharedKeyScope
 

Functions

FLSharedKeys FLSharedKeys_New (void)
 Creates a new empty FLSharedKeys object, which must eventually be released. More...
 
FLSharedKeys FLSharedKeys_NewWithRead (FLSharedKeysReadCallback, void *context)
 
FLSliceResult FLSharedKeys_GetStateData (FLSharedKeys)
 Returns a data blob containing the current state (all the keys and their integers.) More...
 
bool FLSharedKeys_LoadStateData (FLSharedKeys, FLSlice)
 Updates an FLSharedKeys with saved state data created by FLSharedKeys_GetStateData. More...
 
void FLSharedKeys_WriteState (FLSharedKeys, FLEncoder)
 Writes the current state to a Fleece encoder as a single value, which can later be decoded and passed to FLSharedKeys_LoadState. More...
 
bool FLSharedKeys_LoadState (FLSharedKeys, FLValue)
 Updates an FLSharedKeys object with saved state, a Fleece value previously written by FLSharedKeys_WriteState. More...
 
int FLSharedKeys_Encode (FLSharedKeys, FLString, bool add)
 Maps a key string to a number in the range [0...2047], or returns -1 if it isn't mapped. More...
 
FLString FLSharedKeys_Decode (FLSharedKeys, int key)
 Returns the key string that maps to the given integer key, else NULL. More...
 
unsigned FLSharedKeys_Count (FLSharedKeys)
 Returns the number of keys in the mapping. More...
 
void FLSharedKeys_RevertToCount (FLSharedKeys, unsigned oldCount)
 Reverts an FLSharedKeys by "forgetting" any keys added since it had the count oldCount. More...
 
FLSharedKeys FLSharedKeys_Retain (FLSharedKeys)
 Increments the reference count of an FLSharedKeys. More...
 
void FLSharedKeys_Release (FLSharedKeys)
 Decrements the reference count of an FLSharedKeys, freeing it when it reaches zero. More...
 
FLSharedKeyScope FLSharedKeyScope_WithRange (FLSlice range, FLSharedKeys)
 
void FLSharedKeyScope_Free (FLSharedKeyScope)
 

Detailed Description

FLSharedKeys represents a mapping from short strings to small integers in the range [0...2047].

It's used by FLDict to abbreviate dictionary keys. A shared key can be stored in a fixed two bytes and is faster to compare against. However, the same mapping has to be used when encoding and when accessing the Dict.

To use shared keys: Call FLSharedKeys_New to create a new empty mapping. After creating an FLEncoder, call FLEncoder_SetSharedKeys so dictionary keys will be added to the mapping and written in integer form. When loading Fleece data, use FLDoc_FromResultData and pass the FLSharedKeys as a parameter. Save the mapping somewhere by calling FLSharedKeys_GetStateData or FLSharedKeys_WriteState. You can later reconstitute the mapping by calling FLSharedKeys_LoadStateData or FLSharedKeys_LoadState on a new empty instance.

Typedef Documentation

◆ FLSharedKeyScope

typedef struct _FLSharedKeyScope* FLSharedKeyScope

◆ FLSharedKeysReadCallback

typedef bool(* FLSharedKeysReadCallback) (void *context, FLSharedKeys)

Function Documentation

◆ FLSharedKeys_Count()

unsigned FLSharedKeys_Count ( FLSharedKeys  )

Returns the number of keys in the mapping.

This number increases whenever the mapping is changed, and never decreases.

◆ FLSharedKeys_Decode()

FLString FLSharedKeys_Decode ( FLSharedKeys  ,
int  key 
)

Returns the key string that maps to the given integer key, else NULL.

◆ FLSharedKeys_Encode()

int FLSharedKeys_Encode ( FLSharedKeys  ,
FLString  ,
bool  add 
)

Maps a key string to a number in the range [0...2047], or returns -1 if it isn't mapped.

If the key doesn't already have a mapping, and the add flag is true, a new mapping is assigned and returned. However, the add flag has no effect if the key is unmappable (is longer than 16 bytes or contains non-identifier characters), or if all available integers have been assigned.

◆ FLSharedKeys_GetStateData()

FLSliceResult FLSharedKeys_GetStateData ( FLSharedKeys  )

Returns a data blob containing the current state (all the keys and their integers.)

◆ FLSharedKeys_LoadState()

bool FLSharedKeys_LoadState ( FLSharedKeys  ,
FLValue   
)

Updates an FLSharedKeys object with saved state, a Fleece value previously written by FLSharedKeys_WriteState.

◆ FLSharedKeys_LoadStateData()

bool FLSharedKeys_LoadStateData ( FLSharedKeys  ,
FLSlice   
)

Updates an FLSharedKeys with saved state data created by FLSharedKeys_GetStateData.

◆ FLSharedKeys_New()

FLSharedKeys FLSharedKeys_New ( void  )

Creates a new empty FLSharedKeys object, which must eventually be released.

◆ FLSharedKeys_NewWithRead()

FLSharedKeys FLSharedKeys_NewWithRead ( FLSharedKeysReadCallback  ,
void *  context 
)

◆ FLSharedKeys_Release()

void FLSharedKeys_Release ( FLSharedKeys  )

Decrements the reference count of an FLSharedKeys, freeing it when it reaches zero.

◆ FLSharedKeys_Retain()

FLSharedKeys FLSharedKeys_Retain ( FLSharedKeys  )

Increments the reference count of an FLSharedKeys.

◆ FLSharedKeys_RevertToCount()

void FLSharedKeys_RevertToCount ( FLSharedKeys  ,
unsigned  oldCount 
)

Reverts an FLSharedKeys by "forgetting" any keys added since it had the count oldCount.

◆ FLSharedKeys_WriteState()

void FLSharedKeys_WriteState ( FLSharedKeys  ,
FLEncoder   
)

Writes the current state to a Fleece encoder as a single value, which can later be decoded and passed to FLSharedKeys_LoadState.

◆ FLSharedKeyScope_Free()

void FLSharedKeyScope_Free ( FLSharedKeyScope  )

◆ FLSharedKeyScope_WithRange()

FLSharedKeyScope FLSharedKeyScope_WithRange ( FLSlice  range,
FLSharedKeys   
)