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

Method sizeKeyTree

Experimental/KeyTree.cc:70–89  ·  view source on GitHub ↗

Same logic as writeKeyTree, but just returns the size it would write, without writing.

Source from the content-addressed store, hash-verified

68
69 // Same logic as writeKeyTree, but just returns the size it would write, without writing.
70 size_t sizeKeyTree(size_t begin, size_t end)
71 {
72 size_t mid = (begin + end) / 2;
73 slice str = _strings[mid];
74 size_t size = SizeOfVarInt(str.size) + str.size; // middle string, with length prefix
75
76 if (end - begin > 1) {
77 size_t leftSize = sizeKeyTree(begin, mid);
78 if (mid+1 < end) {
79 size += SizeOfVarInt(leftSize); // right subtree offset
80 size += leftSize; // left subtree
81 size += sizeKeyTree(mid+1, end); // right subtree
82 } else {
83 size += 1; // no right subtree (offset 0)
84 size += leftSize; // left subtree
85 }
86 }
87 _sizes[mid] = size;
88 return size;
89 }
90
91 void writeKeyTree(size_t begin, size_t end)
92 {

Callers

nothing calls this directly

Calls 1

SizeOfVarIntFunction · 0.85

Tested by

no test coverage detected