Couchbase Lite C
Couchbase Lite C API
Data Structures | Typedefs | Functions
Fleece Deep Iterator

A deep iterator traverses every value contained in a dictionary, in depth-first order. More...

Data Structures

struct  FLPathComponent
 

Typedefs

typedef struct _FLDeepIterator * FLDeepIterator
 A reference to a deep iterator. More...
 

Functions

FLEECE_PUBLIC FLDeepIterator FLDeepIterator_New (FLValue FL_NULLABLE)
 Creates a FLDeepIterator to iterate over a dictionary. More...
 
FLEECE_PUBLIC void FLDeepIterator_Free (FLDeepIterator FL_NULLABLE)
 
FLEECE_PUBLIC FLValue FL_NULLABLE FLDeepIterator_GetValue (FLDeepIterator)
 Returns the current value being iterated over. More...
 
FLEECE_PUBLIC FLValue FL_NULLABLE FLDeepIterator_GetParent (FLDeepIterator)
 Returns the parent/container of the current value, or NULL at the end of iteration. More...
 
FLEECE_PUBLIC FLSlice FLDeepIterator_GetKey (FLDeepIterator)
 Returns the key of the current value in its parent, or an empty slice if not in a dictionary. More...
 
FLEECE_PUBLIC uint32_t FLDeepIterator_GetIndex (FLDeepIterator)
 Returns the array index of the current value in its parent, or 0 if not in an array. More...
 
FLEECE_PUBLIC size_t FLDeepIterator_GetDepth (FLDeepIterator)
 Returns the current depth in the hierarchy, starting at 1 for the top-level children. More...
 
FLEECE_PUBLIC void FLDeepIterator_SkipChildren (FLDeepIterator)
 Tells the iterator to skip the children of the current value. More...
 
FLEECE_PUBLIC bool FLDeepIterator_Next (FLDeepIterator)
 Advances the iterator to the next value, or returns false if at the end. More...
 
FLEECE_PUBLIC void FLDeepIterator_GetPath (FLDeepIterator, FLPathComponent *FL_NONNULL *FL_NONNULL outPath, size_t *outDepth)
 Returns the path as an array of FLPathComponents. More...
 
FLEECE_PUBLIC FLSliceResult FLDeepIterator_GetPathString (FLDeepIterator)
 Returns the current path in JavaScript format. More...
 
FLEECE_PUBLIC FLSliceResult FLDeepIterator_GetJSONPointer (FLDeepIterator)
 Returns the current path in JSONPointer format (RFC 6901). More...
 

Detailed Description

A deep iterator traverses every value contained in a dictionary, in depth-first order.

You can skip any nested collection by calling FLDeepIterator_SkipChildren.

Typedef Documentation

◆ FLDeepIterator

typedef struct _FLDeepIterator* FLDeepIterator

A reference to a deep iterator.

Function Documentation

◆ FLDeepIterator_Free()

FLEECE_PUBLIC void FLDeepIterator_Free ( FLDeepIterator  FL_NULLABLE)

◆ FLDeepIterator_GetDepth()

FLEECE_PUBLIC size_t FLDeepIterator_GetDepth ( FLDeepIterator  )

Returns the current depth in the hierarchy, starting at 1 for the top-level children.

◆ FLDeepIterator_GetIndex()

FLEECE_PUBLIC uint32_t FLDeepIterator_GetIndex ( FLDeepIterator  )

Returns the array index of the current value in its parent, or 0 if not in an array.

◆ FLDeepIterator_GetJSONPointer()

FLEECE_PUBLIC FLSliceResult FLDeepIterator_GetJSONPointer ( FLDeepIterator  )

Returns the current path in JSONPointer format (RFC 6901).

◆ FLDeepIterator_GetKey()

FLEECE_PUBLIC FLSlice FLDeepIterator_GetKey ( FLDeepIterator  )

Returns the key of the current value in its parent, or an empty slice if not in a dictionary.

◆ FLDeepIterator_GetParent()

FLEECE_PUBLIC FLValue FL_NULLABLE FLDeepIterator_GetParent ( FLDeepIterator  )

Returns the parent/container of the current value, or NULL at the end of iteration.

◆ FLDeepIterator_GetPath()

FLEECE_PUBLIC void FLDeepIterator_GetPath ( FLDeepIterator  ,
FLPathComponent *FL_NONNULL *FL_NONNULL  outPath,
size_t *  outDepth 
)

Returns the path as an array of FLPathComponents.

◆ FLDeepIterator_GetPathString()

FLEECE_PUBLIC FLSliceResult FLDeepIterator_GetPathString ( FLDeepIterator  )

Returns the current path in JavaScript format.

◆ FLDeepIterator_GetValue()

FLEECE_PUBLIC FLValue FL_NULLABLE FLDeepIterator_GetValue ( FLDeepIterator  )

Returns the current value being iterated over.

or NULL at the end of iteration.

◆ FLDeepIterator_New()

FLEECE_PUBLIC FLDeepIterator FLDeepIterator_New ( FLValue  FL_NULLABLE)

Creates a FLDeepIterator to iterate over a dictionary.

Call FLDeepIterator_GetKey and FLDeepIterator_GetValue to get the first item, then FLDeepIterator_Next.

◆ FLDeepIterator_Next()

FLEECE_PUBLIC bool FLDeepIterator_Next ( FLDeepIterator  )

Advances the iterator to the next value, or returns false if at the end.

◆ FLDeepIterator_SkipChildren()

FLEECE_PUBLIC void FLDeepIterator_SkipChildren ( FLDeepIterator  )

Tells the iterator to skip the children of the current value.