MCPcopy Create free account
hub / github.com/couchbase/fleece / fixPointers

Method fixPointers

Fleece/Core/Encoder.cc:585–597  ·  view source on GitHub ↗

Convert absolute offsets to relative in _items:

Source from the content-addressed store, hash-verified

583
584 // Convert absolute offsets to relative in _items:
585 void Encoder::fixPointers(valueArray *items) {
586 size_t pointerOrigin = nextWritePos();
587 int width = items->wide ? kWide : kNarrow;
588 for (Value &v : *items) {
589 if (v.isPointer()) {
590 ssize_t pos = v._asPointer()->offset<true>() - _base.size;
591 assert(pos < (ssize_t)pointerOrigin);
592 bool isExternal = (pos < 0);
593 v = Pointer(pointerOrigin - pos, width, isExternal && _markExternPtrs);
594 }
595 pointerOrigin += width;
596 }
597 }
598
599#pragma mark - ARRAYS / DICTIONARIES:
600

Callers

nothing calls this directly

Calls 3

_asPointerMethod · 0.80
PointerClass · 0.70
isPointerMethod · 0.45

Tested by

no test coverage detected