LiteCore
Couchbase Lite cross-platform core implementation
Loading...
Searching...
No Matches
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.
 

Functions

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

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.