GCC Code Coverage Report


Directory: ./
File: openvdb/openvdb/tree/Tree.h
Date: 2022-07-25 17:40:05
Exec Total Coverage
Lines: 223 323 69.0%
Functions: 689 1969 35.0%
Branches: 3135 12987 24.1%

Line Branch Exec Source
1 // Copyright Contributors to the OpenVDB Project
2 // SPDX-License-Identifier: MPL-2.0
3
4 /// @file tree/Tree.h
5
6 #ifndef OPENVDB_TREE_TREE_HAS_BEEN_INCLUDED
7 #define OPENVDB_TREE_TREE_HAS_BEEN_INCLUDED
8
9 #include <openvdb/Types.h>
10 #include <openvdb/Metadata.h>
11 #include <openvdb/math/Math.h>
12 #include <openvdb/math/BBox.h>
13 #include <openvdb/tools/Count.h> // tools::countActiveVoxels(), tools::memUsage(), tools::minMax()
14 #include <openvdb/util/Formats.h>
15 #include <openvdb/util/logging.h>
16 #include <openvdb/Platform.h>
17 #include "RootNode.h"
18 #include "InternalNode.h"
19 #include "LeafNode.h"
20 #include "TreeIterator.h"
21 #include "ValueAccessor.h"
22 #include <tbb/concurrent_hash_map.h>
23 #include <cstdint>
24 #include <iostream>
25 #include <mutex>
26 #include <sstream>
27 #include <vector>
28
29
30 namespace openvdb {
31 OPENVDB_USE_VERSION_NAMESPACE
32 namespace OPENVDB_VERSION_NAME {
33 namespace tree {
34
35 /// @brief Base class for typed trees
36 class OPENVDB_API TreeBase
37 {
38 public:
39 using Ptr = SharedPtr<TreeBase>;
40 using ConstPtr = SharedPtr<const TreeBase>;
41
42 TreeBase() = default;
43 5391 TreeBase(const TreeBase&) = default;
44 TreeBase& operator=(const TreeBase&) = delete; // disallow assignment
45 virtual ~TreeBase() = default;
46
47 /// Return the name of this tree's type.
48 virtual const Name& type() const = 0;
49
50 /// Return the name of the type of a voxel's value (e.g., "float" or "vec3d").
51 virtual Name valueType() const = 0;
52
53 /// Return @c true if this tree is of the same type as the template parameter.
54 template<typename TreeType>
55 2 bool isType() const { return (this->type() == TreeType::treeType()); }
56
57 /// Return a pointer to a deep copy of this tree
58 virtual TreeBase::Ptr copy() const = 0;
59
60 //
61 // Tree methods
62 //
63 /// @brief Return this tree's background value wrapped as metadata.
64 /// @note Query the metadata object for the value's type.
65 virtual Metadata::Ptr getBackgroundValue() const { return Metadata::Ptr(); }
66
67 /// @brief Return in @a bbox the axis-aligned bounding box of all
68 /// active tiles and leaf nodes with active values.
69 /// @details This is faster than calling evalActiveVoxelBoundingBox,
70 /// which visits the individual active voxels, and hence
71 /// evalLeafBoundingBox produces a less tight, i.e. approximate, bbox.
72 /// @return @c false if the bounding box is empty (in which case
73 /// the bbox is set to its default value).
74 virtual bool evalLeafBoundingBox(CoordBBox& bbox) const = 0;
75
76 /// @brief Return in @a dim the dimensions of the axis-aligned bounding box
77 /// of all leaf nodes.
78 /// @return @c false if the bounding box is empty.
79 virtual bool evalLeafDim(Coord& dim) const = 0;
80
81 /// @brief Return in @a bbox the axis-aligned bounding box of all
82 /// active voxels and tiles.
83 /// @details This method produces a more accurate, i.e. tighter,
84 /// bounding box than evalLeafBoundingBox which is approximate but
85 /// faster.
86 /// @return @c false if the bounding box is empty (in which case
87 /// the bbox is set to its default value).
88 virtual bool evalActiveVoxelBoundingBox(CoordBBox& bbox) const = 0;
89
90 /// @brief Return in @a dim the dimensions of the axis-aligned bounding box of all
91 /// active voxels. This is a tighter bounding box than the leaf node bounding box.
92 /// @return @c false if the bounding box is empty.
93 virtual bool evalActiveVoxelDim(Coord& dim) const = 0;
94
95 virtual void getIndexRange(CoordBBox& bbox) const = 0;
96
97 /// @brief Replace with background tiles any nodes whose voxel buffers
98 /// have not yet been allocated.
99 /// @details Typically, unallocated nodes are leaf nodes whose voxel buffers
100 /// are not yet resident in memory because delayed loading is in effect.
101 /// @sa readNonresidentBuffers, io::File::open
102 virtual void clipUnallocatedNodes() = 0;
103 /// Return the total number of unallocated leaf nodes residing in this tree.
104 virtual Index32 unallocatedLeafCount() const = 0;
105
106
107 //
108 // Statistics
109 //
110 /// @brief Return the depth of this tree.
111 ///
112 /// A tree with only a root node and leaf nodes has depth 2, for example.
113 virtual Index treeDepth() const = 0;
114 /// Return the number of leaf nodes.
115 virtual Index32 leafCount() const = 0;
116 /// Return a vector with node counts. The number of nodes of type NodeType
117 /// is given as element NodeType::LEVEL in the return vector. Thus, the size
118 /// of this vector corresponds to the height (or depth) of this tree.
119 virtual std::vector<Index32> nodeCount() const = 0;
120 /// Return the number of non-leaf nodes.
121 virtual Index32 nonLeafCount() const = 0;
122 /// Return the number of active voxels stored in leaf nodes.
123 virtual Index64 activeLeafVoxelCount() const = 0;
124 /// Return the number of inactive voxels stored in leaf nodes.
125 virtual Index64 inactiveLeafVoxelCount() const = 0;
126 /// Return the total number of active voxels.
127 virtual Index64 activeVoxelCount() const = 0;
128 /// Return the number of inactive voxels within the bounding box of all active voxels.
129 virtual Index64 inactiveVoxelCount() const = 0;
130 /// Return the total number of active tiles.
131 virtual Index64 activeTileCount() const = 0;
132
133 /// Return the total amount of memory in bytes occupied by this tree.
134 virtual Index64 memUsage() const { return 0; }
135
136
137 //
138 // I/O methods
139 //
140 /// @brief Read the tree topology from a stream.
141 ///
142 /// This will read the tree structure and tile values, but not voxel data.
143 virtual void readTopology(std::istream&, bool saveFloatAsHalf = false);
144 /// @brief Write the tree topology to a stream.
145 ///
146 /// This will write the tree structure and tile values, but not voxel data.
147 virtual void writeTopology(std::ostream&, bool saveFloatAsHalf = false) const;
148
149 /// Read all data buffers for this tree.
150 virtual void readBuffers(std::istream&, bool saveFloatAsHalf = false) = 0;
151 /// Read all of this tree's data buffers that intersect the given bounding box.
152 virtual void readBuffers(std::istream&, const CoordBBox&, bool saveFloatAsHalf = false) = 0;
153 /// @brief Read all of this tree's data buffers that are not yet resident in memory
154 /// (because delayed loading is in effect).
155 /// @details If this tree was read from a memory-mapped file, this operation
156 /// disconnects the tree from the file.
157 /// @sa clipUnallocatedNodes, io::File::open, io::MappedFile
158 virtual void readNonresidentBuffers() const = 0;
159 /// Write out all the data buffers for this tree.
160 virtual void writeBuffers(std::ostream&, bool saveFloatAsHalf = false) const = 0;
161
162 /// @brief Print statistics, memory usage and other information about this tree.
163 /// @param os a stream to which to write textual information
164 /// @param verboseLevel 1: print tree configuration only;
165 /// 2: include node and voxel statistics;
166 /// 3: include memory usage;
167 /// 4: include minimum and maximum voxel values
168 /// @warning @a verboseLevel 4 forces loading of any unallocated nodes.
169 virtual void print(std::ostream& os = std::cout, int verboseLevel = 1) const;
170 };
171
172
173 ////////////////////////////////////////
174
175
176 template<typename _RootNodeType>
177 class Tree: public TreeBase
178 {
179 public:
180 using Ptr = SharedPtr<Tree>;
181 using ConstPtr = SharedPtr<const Tree>;
182
183 using RootNodeType = _RootNodeType;
184 using ValueType = typename RootNodeType::ValueType;
185 using BuildType = typename RootNodeType::BuildType;
186 using LeafNodeType = typename RootNodeType::LeafNodeType;
187
188 static const Index DEPTH = RootNodeType::LEVEL + 1;
189
190 /// @brief ValueConverter<T>::Type is the type of a tree having the same
191 /// hierarchy as this tree but a different value type, T.
192 ///
193 /// For example, FloatTree::ValueConverter<double>::Type is equivalent to DoubleTree.
194 /// @note If the source tree type is a template argument, it might be necessary
195 /// to write "typename SourceTree::template ValueConverter<T>::Type".
196 template<typename OtherValueType>
197 struct ValueConverter {
198 using Type = Tree<typename RootNodeType::template ValueConverter<OtherValueType>::Type>;
199 };
200
201
202 43572 Tree() {}
203
204 Tree& operator=(const Tree&) = delete; // disallow assignment
205
206 /// Deep copy constructor
207 4556 Tree(const Tree& other): TreeBase(other), mRoot(other.mRoot)
208 {
209 4556 }
210
211 /// @brief Value conversion deep copy constructor
212 ///
213 /// Deep copy a tree of the same configuration as this tree type but a different
214 /// ValueType, casting the other tree's values to this tree's ValueType.
215 /// @throw TypeError if the other tree's configuration doesn't match this tree's
216 /// or if this tree's ValueType is not constructible from the other tree's ValueType.
217 template<typename OtherRootType>
218 752 explicit Tree(const Tree<OtherRootType>& other): TreeBase(other), mRoot(other.root())
219 {
220 748 }
221
222 /// @brief Topology copy constructor from a tree of a different type
223 ///
224 /// Copy the structure, i.e., the active states of tiles and voxels, of another
225 /// tree of a possibly different type, but don't copy any tile or voxel values.
226 /// Instead, initialize tiles and voxels with the given active and inactive values.
227 /// @param other a tree having (possibly) a different ValueType
228 /// @param inactiveValue background value for this tree, and the value to which
229 /// all inactive tiles and voxels are initialized
230 /// @param activeValue value to which active tiles and voxels are initialized
231 /// @throw TypeError if the other tree's configuration doesn't match this tree's.
232 template<typename OtherTreeType>
233 21 Tree(const OtherTreeType& other,
234 const ValueType& inactiveValue,
235 const ValueType& activeValue,
236 TopologyCopy):
237 TreeBase(other),
238 21 mRoot(other.root(), inactiveValue, activeValue, TopologyCopy())
239 {
240 21 }
241
242 /// @brief Topology copy constructor from a tree of a different type
243 ///
244 /// @note This topology copy constructor is generally faster than
245 /// the one that takes both a foreground and a background value.
246 ///
247 /// Copy the structure, i.e., the active states of tiles and voxels, of another
248 /// tree of a possibly different type, but don't copy any tile or voxel values.
249 /// Instead, initialize tiles and voxels with the given background value.
250 /// @param other a tree having (possibly) a different ValueType
251 /// @param background the value to which tiles and voxels are initialized
252 /// @throw TypeError if the other tree's configuration doesn't match this tree's.
253 template<typename OtherTreeType>
254 3583 Tree(const OtherTreeType& other, const ValueType& background, TopologyCopy):
255 TreeBase(other),
256 3583 mRoot(other.root(), background, TopologyCopy())
257 {
258 3583 }
259
260 /// Empty tree constructor
261 47122 Tree(const ValueType& background): mRoot(background) {}
262
263 196798 ~Tree() override { this->clear(); releaseAllAccessors(); }
264
265 /// Return a pointer to a deep copy of this tree
266
1/2
✓ Branch 2 taken 1997 times.
✗ Branch 3 not taken.
7988 TreeBase::Ptr copy() const override { return TreeBase::Ptr(new Tree(*this)); }
267
268 /// Return the name of the type of a voxel's value (e.g., "float" or "vec3d")
269 19930 Name valueType() const override { return typeNameAsString<ValueType>(); }
270
271 /// Return the name of this type of tree.
272 static const Name& treeType();
273 /// Return the name of this type of tree.
274 384 const Name& type() const override { return this->treeType(); }
275
276 bool operator==(const Tree&) const { OPENVDB_THROW(NotImplementedError, ""); }
277 bool operator!=(const Tree&) const { OPENVDB_THROW(NotImplementedError, ""); }
278
279 //@{
280 /// Return this tree's root node.
281
329/608
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 3256 times.
✓ Branch 4 taken 5 times.
✓ Branch 5 taken 16 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ Branch 8 taken 1 times.
✓ Branch 9 taken 1 times.
✓ Branch 10 taken 219 times.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 84 times.
✓ Branch 13 taken 24 times.
✓ Branch 14 taken 1 times.
✓ Branch 15 taken 1287 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✓ Branch 21 taken 86 times.
✓ Branch 22 taken 7 times.
✓ Branch 23 taken 1 times.
✓ Branch 24 taken 126 times.
✓ Branch 25 taken 3 times.
✓ Branch 26 taken 1 times.
✓ Branch 27 taken 134 times.
✓ Branch 28 taken 39 times.
✓ Branch 29 taken 35 times.
✓ Branch 30 taken 120 times.
✓ Branch 31 taken 17 times.
✓ Branch 32 taken 2 times.
✓ Branch 33 taken 135 times.
✓ Branch 34 taken 16 times.
✓ Branch 35 taken 1 times.
✓ Branch 36 taken 126 times.
✓ Branch 37 taken 40 times.
✓ Branch 38 taken 3 times.
✓ Branch 39 taken 128 times.
✓ Branch 40 taken 28 times.
✓ Branch 41 taken 1 times.
✓ Branch 42 taken 134 times.
✓ Branch 43 taken 51 times.
✓ Branch 44 taken 6 times.
✓ Branch 45 taken 142 times.
✓ Branch 46 taken 56 times.
✓ Branch 47 taken 1 times.
✓ Branch 48 taken 223 times.
✗ Branch 49 not taken.
✓ Branch 50 taken 1 times.
✓ Branch 51 taken 256 times.
✗ Branch 52 not taken.
✓ Branch 53 taken 1 times.
✓ Branch 54 taken 94 times.
✗ Branch 55 not taken.
✓ Branch 56 taken 1 times.
✓ Branch 57 taken 94 times.
✗ Branch 58 not taken.
✓ Branch 59 taken 1 times.
✓ Branch 60 taken 94 times.
✗ Branch 61 not taken.
✓ Branch 62 taken 1 times.
✓ Branch 63 taken 887 times.
✓ Branch 64 taken 1 times.
✓ Branch 65 taken 5 times.
✓ Branch 66 taken 68 times.
✗ Branch 67 not taken.
✓ Branch 68 taken 9 times.
✓ Branch 69 taken 549 times.
✗ Branch 70 not taken.
✓ Branch 71 taken 1 times.
✓ Branch 72 taken 187 times.
✓ Branch 73 taken 1 times.
✓ Branch 74 taken 1 times.
✓ Branch 75 taken 556 times.
✗ Branch 76 not taken.
✓ Branch 77 taken 1 times.
✓ Branch 78 taken 786 times.
✗ Branch 79 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 89 taken 1 times.
✗ Branch 90 not taken.
✓ Branch 92 taken 1 times.
✗ Branch 93 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 101 taken 1 times.
✗ Branch 102 not taken.
✓ Branch 104 taken 1 times.
✗ Branch 105 not taken.
✓ Branch 107 taken 1 times.
✗ Branch 108 not taken.
✓ Branch 110 taken 1 times.
✗ Branch 111 not taken.
✓ Branch 113 taken 1 times.
✗ Branch 114 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
✓ Branch 119 taken 1 times.
✗ Branch 120 not taken.
✓ Branch 122 taken 1 times.
✗ Branch 123 not taken.
✓ Branch 125 taken 1 times.
✗ Branch 126 not taken.
✓ Branch 128 taken 1 times.
✗ Branch 129 not taken.
✓ Branch 131 taken 1 times.
✗ Branch 132 not taken.
✓ Branch 134 taken 1 times.
✗ Branch 135 not taken.
✓ Branch 137 taken 1 times.
✗ Branch 138 not taken.
✓ Branch 140 taken 1 times.
✗ Branch 141 not taken.
✓ Branch 143 taken 1 times.
✗ Branch 144 not taken.
✓ Branch 146 taken 1 times.
✗ Branch 147 not taken.
✓ Branch 149 taken 1 times.
✗ Branch 150 not taken.
✓ Branch 152 taken 1 times.
✗ Branch 153 not taken.
✓ Branch 155 taken 1 times.
✗ Branch 156 not taken.
✓ Branch 158 taken 1 times.
✗ Branch 159 not taken.
✓ Branch 161 taken 1 times.
✗ Branch 162 not taken.
✓ Branch 164 taken 1 times.
✗ Branch 165 not taken.
✓ Branch 167 taken 1 times.
✗ Branch 168 not taken.
✓ Branch 170 taken 1 times.
✗ Branch 171 not taken.
✓ Branch 173 taken 1 times.
✗ Branch 174 not taken.
✓ Branch 176 taken 1 times.
✗ Branch 177 not taken.
✓ Branch 179 taken 1 times.
✗ Branch 180 not taken.
✓ Branch 182 taken 1 times.
✗ Branch 183 not taken.
✓ Branch 185 taken 1 times.
✗ Branch 186 not taken.
✓ Branch 188 taken 1 times.
✗ Branch 189 not taken.
✓ Branch 191 taken 1 times.
✗ Branch 192 not taken.
✓ Branch 194 taken 1 times.
✗ Branch 195 not taken.
✓ Branch 197 taken 1 times.
✗ Branch 198 not taken.
✓ Branch 200 taken 1 times.
✗ Branch 201 not taken.
✓ Branch 203 taken 1 times.
✗ Branch 204 not taken.
✓ Branch 206 taken 1 times.
✗ Branch 207 not taken.
✓ Branch 209 taken 1 times.
✗ Branch 210 not taken.
✓ Branch 212 taken 1 times.
✗ Branch 213 not taken.
✓ Branch 215 taken 1 times.
✗ Branch 216 not taken.
✓ Branch 218 taken 1 times.
✗ Branch 219 not taken.
✓ Branch 221 taken 1 times.
✗ Branch 222 not taken.
✓ Branch 224 taken 1 times.
✗ Branch 225 not taken.
✓ Branch 227 taken 1 times.
✗ Branch 228 not taken.
✓ Branch 230 taken 1 times.
✗ Branch 231 not taken.
✓ Branch 233 taken 1 times.
✗ Branch 234 not taken.
✓ Branch 236 taken 1 times.
✗ Branch 237 not taken.
✓ Branch 239 taken 1 times.
✗ Branch 240 not taken.
✓ Branch 242 taken 1 times.
✗ Branch 243 not taken.
✓ Branch 245 taken 1 times.
✗ Branch 246 not taken.
✓ Branch 248 taken 1 times.
✗ Branch 249 not taken.
✓ Branch 251 taken 1 times.
✗ Branch 252 not taken.
✓ Branch 254 taken 1 times.
✗ Branch 255 not taken.
✓ Branch 257 taken 1 times.
✗ Branch 258 not taken.
✓ Branch 260 taken 1 times.
✗ Branch 261 not taken.
✓ Branch 263 taken 1 times.
✗ Branch 264 not taken.
✓ Branch 267 taken 1 times.
✗ Branch 268 not taken.
✓ Branch 270 taken 1 times.
✗ Branch 271 not taken.
✓ Branch 273 taken 1 times.
✗ Branch 274 not taken.
✓ Branch 276 taken 1 times.
✗ Branch 277 not taken.
✓ Branch 279 taken 1 times.
✗ Branch 280 not taken.
✓ Branch 282 taken 1 times.
✗ Branch 283 not taken.
✓ Branch 285 taken 1 times.
✗ Branch 286 not taken.
✓ Branch 288 taken 1 times.
✗ Branch 289 not taken.
✓ Branch 291 taken 1 times.
✗ Branch 292 not taken.
✓ Branch 294 taken 1 times.
✗ Branch 295 not taken.
✓ Branch 297 taken 1 times.
✗ Branch 298 not taken.
✓ Branch 300 taken 1 times.
✗ Branch 301 not taken.
✓ Branch 304 taken 1 times.
✗ Branch 305 not taken.
✓ Branch 307 taken 1 times.
✗ Branch 308 not taken.
✓ Branch 310 taken 1 times.
✗ Branch 311 not taken.
✓ Branch 313 taken 1 times.
✗ Branch 314 not taken.
✓ Branch 316 taken 1 times.
✗ Branch 317 not taken.
✓ Branch 319 taken 1 times.
✗ Branch 320 not taken.
✓ Branch 323 taken 1 times.
✗ Branch 324 not taken.
✓ Branch 326 taken 1 times.
✗ Branch 327 not taken.
✓ Branch 329 taken 1 times.
✗ Branch 330 not taken.
✓ Branch 332 taken 1 times.
✗ Branch 333 not taken.
✓ Branch 335 taken 1 times.
✗ Branch 336 not taken.
✓ Branch 338 taken 1 times.
✗ Branch 339 not taken.
✓ Branch 342 taken 1 times.
✗ Branch 343 not taken.
✓ Branch 345 taken 1 times.
✗ Branch 346 not taken.
✓ Branch 348 taken 1 times.
✗ Branch 349 not taken.
✓ Branch 351 taken 1 times.
✗ Branch 352 not taken.
✓ Branch 354 taken 1 times.
✗ Branch 355 not taken.
✓ Branch 357 taken 1 times.
✗ Branch 358 not taken.
✓ Branch 361 taken 1 times.
✗ Branch 362 not taken.
✓ Branch 364 taken 1 times.
✗ Branch 365 not taken.
✓ Branch 367 taken 1 times.
✗ Branch 368 not taken.
✓ Branch 371 taken 1 times.
✗ Branch 372 not taken.
✓ Branch 374 taken 1 times.
✗ Branch 375 not taken.
✓ Branch 377 taken 1 times.
✗ Branch 378 not taken.
✓ Branch 381 taken 1 times.
✗ Branch 382 not taken.
✓ Branch 384 taken 1 times.
✗ Branch 385 not taken.
✓ Branch 387 taken 1 times.
✗ Branch 388 not taken.
✓ Branch 391 taken 1 times.
✗ Branch 392 not taken.
✓ Branch 394 taken 1 times.
✗ Branch 395 not taken.
✓ Branch 397 taken 1 times.
✗ Branch 398 not taken.
✓ Branch 400 taken 1 times.
✗ Branch 401 not taken.
✓ Branch 403 taken 1 times.
✗ Branch 404 not taken.
✓ Branch 406 taken 1 times.
✗ Branch 407 not taken.
✓ Branch 409 taken 1 times.
✗ Branch 410 not taken.
✓ Branch 412 taken 1 times.
✗ Branch 413 not taken.
✓ Branch 415 taken 1 times.
✗ Branch 416 not taken.
✓ Branch 418 taken 1 times.
✗ Branch 419 not taken.
✓ Branch 421 taken 1 times.
✗ Branch 422 not taken.
✓ Branch 424 taken 1 times.
✗ Branch 425 not taken.
✓ Branch 427 taken 1 times.
✗ Branch 428 not taken.
✓ Branch 430 taken 1 times.
✗ Branch 431 not taken.
✓ Branch 433 taken 1 times.
✗ Branch 434 not taken.
✓ Branch 436 taken 1 times.
✗ Branch 437 not taken.
✓ Branch 439 taken 1 times.
✗ Branch 440 not taken.
✓ Branch 442 taken 1 times.
✗ Branch 443 not taken.
✓ Branch 445 taken 1 times.
✗ Branch 446 not taken.
✓ Branch 448 taken 1 times.
✗ Branch 449 not taken.
✓ Branch 451 taken 1 times.
✗ Branch 452 not taken.
✓ Branch 454 taken 1 times.
✗ Branch 455 not taken.
✓ Branch 457 taken 1 times.
✗ Branch 458 not taken.
✓ Branch 460 taken 1 times.
✗ Branch 461 not taken.
✓ Branch 463 taken 1 times.
✗ Branch 464 not taken.
✓ Branch 466 taken 1 times.
✗ Branch 467 not taken.
✓ Branch 469 taken 1 times.
✗ Branch 470 not taken.
✓ Branch 472 taken 1 times.
✗ Branch 473 not taken.
✓ Branch 475 taken 1 times.
✗ Branch 476 not taken.
✓ Branch 478 taken 1 times.
✗ Branch 479 not taken.
✓ Branch 481 taken 1 times.
✗ Branch 482 not taken.
✓ Branch 484 taken 1 times.
✗ Branch 485 not taken.
✓ Branch 487 taken 1 times.
✗ Branch 488 not taken.
✓ Branch 490 taken 1 times.
✗ Branch 491 not taken.
✓ Branch 493 taken 1 times.
✗ Branch 494 not taken.
✓ Branch 496 taken 1 times.
✗ Branch 497 not taken.
✓ Branch 499 taken 1 times.
✗ Branch 500 not taken.
✓ Branch 502 taken 1 times.
✗ Branch 503 not taken.
✓ Branch 505 taken 1 times.
✗ Branch 506 not taken.
✓ Branch 508 taken 1 times.
✗ Branch 509 not taken.
✓ Branch 511 taken 1 times.
✗ Branch 512 not taken.
✓ Branch 514 taken 1 times.
✗ Branch 515 not taken.
✓ Branch 517 taken 1 times.
✗ Branch 518 not taken.
✓ Branch 520 taken 1 times.
✗ Branch 521 not taken.
✓ Branch 523 taken 1 times.
✗ Branch 524 not taken.
✓ Branch 526 taken 1 times.
✗ Branch 527 not taken.
✓ Branch 529 taken 1 times.
✗ Branch 530 not taken.
✓ Branch 532 taken 1 times.
✗ Branch 533 not taken.
✓ Branch 535 taken 1 times.
✗ Branch 536 not taken.
✓ Branch 538 taken 1 times.
✗ Branch 539 not taken.
✓ Branch 541 taken 1 times.
✗ Branch 542 not taken.
✓ Branch 544 taken 1 times.
✗ Branch 545 not taken.
✓ Branch 547 taken 1 times.
✗ Branch 548 not taken.
✓ Branch 550 taken 1 times.
✗ Branch 551 not taken.
✓ Branch 553 taken 1 times.
✗ Branch 554 not taken.
✓ Branch 556 taken 1 times.
✗ Branch 557 not taken.
✓ Branch 559 taken 1 times.
✗ Branch 560 not taken.
✓ Branch 563 taken 1 times.
✗ Branch 564 not taken.
✓ Branch 566 taken 1 times.
✗ Branch 567 not taken.
✓ Branch 570 taken 1 times.
✗ Branch 571 not taken.
✓ Branch 573 taken 1 times.
✗ Branch 574 not taken.
✓ Branch 577 taken 1 times.
✗ Branch 578 not taken.
✓ Branch 580 taken 1 times.
✗ Branch 581 not taken.
✓ Branch 584 taken 1 times.
✗ Branch 585 not taken.
✓ Branch 587 taken 1 times.
✗ Branch 588 not taken.
✓ Branch 591 taken 1 times.
✗ Branch 592 not taken.
✓ Branch 594 taken 1 times.
✗ Branch 595 not taken.
✓ Branch 598 taken 1 times.
✗ Branch 599 not taken.
✓ Branch 601 taken 1 times.
✗ Branch 602 not taken.
✓ Branch 605 taken 1 times.
✗ Branch 606 not taken.
✓ Branch 608 taken 1 times.
✗ Branch 609 not taken.
✓ Branch 612 taken 1 times.
✗ Branch 613 not taken.
✓ Branch 615 taken 1 times.
✗ Branch 616 not taken.
✓ Branch 619 taken 1 times.
✗ Branch 620 not taken.
✓ Branch 622 taken 1 times.
✗ Branch 623 not taken.
✓ Branch 625 taken 1 times.
✗ Branch 626 not taken.
✓ Branch 628 taken 1 times.
✗ Branch 629 not taken.
✓ Branch 631 taken 1 times.
✗ Branch 632 not taken.
✓ Branch 634 taken 1 times.
✗ Branch 635 not taken.
✓ Branch 638 taken 1 times.
✗ Branch 639 not taken.
✓ Branch 641 taken 1 times.
✗ Branch 642 not taken.
✓ Branch 644 taken 1 times.
✗ Branch 645 not taken.
✓ Branch 648 taken 1 times.
✗ Branch 649 not taken.
✓ Branch 651 taken 1 times.
✗ Branch 652 not taken.
✓ Branch 654 taken 1 times.
✗ Branch 655 not taken.
✓ Branch 658 taken 1 times.
✗ Branch 659 not taken.
✓ Branch 661 taken 1 times.
✗ Branch 662 not taken.
✓ Branch 664 taken 1 times.
✗ Branch 665 not taken.
✓ Branch 667 taken 1 times.
✗ Branch 668 not taken.
✓ Branch 670 taken 1 times.
✗ Branch 671 not taken.
✓ Branch 673 taken 1 times.
✗ Branch 674 not taken.
✓ Branch 677 taken 1 times.
✗ Branch 678 not taken.
✓ Branch 680 taken 1 times.
✗ Branch 681 not taken.
✓ Branch 683 taken 1 times.
✗ Branch 684 not taken.
✓ Branch 687 taken 1 times.
✗ Branch 688 not taken.
✓ Branch 690 taken 1 times.
✗ Branch 691 not taken.
✓ Branch 693 taken 1 times.
✗ Branch 694 not taken.
✓ Branch 697 taken 1 times.
✗ Branch 698 not taken.
✓ Branch 700 taken 1 times.
✗ Branch 701 not taken.
✓ Branch 703 taken 1 times.
✗ Branch 704 not taken.
✓ Branch 707 taken 1 times.
✗ Branch 708 not taken.
✓ Branch 710 taken 1 times.
✗ Branch 711 not taken.
✓ Branch 713 taken 1 times.
✗ Branch 714 not taken.
✓ Branch 717 taken 1 times.
✗ Branch 718 not taken.
✓ Branch 720 taken 1 times.
✗ Branch 721 not taken.
✓ Branch 723 taken 1 times.
✗ Branch 724 not taken.
✓ Branch 727 taken 1 times.
✗ Branch 728 not taken.
✓ Branch 730 taken 1 times.
✗ Branch 731 not taken.
✓ Branch 733 taken 1 times.
✗ Branch 734 not taken.
✓ Branch 737 taken 1 times.
✗ Branch 738 not taken.
✓ Branch 740 taken 1 times.
✗ Branch 741 not taken.
✓ Branch 743 taken 1 times.
✗ Branch 744 not taken.
✓ Branch 747 taken 1 times.
✗ Branch 748 not taken.
✓ Branch 750 taken 1 times.
✗ Branch 751 not taken.
✓ Branch 753 taken 1 times.
✗ Branch 754 not taken.
✓ Branch 757 taken 1 times.
✗ Branch 758 not taken.
✓ Branch 760 taken 1 times.
✗ Branch 761 not taken.
✓ Branch 763 taken 1 times.
✗ Branch 764 not taken.
✓ Branch 767 taken 1 times.
✗ Branch 768 not taken.
✓ Branch 770 taken 1 times.
✗ Branch 771 not taken.
✓ Branch 773 taken 1 times.
✗ Branch 774 not taken.
✓ Branch 777 taken 1 times.
✗ Branch 778 not taken.
✓ Branch 780 taken 1 times.
✗ Branch 781 not taken.
✓ Branch 783 taken 1 times.
✗ Branch 784 not taken.
✓ Branch 786 taken 1 times.
✗ Branch 787 not taken.
✓ Branch 789 taken 1 times.
✗ Branch 790 not taken.
✓ Branch 792 taken 1 times.
✗ Branch 793 not taken.
✓ Branch 795 taken 1 times.
✗ Branch 796 not taken.
✓ Branch 798 taken 1 times.
✗ Branch 799 not taken.
✓ Branch 801 taken 1 times.
✗ Branch 802 not taken.
✓ Branch 804 taken 1 times.
✗ Branch 805 not taken.
✓ Branch 807 taken 1 times.
✗ Branch 808 not taken.
✓ Branch 810 taken 1 times.
✗ Branch 811 not taken.
✓ Branch 813 taken 1 times.
✗ Branch 814 not taken.
✓ Branch 816 taken 1 times.
✗ Branch 817 not taken.
✓ Branch 819 taken 1 times.
✗ Branch 820 not taken.
✓ Branch 822 taken 1 times.
✗ Branch 823 not taken.
✓ Branch 825 taken 1 times.
✗ Branch 826 not taken.
✓ Branch 828 taken 1 times.
✗ Branch 829 not taken.
✓ Branch 832 taken 1 times.
✗ Branch 833 not taken.
✓ Branch 835 taken 1 times.
✗ Branch 836 not taken.
✓ Branch 839 taken 1 times.
✗ Branch 840 not taken.
✓ Branch 842 taken 1 times.
✗ Branch 843 not taken.
✓ Branch 845 taken 1 times.
✗ Branch 846 not taken.
✓ Branch 848 taken 1 times.
✗ Branch 849 not taken.
✓ Branch 851 taken 1 times.
✗ Branch 852 not taken.
✓ Branch 854 taken 1 times.
✗ Branch 855 not taken.
✓ Branch 857 taken 1 times.
✗ Branch 858 not taken.
✓ Branch 860 taken 1 times.
✗ Branch 861 not taken.
✓ Branch 863 taken 1 times.
✗ Branch 864 not taken.
✓ Branch 866 taken 1 times.
✗ Branch 867 not taken.
✓ Branch 869 taken 1 times.
✗ Branch 870 not taken.
✓ Branch 872 taken 1 times.
✗ Branch 873 not taken.
✓ Branch 875 taken 1 times.
✗ Branch 876 not taken.
✓ Branch 878 taken 1 times.
✗ Branch 879 not taken.
✓ Branch 881 taken 1 times.
✗ Branch 882 not taken.
✓ Branch 884 taken 1 times.
✗ Branch 885 not taken.
✓ Branch 887 taken 1 times.
✗ Branch 888 not taken.
✓ Branch 890 taken 1 times.
✗ Branch 891 not taken.
✓ Branch 893 taken 1 times.
✗ Branch 894 not taken.
✓ Branch 896 taken 1 times.
✗ Branch 897 not taken.
✓ Branch 899 taken 1 times.
✗ Branch 900 not taken.
✓ Branch 902 taken 1 times.
✗ Branch 903 not taken.
26735959 RootNodeType& root() { return mRoot; }
282
41/351
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 15 times.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 102 times.
✓ Branch 9 taken 24 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 119 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 39 times.
✓ Branch 15 taken 15 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 5567 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 23 times.
✓ Branch 21 taken 31 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 28 times.
✓ Branch 24 taken 3 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 6 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 67 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 85 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✓ Branch 35 taken 6 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✓ Branch 38 taken 6 times.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 5 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✓ Branch 44 taken 1 times.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 4 times.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✓ Branch 50 taken 6 times.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✓ Branch 53 taken 68 times.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 5126 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✓ Branch 62 taken 67 times.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 65 taken 2 times.
✓ Branch 66 taken 1 times.
✓ Branch 67 taken 6 times.
✗ Branch 68 not taken.
✓ Branch 69 taken 1 times.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✓ Branch 74 taken 1 times.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✓ Branch 77 taken 3233 times.
✗ Branch 78 not taken.
✓ Branch 79 taken 3 times.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✓ Branch 85 taken 2 times.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✓ Branch 91 taken 3 times.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 96 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 99 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 102 not taken.
✓ Branch 103 taken 16 times.
✗ Branch 104 not taken.
✗ Branch 105 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 108 not taken.
✓ Branch 109 taken 10 times.
✗ Branch 110 not taken.
✗ Branch 111 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 114 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 117 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 120 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✗ Branch 123 not taken.
✓ Branch 124 taken 7 times.
✗ Branch 125 not taken.
✗ Branch 126 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 129 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 132 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✗ Branch 135 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 138 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 141 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 144 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✗ Branch 147 not taken.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✗ Branch 150 not taken.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 153 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 157 not taken.
✗ Branch 158 not taken.
✗ Branch 159 not taken.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 162 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 165 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 168 not taken.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✗ Branch 171 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✗ Branch 174 not taken.
✗ Branch 175 not taken.
✗ Branch 176 not taken.
✓ Branch 177 taken 6 times.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 180 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 192 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 195 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✗ Branch 198 not taken.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 201 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✗ Branch 204 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 207 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 210 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✗ Branch 213 not taken.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✗ Branch 216 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✗ Branch 219 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 225 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✗ Branch 228 not taken.
✗ Branch 229 not taken.
✗ Branch 230 not taken.
✗ Branch 231 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 234 not taken.
✗ Branch 235 not taken.
✗ Branch 236 not taken.
✗ Branch 237 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 240 not taken.
✗ Branch 241 not taken.
✗ Branch 242 not taken.
✗ Branch 243 not taken.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✗ Branch 246 not taken.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✗ Branch 249 not taken.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✗ Branch 252 not taken.
✗ Branch 253 not taken.
✗ Branch 254 not taken.
✗ Branch 255 not taken.
✗ Branch 256 not taken.
✗ Branch 257 not taken.
✗ Branch 258 not taken.
✗ Branch 259 not taken.
✗ Branch 260 not taken.
✗ Branch 261 not taken.
✗ Branch 262 not taken.
✗ Branch 263 not taken.
✗ Branch 264 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✗ Branch 271 not taken.
✗ Branch 272 not taken.
✗ Branch 273 not taken.
✗ Branch 274 not taken.
✗ Branch 275 not taken.
✗ Branch 276 not taken.
✗ Branch 277 not taken.
✗ Branch 278 not taken.
✗ Branch 279 not taken.
✗ Branch 280 not taken.
✗ Branch 281 not taken.
✗ Branch 282 not taken.
✗ Branch 283 not taken.
✗ Branch 284 not taken.
✗ Branch 285 not taken.
✗ Branch 286 not taken.
✗ Branch 287 not taken.
✗ Branch 288 not taken.
✗ Branch 289 not taken.
✗ Branch 290 not taken.
✗ Branch 291 not taken.
✗ Branch 292 not taken.
✗ Branch 293 not taken.
✗ Branch 294 not taken.
✗ Branch 295 not taken.
✗ Branch 296 not taken.
✗ Branch 297 not taken.
✗ Branch 298 not taken.
✗ Branch 299 not taken.
✗ Branch 300 not taken.
✗ Branch 301 not taken.
✗ Branch 302 not taken.
✗ Branch 303 not taken.
✗ Branch 304 not taken.
✗ Branch 305 not taken.
✗ Branch 306 not taken.
✗ Branch 307 not taken.
✗ Branch 308 not taken.
✗ Branch 309 not taken.
✗ Branch 310 not taken.
✗ Branch 311 not taken.
✗ Branch 312 not taken.
✗ Branch 313 not taken.
✗ Branch 314 not taken.
✗ Branch 315 not taken.
✗ Branch 316 not taken.
✗ Branch 317 not taken.
✗ Branch 318 not taken.
✗ Branch 319 not taken.
✗ Branch 320 not taken.
✗ Branch 321 not taken.
✗ Branch 323 not taken.
✗ Branch 324 not taken.
✗ Branch 326 not taken.
✗ Branch 327 not taken.
✗ Branch 329 not taken.
✗ Branch 330 not taken.
✗ Branch 332 not taken.
✗ Branch 333 not taken.
✗ Branch 335 not taken.
✗ Branch 336 not taken.
✗ Branch 338 not taken.
✗ Branch 339 not taken.
✗ Branch 341 not taken.
✗ Branch 342 not taken.
✗ Branch 344 not taken.
✗ Branch 345 not taken.
✗ Branch 347 not taken.
✗ Branch 348 not taken.
✗ Branch 350 not taken.
✗ Branch 351 not taken.
✗ Branch 353 not taken.
✗ Branch 354 not taken.
✗ Branch 356 not taken.
✗ Branch 357 not taken.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✗ Branch 365 not taken.
✗ Branch 366 not taken.
706956794 const RootNodeType& root() const { return mRoot; }
283 //@}
284
285
286 //
287 // Tree methods
288 //
289 /// @brief Return @c true if the given tree has the same node and active value
290 /// topology as this tree, whether or not it has the same @c ValueType.
291 template<typename OtherRootNodeType>
292 bool hasSameTopology(const Tree<OtherRootNodeType>& other) const;
293
294 bool evalLeafBoundingBox(CoordBBox& bbox) const override;
295 bool evalActiveVoxelBoundingBox(CoordBBox& bbox) const override;
296 bool evalActiveVoxelDim(Coord& dim) const override;
297 bool evalLeafDim(Coord& dim) const override;
298
299 /// @brief Traverse the type hierarchy of nodes, and return, in @a dims, a list
300 /// of the Log2Dims of nodes in order from RootNode to LeafNode.
301 /// @note Because RootNodes are resizable, the RootNode Log2Dim is 0 for all trees.
302 static void getNodeLog2Dims(std::vector<Index>& dims);
303
304
305 //
306 // I/O methods
307 //
308 /// @brief Read the tree topology from a stream.
309 ///
310 /// This will read the tree structure and tile values, but not voxel data.
311 void readTopology(std::istream&, bool saveFloatAsHalf = false) override;
312 /// @brief Write the tree topology to a stream.
313 ///
314 /// This will write the tree structure and tile values, but not voxel data.
315 void writeTopology(std::ostream&, bool saveFloatAsHalf = false) const override;
316 /// Read all data buffers for this tree.
317 void readBuffers(std::istream&, bool saveFloatAsHalf = false) override;
318 /// Read all of this tree's data buffers that intersect the given bounding box.
319 void readBuffers(std::istream&, const CoordBBox&, bool saveFloatAsHalf = false) override;
320 /// @brief Read all of this tree's data buffers that are not yet resident in memory
321 /// (because delayed loading is in effect).
322 /// @details If this tree was read from a memory-mapped file, this operation
323 /// disconnects the tree from the file.
324 /// @sa clipUnallocatedNodes, io::File::open, io::MappedFile
325 void readNonresidentBuffers() const override;
326 /// Write out all data buffers for this tree.
327 void writeBuffers(std::ostream&, bool saveFloatAsHalf = false) const override;
328
329 void print(std::ostream& os = std::cout, int verboseLevel = 1) const override;
330
331
332 //
333 // Statistics
334 //
335 /// @brief Return the depth of this tree.
336 ///
337 /// A tree with only a root node and leaf nodes has depth 2, for example.
338 18 Index treeDepth() const override { return DEPTH; }
339 /// Return the number of leaf nodes.
340
152/283
✓ Branch 1 taken 12 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 65 times.
✓ Branch 7 taken 8 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 8 times.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 7 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 8 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 8 times.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 6 times.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 6 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 6 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 6 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 5 times.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 5 times.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 5 times.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 5 times.
✓ Branch 44 taken 1 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 5 times.
✓ Branch 47 taken 1 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 5 times.
✓ Branch 50 taken 1 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 5 times.
✓ Branch 53 taken 1 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 12 times.
✓ Branch 56 taken 1 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 12 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 12 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 12 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 2 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 2 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 2 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 2 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 2 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 2 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 2 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 2 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 2 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 2 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 2 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 2 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 2 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 2 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 2 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 2 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 2 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 11 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 11 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 12 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 12 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 2 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 2 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 2 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 2 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 2 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 2 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 2 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 2 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 2 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 2 times.
✗ Branch 161 not taken.
✓ Branch 163 taken 2 times.
✗ Branch 164 not taken.
✓ Branch 166 taken 2 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 2 times.
✗ Branch 170 not taken.
✓ Branch 172 taken 2 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 2 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 2 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 2 times.
✗ Branch 182 not taken.
✓ Branch 184 taken 2 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 11 times.
✗ Branch 188 not taken.
✓ Branch 190 taken 11 times.
✗ Branch 191 not taken.
✓ Branch 193 taken 12 times.
✗ Branch 194 not taken.
✓ Branch 196 taken 12 times.
✗ Branch 197 not taken.
✓ Branch 199 taken 2 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 2 times.
✗ Branch 203 not taken.
✓ Branch 205 taken 2 times.
✗ Branch 206 not taken.
✓ Branch 208 taken 2 times.
✗ Branch 209 not taken.
✓ Branch 211 taken 2 times.
✗ Branch 212 not taken.
✓ Branch 214 taken 2 times.
✗ Branch 215 not taken.
✓ Branch 217 taken 2 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 2 times.
✗ Branch 221 not taken.
✓ Branch 223 taken 2 times.
✗ Branch 224 not taken.
✓ Branch 226 taken 2 times.
✗ Branch 227 not taken.
✓ Branch 229 taken 2 times.
✗ Branch 230 not taken.
✓ Branch 232 taken 2 times.
✗ Branch 233 not taken.
✓ Branch 235 taken 2 times.
✗ Branch 236 not taken.
✓ Branch 238 taken 2 times.
✗ Branch 239 not taken.
✓ Branch 241 taken 2 times.
✗ Branch 242 not taken.
✓ Branch 244 taken 2 times.
✗ Branch 245 not taken.
✓ Branch 247 taken 2 times.
✗ Branch 248 not taken.
✓ Branch 250 taken 2 times.
✗ Branch 251 not taken.
✓ Branch 253 taken 11 times.
✗ Branch 254 not taken.
✓ Branch 256 taken 11 times.
✗ Branch 257 not taken.
✓ Branch 259 taken 12 times.
✗ Branch 260 not taken.
✓ Branch 262 taken 12 times.
✗ Branch 263 not taken.
✓ Branch 265 taken 2 times.
✗ Branch 266 not taken.
✓ Branch 268 taken 2 times.
✗ Branch 269 not taken.
✓ Branch 271 taken 2 times.
✗ Branch 272 not taken.
✓ Branch 274 taken 2 times.
✗ Branch 275 not taken.
✓ Branch 277 taken 2 times.
✗ Branch 278 not taken.
✓ Branch 280 taken 2 times.
✗ Branch 281 not taken.
✓ Branch 283 taken 2 times.
✗ Branch 284 not taken.
✓ Branch 286 taken 2 times.
✗ Branch 287 not taken.
✓ Branch 289 taken 2 times.
✗ Branch 290 not taken.
✓ Branch 292 taken 2 times.
✗ Branch 293 not taken.
✓ Branch 295 taken 1 times.
✗ Branch 296 not taken.
✓ Branch 298 taken 1 times.
✗ Branch 299 not taken.
✓ Branch 301 taken 1 times.
✗ Branch 302 not taken.
✓ Branch 304 taken 1 times.
✗ Branch 305 not taken.
✓ Branch 307 taken 1 times.
✗ Branch 308 not taken.
✓ Branch 310 taken 1 times.
✗ Branch 311 not taken.
✓ Branch 313 taken 1 times.
✗ Branch 314 not taken.
✓ Branch 316 taken 1 times.
✗ Branch 317 not taken.
✓ Branch 319 taken 10 times.
✗ Branch 320 not taken.
✓ Branch 322 taken 10 times.
✗ Branch 323 not taken.
✓ Branch 325 taken 11 times.
✗ Branch 326 not taken.
✓ Branch 328 taken 11 times.
✗ Branch 329 not taken.
✓ Branch 331 taken 1 times.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✓ Branch 337 taken 1 times.
✗ Branch 338 not taken.
✓ Branch 340 taken 1 times.
✗ Branch 341 not taken.
✓ Branch 343 taken 1 times.
✗ Branch 344 not taken.
✓ Branch 346 taken 1 times.
✗ Branch 347 not taken.
✓ Branch 349 taken 1 times.
✗ Branch 350 not taken.
✓ Branch 352 taken 1 times.
✗ Branch 353 not taken.
✓ Branch 355 taken 1 times.
✗ Branch 356 not taken.
✓ Branch 358 taken 1 times.
✗ Branch 359 not taken.
✓ Branch 361 taken 1 times.
✗ Branch 362 not taken.
✓ Branch 364 taken 1 times.
✗ Branch 365 not taken.
✓ Branch 367 taken 1 times.
✗ Branch 368 not taken.
✓ Branch 370 taken 1 times.
✗ Branch 371 not taken.
✓ Branch 373 taken 1 times.
✗ Branch 374 not taken.
✓ Branch 376 taken 1 times.
✗ Branch 377 not taken.
✓ Branch 379 taken 1 times.
✗ Branch 380 not taken.
✓ Branch 382 taken 1 times.
✗ Branch 383 not taken.
✓ Branch 385 taken 10 times.
✗ Branch 386 not taken.
✓ Branch 388 taken 10 times.
✗ Branch 389 not taken.
✓ Branch 391 taken 11 times.
✗ Branch 392 not taken.
✓ Branch 394 taken 11 times.
✗ Branch 395 not taken.
60270 Index32 leafCount() const override { return mRoot.leafCount(); }
341 /// Return a vector with node counts. The number of nodes of type NodeType
342 /// is given as element NodeType::LEVEL in the return vector. Thus, the size
343 /// of this vector corresponds to the height (or depth) of this tree.
344 6 std::vector<Index32> nodeCount() const override
345 {
346 6 std::vector<Index32> vec(DEPTH, 0);
347
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
6 mRoot.nodeCount( vec );
348 6 return vec;// Named Return Value Optimization
349 }
350 /// Return the number of non-leaf nodes.
351
49/79
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 15 times.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 13 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 14 times.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 14 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 5 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 14 times.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 12 times.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 13 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 13 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 3 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 12 times.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 12 times.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 13 times.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 13 times.
✓ Branch 44 taken 1 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 3 times.
✓ Branch 47 taken 1 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 12 times.
✓ Branch 50 taken 1 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 12 times.
✓ Branch 53 taken 1 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 13 times.
✓ Branch 56 taken 1 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 13 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 3 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 12 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 12 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 12 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 12 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 1 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 10 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 10 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 11 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 11 times.
✗ Branch 89 not taken.
357 Index32 nonLeafCount() const override { return mRoot.nonLeafCount(); }
352 /// Return the number of active voxels stored in leaf nodes.
353
8/16
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
15 Index64 activeLeafVoxelCount() const override { return tools::countActiveLeafVoxels(*this); }
354 /// Return the number of inactive voxels stored in leaf nodes.
355
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
4 Index64 inactiveLeafVoxelCount() const override { return tools::countInactiveLeafVoxels(*this); }
356 /// Return the total number of active voxels.
357
279/537
✓ Branch 1 taken 13 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 8 times.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 5 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 4 times.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 4 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 4 times.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✓ Branch 44 taken 1 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 2 times.
✓ Branch 47 taken 1 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 1 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✓ Branch 53 taken 2 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✓ Branch 61 taken 2 times.
✓ Branch 62 taken 2 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 9 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 9 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 9 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 2 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 2 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 2 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 2 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 11 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 11 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 12 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 12 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 2 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 2 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 2 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 2 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 2 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 2 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 2 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 2 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 513 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 513 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 513 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 2 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 2 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 2 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 2 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 2 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 2 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 2 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 2 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 2 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 2 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 2 times.
✗ Branch 161 not taken.
✓ Branch 163 taken 2 times.
✗ Branch 164 not taken.
✓ Branch 166 taken 2 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 2 times.
✗ Branch 170 not taken.
✓ Branch 172 taken 2 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 2 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 2 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 2 times.
✗ Branch 182 not taken.
✓ Branch 184 taken 2 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 2 times.
✗ Branch 188 not taken.
✓ Branch 190 taken 2 times.
✗ Branch 191 not taken.
✓ Branch 193 taken 9 times.
✗ Branch 194 not taken.
✓ Branch 196 taken 9 times.
✗ Branch 197 not taken.
✓ Branch 199 taken 9 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 2 times.
✗ Branch 203 not taken.
✓ Branch 205 taken 2 times.
✗ Branch 206 not taken.
✓ Branch 208 taken 2 times.
✗ Branch 209 not taken.
✓ Branch 211 taken 2 times.
✗ Branch 212 not taken.
✓ Branch 214 taken 11 times.
✗ Branch 215 not taken.
✓ Branch 217 taken 11 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 12 times.
✗ Branch 221 not taken.
✓ Branch 223 taken 12 times.
✗ Branch 224 not taken.
✓ Branch 226 taken 2 times.
✗ Branch 227 not taken.
✓ Branch 229 taken 2 times.
✗ Branch 230 not taken.
✓ Branch 232 taken 2 times.
✗ Branch 233 not taken.
✓ Branch 235 taken 2 times.
✗ Branch 236 not taken.
✓ Branch 238 taken 2 times.
✗ Branch 239 not taken.
✓ Branch 241 taken 2 times.
✗ Branch 242 not taken.
✓ Branch 244 taken 2 times.
✗ Branch 245 not taken.
✓ Branch 247 taken 1 times.
✗ Branch 248 not taken.
✓ Branch 250 taken 512 times.
✗ Branch 251 not taken.
✓ Branch 253 taken 512 times.
✗ Branch 254 not taken.
✓ Branch 256 taken 512 times.
✗ Branch 257 not taken.
✓ Branch 259 taken 1 times.
✗ Branch 260 not taken.
✓ Branch 262 taken 1 times.
✗ Branch 263 not taken.
✓ Branch 265 taken 1 times.
✗ Branch 266 not taken.
✓ Branch 268 taken 1 times.
✗ Branch 269 not taken.
✓ Branch 271 taken 1 times.
✗ Branch 272 not taken.
✓ Branch 274 taken 1 times.
✗ Branch 275 not taken.
✓ Branch 277 taken 1 times.
✗ Branch 278 not taken.
✓ Branch 280 taken 1 times.
✗ Branch 281 not taken.
✓ Branch 283 taken 1 times.
✗ Branch 284 not taken.
✓ Branch 286 taken 1 times.
✗ Branch 287 not taken.
✓ Branch 289 taken 1 times.
✗ Branch 290 not taken.
✓ Branch 292 taken 1 times.
✗ Branch 293 not taken.
✓ Branch 295 taken 1 times.
✗ Branch 296 not taken.
✓ Branch 298 taken 1 times.
✗ Branch 299 not taken.
✓ Branch 301 taken 1 times.
✗ Branch 302 not taken.
✓ Branch 304 taken 1 times.
✗ Branch 305 not taken.
✓ Branch 307 taken 1 times.
✗ Branch 308 not taken.
✓ Branch 310 taken 1 times.
✗ Branch 311 not taken.
✓ Branch 313 taken 1 times.
✗ Branch 314 not taken.
✓ Branch 316 taken 1 times.
✗ Branch 317 not taken.
✓ Branch 319 taken 1 times.
✗ Branch 320 not taken.
✓ Branch 322 taken 8 times.
✗ Branch 323 not taken.
✓ Branch 325 taken 8 times.
✗ Branch 326 not taken.
✓ Branch 328 taken 8 times.
✗ Branch 329 not taken.
✓ Branch 331 taken 1 times.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✓ Branch 337 taken 1 times.
✗ Branch 338 not taken.
✓ Branch 340 taken 1 times.
✗ Branch 341 not taken.
✓ Branch 343 taken 10 times.
✗ Branch 344 not taken.
✓ Branch 346 taken 10 times.
✗ Branch 347 not taken.
✓ Branch 349 taken 11 times.
✗ Branch 350 not taken.
✓ Branch 352 taken 11 times.
✗ Branch 353 not taken.
✓ Branch 355 taken 1 times.
✗ Branch 356 not taken.
✓ Branch 358 taken 1 times.
✗ Branch 359 not taken.
✓ Branch 361 taken 1 times.
✗ Branch 362 not taken.
✓ Branch 364 taken 1 times.
✗ Branch 365 not taken.
✓ Branch 367 taken 1 times.
✗ Branch 368 not taken.
✓ Branch 370 taken 1 times.
✗ Branch 371 not taken.
✓ Branch 373 taken 1 times.
✗ Branch 374 not taken.
✓ Branch 376 taken 1 times.
✗ Branch 377 not taken.
✓ Branch 379 taken 512 times.
✗ Branch 380 not taken.
✓ Branch 382 taken 512 times.
✗ Branch 383 not taken.
✓ Branch 385 taken 512 times.
✗ Branch 386 not taken.
✓ Branch 388 taken 1 times.
✗ Branch 389 not taken.
✓ Branch 391 taken 1 times.
✗ Branch 392 not taken.
✓ Branch 394 taken 1 times.
✗ Branch 395 not taken.
✓ Branch 397 taken 1 times.
✗ Branch 398 not taken.
✓ Branch 400 taken 1 times.
✗ Branch 401 not taken.
✓ Branch 403 taken 1 times.
✗ Branch 404 not taken.
✓ Branch 406 taken 1 times.
✗ Branch 407 not taken.
✓ Branch 409 taken 1 times.
✗ Branch 410 not taken.
✓ Branch 412 taken 1 times.
✗ Branch 413 not taken.
✓ Branch 415 taken 1 times.
✗ Branch 416 not taken.
✓ Branch 418 taken 1 times.
✗ Branch 419 not taken.
✓ Branch 421 taken 1 times.
✗ Branch 422 not taken.
✓ Branch 424 taken 1 times.
✗ Branch 425 not taken.
✓ Branch 427 taken 1 times.
✗ Branch 428 not taken.
✓ Branch 430 taken 1 times.
✗ Branch 431 not taken.
✓ Branch 433 taken 1 times.
✗ Branch 434 not taken.
✓ Branch 436 taken 1 times.
✗ Branch 437 not taken.
✓ Branch 439 taken 1 times.
✗ Branch 440 not taken.
✓ Branch 442 taken 1 times.
✗ Branch 443 not taken.
✓ Branch 445 taken 1 times.
✗ Branch 446 not taken.
✓ Branch 448 taken 1 times.
✗ Branch 449 not taken.
✓ Branch 451 taken 8 times.
✗ Branch 452 not taken.
✓ Branch 454 taken 8 times.
✗ Branch 455 not taken.
✓ Branch 457 taken 8 times.
✗ Branch 458 not taken.
✓ Branch 460 taken 1 times.
✗ Branch 461 not taken.
✓ Branch 463 taken 1 times.
✗ Branch 464 not taken.
✓ Branch 466 taken 1 times.
✗ Branch 467 not taken.
✓ Branch 469 taken 1 times.
✗ Branch 470 not taken.
✓ Branch 472 taken 10 times.
✗ Branch 473 not taken.
✓ Branch 475 taken 10 times.
✗ Branch 476 not taken.
✓ Branch 478 taken 11 times.
✗ Branch 479 not taken.
✓ Branch 481 taken 11 times.
✗ Branch 482 not taken.
✓ Branch 484 taken 1 times.
✗ Branch 485 not taken.
✓ Branch 487 taken 1 times.
✗ Branch 488 not taken.
✓ Branch 490 taken 1 times.
✗ Branch 491 not taken.
✓ Branch 493 taken 1 times.
✗ Branch 494 not taken.
✓ Branch 496 taken 1 times.
✗ Branch 497 not taken.
✓ Branch 499 taken 1 times.
✗ Branch 500 not taken.
✓ Branch 502 taken 1 times.
✗ Branch 503 not taken.
✓ Branch 505 taken 1 times.
✗ Branch 506 not taken.
✓ Branch 508 taken 512 times.
✗ Branch 509 not taken.
✓ Branch 511 taken 512 times.
✗ Branch 512 not taken.
✓ Branch 514 taken 512 times.
✗ Branch 515 not taken.
✓ Branch 517 taken 1 times.
✗ Branch 518 not taken.
✓ Branch 520 taken 1 times.
✗ Branch 521 not taken.
✓ Branch 523 taken 1 times.
✗ Branch 524 not taken.
✓ Branch 526 taken 1 times.
✗ Branch 527 not taken.
✓ Branch 529 taken 1 times.
✗ Branch 530 not taken.
✓ Branch 532 taken 1 times.
✗ Branch 533 not taken.
✓ Branch 535 taken 1 times.
✗ Branch 536 not taken.
✓ Branch 538 taken 1 times.
✗ Branch 539 not taken.
✓ Branch 541 taken 1 times.
✗ Branch 542 not taken.
✓ Branch 544 taken 1 times.
✗ Branch 545 not taken.
✓ Branch 547 taken 1 times.
✗ Branch 548 not taken.
✓ Branch 550 taken 1 times.
✗ Branch 551 not taken.
✓ Branch 553 taken 1 times.
✗ Branch 554 not taken.
✓ Branch 556 taken 1 times.
✗ Branch 557 not taken.
✓ Branch 559 taken 1 times.
✗ Branch 560 not taken.
✓ Branch 562 taken 1 times.
✗ Branch 563 not taken.
✓ Branch 565 taken 1 times.
✗ Branch 566 not taken.
✓ Branch 568 taken 1 times.
✗ Branch 569 not taken.
✓ Branch 571 taken 1 times.
✗ Branch 572 not taken.
✓ Branch 574 taken 1 times.
✗ Branch 575 not taken.
✓ Branch 577 taken 1 times.
✗ Branch 578 not taken.
✓ Branch 580 taken 8 times.
✗ Branch 581 not taken.
✓ Branch 583 taken 8 times.
✗ Branch 584 not taken.
✓ Branch 586 taken 8 times.
✗ Branch 587 not taken.
✓ Branch 589 taken 1 times.
✗ Branch 590 not taken.
✓ Branch 592 taken 1 times.
✗ Branch 593 not taken.
✓ Branch 595 taken 1 times.
✗ Branch 596 not taken.
✓ Branch 598 taken 1 times.
✗ Branch 599 not taken.
✓ Branch 601 taken 10 times.
✗ Branch 602 not taken.
✓ Branch 604 taken 10 times.
✗ Branch 605 not taken.
✓ Branch 607 taken 11 times.
✗ Branch 608 not taken.
✓ Branch 610 taken 11 times.
✗ Branch 611 not taken.
✓ Branch 613 taken 1 times.
✗ Branch 614 not taken.
✓ Branch 616 taken 1 times.
✗ Branch 617 not taken.
✓ Branch 619 taken 1 times.
✗ Branch 620 not taken.
✓ Branch 622 taken 1 times.
✗ Branch 623 not taken.
✓ Branch 625 taken 1 times.
✗ Branch 626 not taken.
✓ Branch 628 taken 1 times.
✗ Branch 629 not taken.
✓ Branch 631 taken 1 times.
✗ Branch 632 not taken.
✓ Branch 634 taken 1 times.
✗ Branch 635 not taken.
✓ Branch 637 taken 512 times.
✗ Branch 638 not taken.
✓ Branch 640 taken 512 times.
✗ Branch 641 not taken.
✓ Branch 643 taken 512 times.
✗ Branch 644 not taken.
✓ Branch 646 taken 1 times.
✗ Branch 647 not taken.
✓ Branch 649 taken 1 times.
✗ Branch 650 not taken.
✓ Branch 652 taken 1 times.
✗ Branch 653 not taken.
✓ Branch 655 taken 1 times.
✗ Branch 656 not taken.
✓ Branch 658 taken 1 times.
✗ Branch 659 not taken.
✓ Branch 661 taken 1 times.
✗ Branch 662 not taken.
✓ Branch 664 taken 1 times.
✗ Branch 665 not taken.
✓ Branch 667 taken 1 times.
✗ Branch 668 not taken.
✓ Branch 670 taken 1 times.
✗ Branch 671 not taken.
✓ Branch 673 taken 1 times.
✗ Branch 674 not taken.
✓ Branch 676 taken 1 times.
✗ Branch 677 not taken.
✓ Branch 679 taken 1 times.
✗ Branch 680 not taken.
✓ Branch 682 taken 1 times.
✗ Branch 683 not taken.
✓ Branch 685 taken 1 times.
✗ Branch 686 not taken.
✓ Branch 688 taken 1 times.
✗ Branch 689 not taken.
✓ Branch 691 taken 1 times.
✗ Branch 692 not taken.
✓ Branch 694 taken 1 times.
✗ Branch 695 not taken.
✓ Branch 697 taken 1 times.
✗ Branch 698 not taken.
✓ Branch 700 taken 1 times.
✗ Branch 701 not taken.
✓ Branch 703 taken 1 times.
✗ Branch 704 not taken.
✓ Branch 706 taken 1 times.
✗ Branch 707 not taken.
✓ Branch 709 taken 8 times.
✗ Branch 710 not taken.
✓ Branch 712 taken 8 times.
✗ Branch 713 not taken.
✓ Branch 715 taken 8 times.
✗ Branch 716 not taken.
✓ Branch 718 taken 1 times.
✗ Branch 719 not taken.
✓ Branch 721 taken 1 times.
✗ Branch 722 not taken.
✓ Branch 724 taken 1 times.
✗ Branch 725 not taken.
✓ Branch 727 taken 1 times.
✗ Branch 728 not taken.
✓ Branch 730 taken 10 times.
✗ Branch 731 not taken.
✓ Branch 733 taken 10 times.
✗ Branch 734 not taken.
✓ Branch 736 taken 11 times.
✗ Branch 737 not taken.
✓ Branch 739 taken 11 times.
✗ Branch 740 not taken.
✓ Branch 742 taken 1 times.
✗ Branch 743 not taken.
✓ Branch 745 taken 1 times.
✗ Branch 746 not taken.
✓ Branch 748 taken 1 times.
✗ Branch 749 not taken.
✓ Branch 751 taken 1 times.
✗ Branch 752 not taken.
✓ Branch 754 taken 1 times.
✗ Branch 755 not taken.
✓ Branch 757 taken 1 times.
✗ Branch 758 not taken.
✓ Branch 760 taken 1 times.
✗ Branch 761 not taken.
✓ Branch 763 taken 1 times.
✗ Branch 764 not taken.
✓ Branch 766 taken 512 times.
✗ Branch 767 not taken.
✓ Branch 769 taken 512 times.
✗ Branch 770 not taken.
✓ Branch 772 taken 512 times.
✗ Branch 773 not taken.
12064 Index64 activeVoxelCount() const override { return tools::countActiveVoxels(*this); }
358 /// Return the number of inactive voxels within the bounding box of all active voxels.
359
8/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
4 Index64 inactiveVoxelCount() const override { return tools::countInactiveVoxels(*this); }
360 /// Return the total number of active tiles.
361
118/232
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 3 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 2 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 2 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 2 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 1 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 1 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 1 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 1 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 1 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 1 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 1 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 1 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 1 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 1 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 1 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 1 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 1 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 1 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 1 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 1 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 1 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 1 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 1 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 1 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 1 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 1 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 1 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 1 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 1 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 1 times.
✗ Branch 161 not taken.
✓ Branch 163 taken 1 times.
✗ Branch 164 not taken.
✓ Branch 166 taken 1 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 1 times.
✗ Branch 170 not taken.
✓ Branch 172 taken 1 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 1 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 1 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 1 times.
✗ Branch 182 not taken.
✓ Branch 184 taken 1 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 1 times.
✗ Branch 188 not taken.
✓ Branch 190 taken 1 times.
✗ Branch 191 not taken.
✓ Branch 193 taken 1 times.
✗ Branch 194 not taken.
✓ Branch 196 taken 1 times.
✗ Branch 197 not taken.
✓ Branch 199 taken 1 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 1 times.
✗ Branch 203 not taken.
✓ Branch 205 taken 1 times.
✗ Branch 206 not taken.
✓ Branch 208 taken 1 times.
✗ Branch 209 not taken.
✓ Branch 211 taken 1 times.
✗ Branch 212 not taken.
✓ Branch 214 taken 1 times.
✗ Branch 215 not taken.
✓ Branch 217 taken 1 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 1 times.
✗ Branch 221 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✓ Branch 226 taken 1 times.
✗ Branch 227 not taken.
✓ Branch 229 taken 1 times.
✗ Branch 230 not taken.
✓ Branch 232 taken 1 times.
✗ Branch 233 not taken.
✓ Branch 235 taken 1 times.
✗ Branch 236 not taken.
✓ Branch 238 taken 1 times.
✗ Branch 239 not taken.
✓ Branch 241 taken 1 times.
✗ Branch 242 not taken.
✓ Branch 244 taken 1 times.
✗ Branch 245 not taken.
✓ Branch 247 taken 1 times.
✗ Branch 248 not taken.
✓ Branch 250 taken 1 times.
✗ Branch 251 not taken.
✓ Branch 253 taken 1 times.
✗ Branch 254 not taken.
✓ Branch 256 taken 1 times.
✗ Branch 257 not taken.
✓ Branch 259 taken 1 times.
✗ Branch 260 not taken.
✓ Branch 262 taken 1 times.
✗ Branch 263 not taken.
✓ Branch 265 taken 1 times.
✗ Branch 266 not taken.
✓ Branch 268 taken 1 times.
✗ Branch 269 not taken.
✓ Branch 271 taken 1 times.
✗ Branch 272 not taken.
✓ Branch 274 taken 1 times.
✗ Branch 275 not taken.
✓ Branch 277 taken 1 times.
✗ Branch 278 not taken.
✓ Branch 280 taken 1 times.
✗ Branch 281 not taken.
✓ Branch 283 taken 1 times.
✗ Branch 284 not taken.
✓ Branch 286 taken 1 times.
✗ Branch 287 not taken.
✓ Branch 289 taken 1 times.
✗ Branch 290 not taken.
✓ Branch 292 taken 1 times.
✗ Branch 293 not taken.
✓ Branch 295 taken 1 times.
✗ Branch 296 not taken.
✓ Branch 298 taken 1 times.
✗ Branch 299 not taken.
✓ Branch 301 taken 1 times.
✗ Branch 302 not taken.
✓ Branch 304 taken 1 times.
✗ Branch 305 not taken.
✓ Branch 307 taken 1 times.
✗ Branch 308 not taken.
✓ Branch 310 taken 1 times.
✗ Branch 311 not taken.
✓ Branch 313 taken 1 times.
✗ Branch 314 not taken.
✓ Branch 316 taken 1 times.
✗ Branch 317 not taken.
✓ Branch 319 taken 1 times.
✗ Branch 320 not taken.
✓ Branch 322 taken 1 times.
✗ Branch 323 not taken.
✓ Branch 325 taken 1 times.
✗ Branch 326 not taken.
✓ Branch 328 taken 1 times.
✗ Branch 329 not taken.
✓ Branch 331 taken 1 times.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✓ Branch 337 taken 1 times.
✗ Branch 338 not taken.
✓ Branch 340 taken 1 times.
✗ Branch 341 not taken.
301 Index64 activeTileCount() const override { return tools::countActiveTiles(*this); }
362
363 /// Return the minimum and maximum active values in this tree.
364 OPENVDB_DEPRECATED_MESSAGE("Switch to tools::minMax. Use threaded = false for serial execution")
365 void evalMinMax(ValueType &min, ValueType &max) const;
366
367 350 Index64 memUsage() const override { return tools::memUsage(*this); }
368
369
370 //
371 // Voxel access methods (using signed indexing)
372 //
373 /// Return the value of the voxel at the given coordinates.
374 const ValueType& getValue(const Coord& xyz) const;
375 /// @brief Return the value of the voxel at the given coordinates
376 /// and update the given accessor's node cache.
377 template<typename AccessT> const ValueType& getValue(const Coord& xyz, AccessT&) const;
378
379 /// @brief Return the tree depth (0 = root) at which the value of voxel (x, y, z) resides.
380 /// @details If (x, y, z) isn't explicitly represented in the tree (i.e., it is
381 /// implicitly a background voxel), return -1.
382 int getValueDepth(const Coord& xyz) const;
383
384 /// Set the active state of the voxel at the given coordinates but don't change its value.
385 void setActiveState(const Coord& xyz, bool on);
386 /// Set the value of the voxel at the given coordinates but don't change its active state.
387 void setValueOnly(const Coord& xyz, const ValueType& value);
388 /// Mark the voxel at the given coordinates as active but don't change its value.
389 void setValueOn(const Coord& xyz);
390 /// Set the value of the voxel at the given coordinates and mark the voxel as active.
391 void setValueOn(const Coord& xyz, const ValueType& value);
392 /// Set the value of the voxel at the given coordinates and mark the voxel as active.
393 void setValue(const Coord& xyz, const ValueType& value);
394 /// @brief Set the value of the voxel at the given coordinates, mark the voxel as active,
395 /// and update the given accessor's node cache.
396 template<typename AccessT> void setValue(const Coord& xyz, const ValueType& value, AccessT&);
397 /// Mark the voxel at the given coordinates as inactive but don't change its value.
398 void setValueOff(const Coord& xyz);
399 /// Set the value of the voxel at the given coordinates and mark the voxel as inactive.
400 void setValueOff(const Coord& xyz, const ValueType& value);
401
402 /// @brief Apply a functor to the value of the voxel at the given coordinates
403 /// and mark the voxel as active.
404 /// @details Provided that the functor can be inlined, this is typically
405 /// significantly faster than calling getValue() followed by setValueOn().
406 /// @param xyz the coordinates of a voxel whose value is to be modified
407 /// @param op a functor of the form <tt>void op(ValueType&) const</tt> that modifies
408 /// its argument in place
409 /// @par Example:
410 /// @code
411 /// Coord xyz(1, 0, -2);
412 /// // Multiply the value of a voxel by a constant and mark the voxel as active.
413 /// floatTree.modifyValue(xyz, [](float& f) { f *= 0.25; }); // C++11
414 /// // Set the value of a voxel to the maximum of its current value and 0.25,
415 /// // and mark the voxel as active.
416 /// floatTree.modifyValue(xyz, [](float& f) { f = std::max(f, 0.25f); }); // C++11
417 /// @endcode
418 /// @note The functor is not guaranteed to be called only once.
419 /// @see tools::foreach()
420 template<typename ModifyOp>
421 void modifyValue(const Coord& xyz, const ModifyOp& op);
422
423 /// @brief Apply a functor to the voxel at the given coordinates.
424 /// @details Provided that the functor can be inlined, this is typically
425 /// significantly faster than calling getValue() followed by setValue().
426 /// @param xyz the coordinates of a voxel to be modified
427 /// @param op a functor of the form <tt>void op(ValueType&, bool&) const</tt> that
428 /// modifies its arguments, a voxel's value and active state, in place
429 /// @par Example:
430 /// @code
431 /// Coord xyz(1, 0, -2);
432 /// // Multiply the value of a voxel by a constant and mark the voxel as inactive.
433 /// floatTree.modifyValueAndActiveState(xyz,
434 /// [](float& f, bool& b) { f *= 0.25; b = false; }); // C++11
435 /// // Set the value of a voxel to the maximum of its current value and 0.25,
436 /// // but don't change the voxel's active state.
437 /// floatTree.modifyValueAndActiveState(xyz,
438 /// [](float& f, bool&) { f = std::max(f, 0.25f); }); // C++11
439 /// @endcode
440 /// @note The functor is not guaranteed to be called only once.
441 /// @see tools::foreach()
442 template<typename ModifyOp>
443 void modifyValueAndActiveState(const Coord& xyz, const ModifyOp& op);
444
445 /// @brief Get the value of the voxel at the given coordinates.
446 /// @return @c true if the value is active.
447 bool probeValue(const Coord& xyz, ValueType& value) const;
448
449 /// Return @c true if the value at the given coordinates is active.
450 32744488 bool isValueOn(const Coord& xyz) const { return mRoot.isValueOn(xyz); }
451 /// Return @c true if the value at the given coordinates is inactive.
452
40/80
✗ Branch 0 not taken.
✓ Branch 1 taken 56470 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 83450 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 3444 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 13845 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 51891 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 3404 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✗ Branch 32 not taken.
✓ Branch 33 taken 8 times.
✗ Branch 34 not taken.
✓ Branch 35 taken 8 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 8 times.
✗ Branch 38 not taken.
✓ Branch 39 taken 8 times.
✗ Branch 40 not taken.
✓ Branch 41 taken 8 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 8 times.
✗ Branch 44 not taken.
✓ Branch 45 taken 7 times.
✗ Branch 46 not taken.
✓ Branch 47 taken 7 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 7 times.
✗ Branch 50 not taken.
✓ Branch 51 taken 7 times.
✗ Branch 52 not taken.
✓ Branch 53 taken 7 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 7 times.
✗ Branch 56 not taken.
✓ Branch 57 taken 7 times.
✗ Branch 58 not taken.
✓ Branch 59 taken 7 times.
✗ Branch 60 not taken.
✓ Branch 61 taken 7 times.
✗ Branch 62 not taken.
✓ Branch 63 taken 7 times.
✗ Branch 64 not taken.
✓ Branch 65 taken 1 times.
✗ Branch 66 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✓ Branch 69 taken 1 times.
✗ Branch 70 not taken.
✓ Branch 71 taken 1 times.
✗ Branch 72 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 75 taken 1 times.
✗ Branch 76 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 79 taken 1 times.
212650 bool isValueOff(const Coord& xyz) const { return !this->isValueOn(xyz); }
453 /// Return @c true if this tree has any active tiles.
454
17/86
✓ Branch 1 taken 16 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✓ Branch 19 taken 4 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✓ Branch 25 taken 3 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 22 times.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✓ Branch 85 taken 4 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 1 times.
✗ Branch 89 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✓ Branch 103 taken 3 times.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
9085 bool hasActiveTiles() const { return mRoot.hasActiveTiles(); }
455
456 /// Set all voxels that lie outside the given axis-aligned box to the background.
457 void clip(const CoordBBox&);
458 /// @brief Replace with background tiles any nodes whose voxel buffers
459 /// have not yet been allocated.
460 /// @details Typically, unallocated nodes are leaf nodes whose voxel buffers
461 /// are not yet resident in memory because delayed loading is in effect.
462 /// @sa readNonresidentBuffers, io::File::open
463 void clipUnallocatedNodes() override;
464
465 /// Return the total number of unallocated leaf nodes residing in this tree.
466 Index32 unallocatedLeafCount() const override;
467
468 //@{
469 /// @brief Set all voxels within a given axis-aligned box to a constant value.
470 /// @param bbox inclusive coordinates of opposite corners of an axis-aligned box
471 /// @param value the value to which to set voxels within the box
472 /// @param active if true, mark voxels within the box as active,
473 /// otherwise mark them as inactive
474 /// @note This operation generates a sparse, but not always optimally sparse,
475 /// representation of the filled box. Follow fill operations with a prune()
476 /// operation for optimal sparseness.
477 void sparseFill(const CoordBBox& bbox, const ValueType& value, bool active = true);
478 void fill(const CoordBBox& bbox, const ValueType& value, bool active = true)
479 {
480 this->sparseFill(bbox, value, active);
481 183 }
482 //@}
483
484 /// @brief Set all voxels within a given axis-aligned box to a constant value
485 /// and ensure that those voxels are all represented at the leaf level.
486 /// @param bbox inclusive coordinates of opposite corners of an axis-aligned box.
487 /// @param value the value to which to set voxels within the box.
488 /// @param active if true, mark voxels within the box as active,
489 /// otherwise mark them as inactive.
490 /// @sa voxelizeActiveTiles()
491 void denseFill(const CoordBBox& bbox, const ValueType& value, bool active = true);
492
493 /// @brief Densify active tiles, i.e., replace them with leaf-level active voxels.
494 ///
495 /// @param threaded if true, this operation is multi-threaded (over the internal nodes).
496 ///
497 /// @warning This method can explode the tree's memory footprint, especially if it
498 /// contains active tiles at the upper levels (in particular the root level)!
499 ///
500 /// @sa denseFill()
501 void voxelizeActiveTiles(bool threaded = true);
502
503 /// @brief Reduce the memory footprint of this tree by replacing with tiles
504 /// any nodes whose values are all the same (optionally to within a tolerance)
505 /// and have the same active state.
506 /// @warning Will soon be deprecated!
507 23 void prune(const ValueType& tolerance = zeroVal<ValueType>())
508 {
509
13/962
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 96 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 99 not taken.
✗ Branch 101 not taken.
✗ Branch 102 not taken.
✗ Branch 104 not taken.
✗ Branch 105 not taken.
✗ Branch 107 not taken.
✗ Branch 108 not taken.
✗ Branch 110 not taken.
✗ Branch 111 not taken.
✗ Branch 113 not taken.
✗ Branch 114 not taken.
✗ Branch 116 not taken.
✗ Branch 117 not taken.
✗ Branch 119 not taken.
✗ Branch 120 not taken.
✗ Branch 122 not taken.
✗ Branch 123 not taken.
✗ Branch 125 not taken.
✗ Branch 126 not taken.
✗ Branch 128 not taken.
✗ Branch 129 not taken.
✗ Branch 131 not taken.
✗ Branch 132 not taken.
✗ Branch 134 not taken.
✗ Branch 135 not taken.
✗ Branch 137 not taken.
✗ Branch 138 not taken.
✗ Branch 140 not taken.
✗ Branch 141 not taken.
✗ Branch 143 not taken.
✗ Branch 144 not taken.
✗ Branch 146 not taken.
✗ Branch 147 not taken.
✗ Branch 149 not taken.
✗ Branch 150 not taken.
✗ Branch 152 not taken.
✗ Branch 153 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 158 not taken.
✗ Branch 159 not taken.
✗ Branch 161 not taken.
✗ Branch 162 not taken.
✗ Branch 164 not taken.
✗ Branch 165 not taken.
✗ Branch 167 not taken.
✗ Branch 168 not taken.
✗ Branch 170 not taken.
✗ Branch 171 not taken.
✗ Branch 173 not taken.
✗ Branch 174 not taken.
✗ Branch 176 not taken.
✗ Branch 177 not taken.
✗ Branch 179 not taken.
✗ Branch 180 not taken.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✗ Branch 191 not taken.
✗ Branch 192 not taken.
✗ Branch 194 not taken.
✗ Branch 195 not taken.
✗ Branch 197 not taken.
✗ Branch 198 not taken.
✗ Branch 200 not taken.
✗ Branch 201 not taken.
✗ Branch 203 not taken.
✗ Branch 204 not taken.
✗ Branch 206 not taken.
✗ Branch 207 not taken.
✗ Branch 209 not taken.
✗ Branch 210 not taken.
✗ Branch 212 not taken.
✗ Branch 213 not taken.
✗ Branch 215 not taken.
✗ Branch 216 not taken.
✗ Branch 218 not taken.
✗ Branch 219 not taken.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✗ Branch 224 not taken.
✗ Branch 225 not taken.
✗ Branch 227 not taken.
✗ Branch 228 not taken.
✗ Branch 230 not taken.
✗ Branch 231 not taken.
✗ Branch 233 not taken.
✗ Branch 234 not taken.
✗ Branch 236 not taken.
✗ Branch 237 not taken.
✗ Branch 239 not taken.
✗ Branch 240 not taken.
✗ Branch 242 not taken.
✗ Branch 243 not taken.
✗ Branch 245 not taken.
✗ Branch 246 not taken.
✗ Branch 248 not taken.
✗ Branch 249 not taken.
✗ Branch 251 not taken.
✗ Branch 252 not taken.
✗ Branch 254 not taken.
✗ Branch 255 not taken.
✗ Branch 257 not taken.
✗ Branch 258 not taken.
✗ Branch 260 not taken.
✗ Branch 261 not taken.
✗ Branch 263 not taken.
✗ Branch 264 not taken.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✗ Branch 272 not taken.
✗ Branch 273 not taken.
✗ Branch 275 not taken.
✗ Branch 276 not taken.
✗ Branch 278 not taken.
✗ Branch 279 not taken.
✗ Branch 281 not taken.
✗ Branch 282 not taken.
✗ Branch 284 not taken.
✗ Branch 285 not taken.
✗ Branch 287 not taken.
✗ Branch 288 not taken.
✗ Branch 290 not taken.
✗ Branch 291 not taken.
✗ Branch 293 not taken.
✗ Branch 294 not taken.
✗ Branch 296 not taken.
✗ Branch 297 not taken.
✗ Branch 299 not taken.
✗ Branch 300 not taken.
✗ Branch 302 not taken.
✗ Branch 303 not taken.
✗ Branch 305 not taken.
✗ Branch 306 not taken.
✗ Branch 308 not taken.
✗ Branch 309 not taken.
✗ Branch 311 not taken.
✗ Branch 312 not taken.
✗ Branch 314 not taken.
✗ Branch 315 not taken.
✗ Branch 317 not taken.
✗ Branch 318 not taken.
✗ Branch 320 not taken.
✗ Branch 321 not taken.
✗ Branch 323 not taken.
✗ Branch 324 not taken.
✗ Branch 326 not taken.
✗ Branch 327 not taken.
✗ Branch 329 not taken.
✗ Branch 330 not taken.
✗ Branch 332 not taken.
✗ Branch 333 not taken.
✗ Branch 335 not taken.
✗ Branch 336 not taken.
✗ Branch 338 not taken.
✗ Branch 339 not taken.
✓ Branch 341 taken 1 times.
✗ Branch 342 not taken.
✗ Branch 344 not taken.
✗ Branch 345 not taken.
✗ Branch 347 not taken.
✗ Branch 348 not taken.
✗ Branch 350 not taken.
✗ Branch 351 not taken.
✗ Branch 353 not taken.
✗ Branch 354 not taken.
✗ Branch 356 not taken.
✗ Branch 357 not taken.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✗ Branch 365 not taken.
✗ Branch 366 not taken.
✗ Branch 368 not taken.
✗ Branch 369 not taken.
✗ Branch 371 not taken.
✗ Branch 372 not taken.
✗ Branch 374 not taken.
✗ Branch 375 not taken.
✗ Branch 377 not taken.
✗ Branch 378 not taken.
✗ Branch 380 not taken.
✗ Branch 381 not taken.
✗ Branch 383 not taken.
✗ Branch 384 not taken.
✗ Branch 386 not taken.
✗ Branch 387 not taken.
✗ Branch 389 not taken.
✗ Branch 390 not taken.
✗ Branch 392 not taken.
✗ Branch 393 not taken.
✗ Branch 395 not taken.
✗ Branch 396 not taken.
✗ Branch 398 not taken.
✗ Branch 399 not taken.
✗ Branch 401 not taken.
✗ Branch 402 not taken.
✗ Branch 404 not taken.
✗ Branch 405 not taken.
✗ Branch 407 not taken.
✗ Branch 408 not taken.
✗ Branch 410 not taken.
✗ Branch 411 not taken.
✗ Branch 413 not taken.
✗ Branch 414 not taken.
✗ Branch 416 not taken.
✗ Branch 417 not taken.
✗ Branch 419 not taken.
✗ Branch 420 not taken.
✗ Branch 422 not taken.
✗ Branch 423 not taken.
✗ Branch 425 not taken.
✗ Branch 426 not taken.
✗ Branch 428 not taken.
✗ Branch 429 not taken.
✗ Branch 431 not taken.
✗ Branch 432 not taken.
✗ Branch 434 not taken.
✗ Branch 435 not taken.
✓ Branch 437 taken 1 times.
✗ Branch 438 not taken.
✗ Branch 440 not taken.
✗ Branch 441 not taken.
✗ Branch 443 not taken.
✗ Branch 444 not taken.
✗ Branch 446 not taken.
✗ Branch 447 not taken.
✗ Branch 449 not taken.
✗ Branch 450 not taken.
✗ Branch 452 not taken.
✗ Branch 453 not taken.
✗ Branch 455 not taken.
✗ Branch 456 not taken.
✗ Branch 458 not taken.
✗ Branch 459 not taken.
✗ Branch 461 not taken.
✗ Branch 462 not taken.
✗ Branch 464 not taken.
✗ Branch 465 not taken.
✗ Branch 467 not taken.
✗ Branch 468 not taken.
✗ Branch 470 not taken.
✗ Branch 471 not taken.
✗ Branch 473 not taken.
✗ Branch 474 not taken.
✗ Branch 476 not taken.
✗ Branch 477 not taken.
✗ Branch 479 not taken.
✗ Branch 480 not taken.
✗ Branch 482 not taken.
✗ Branch 483 not taken.
✗ Branch 485 not taken.
✗ Branch 486 not taken.
✗ Branch 488 not taken.
✗ Branch 489 not taken.
✗ Branch 491 not taken.
✗ Branch 492 not taken.
✗ Branch 494 not taken.
✗ Branch 495 not taken.
✗ Branch 497 not taken.
✗ Branch 498 not taken.
✗ Branch 500 not taken.
✗ Branch 501 not taken.
✗ Branch 503 not taken.
✗ Branch 504 not taken.
✗ Branch 506 not taken.
✗ Branch 507 not taken.
✓ Branch 509 taken 1 times.
✗ Branch 510 not taken.
✗ Branch 512 not taken.
✗ Branch 513 not taken.
✗ Branch 515 not taken.
✗ Branch 516 not taken.
✗ Branch 518 not taken.
✗ Branch 519 not taken.
✗ Branch 521 not taken.
✗ Branch 522 not taken.
✗ Branch 524 not taken.
✗ Branch 525 not taken.
✗ Branch 527 not taken.
✗ Branch 528 not taken.
✗ Branch 530 not taken.
✗ Branch 531 not taken.
✓ Branch 533 taken 2 times.
✗ Branch 534 not taken.
✗ Branch 536 not taken.
✗ Branch 537 not taken.
✗ Branch 539 not taken.
✗ Branch 540 not taken.
✗ Branch 542 not taken.
✗ Branch 543 not taken.
✗ Branch 545 not taken.
✗ Branch 546 not taken.
✗ Branch 548 not taken.
✗ Branch 549 not taken.
✗ Branch 551 not taken.
✗ Branch 552 not taken.
✗ Branch 554 not taken.
✗ Branch 555 not taken.
✗ Branch 557 not taken.
✗ Branch 558 not taken.
✗ Branch 560 not taken.
✗ Branch 561 not taken.
✗ Branch 563 not taken.
✗ Branch 564 not taken.
✗ Branch 566 not taken.
✗ Branch 567 not taken.
✗ Branch 569 not taken.
✗ Branch 570 not taken.
✗ Branch 572 not taken.
✗ Branch 573 not taken.
✗ Branch 575 not taken.
✗ Branch 576 not taken.
✗ Branch 578 not taken.
✗ Branch 579 not taken.
✗ Branch 581 not taken.
✗ Branch 582 not taken.
✗ Branch 584 not taken.
✗ Branch 585 not taken.
✗ Branch 587 not taken.
✗ Branch 588 not taken.
✗ Branch 590 not taken.
✗ Branch 591 not taken.
✗ Branch 593 not taken.
✗ Branch 594 not taken.
✗ Branch 596 not taken.
✗ Branch 597 not taken.
✗ Branch 599 not taken.
✗ Branch 600 not taken.
✗ Branch 602 not taken.
✗ Branch 603 not taken.
✗ Branch 605 not taken.
✗ Branch 606 not taken.
✗ Branch 608 not taken.
✗ Branch 609 not taken.
✗ Branch 611 not taken.
✗ Branch 612 not taken.
✗ Branch 614 not taken.
✗ Branch 615 not taken.
✗ Branch 617 not taken.
✗ Branch 618 not taken.
✗ Branch 620 not taken.
✗ Branch 621 not taken.
✗ Branch 623 not taken.
✗ Branch 624 not taken.
✗ Branch 626 not taken.
✗ Branch 627 not taken.
✓ Branch 629 taken 1 times.
✗ Branch 630 not taken.
✗ Branch 632 not taken.
✗ Branch 633 not taken.
✗ Branch 635 not taken.
✗ Branch 636 not taken.
✗ Branch 638 not taken.
✗ Branch 639 not taken.
✗ Branch 641 not taken.
✗ Branch 642 not taken.
✗ Branch 644 not taken.
✗ Branch 645 not taken.
✗ Branch 647 not taken.
✗ Branch 648 not taken.
✗ Branch 650 not taken.
✗ Branch 651 not taken.
✗ Branch 653 not taken.
✗ Branch 654 not taken.
✗ Branch 656 not taken.
✗ Branch 657 not taken.
✗ Branch 659 not taken.
✗ Branch 660 not taken.
✗ Branch 662 not taken.
✗ Branch 663 not taken.
✗ Branch 665 not taken.
✗ Branch 666 not taken.
✗ Branch 668 not taken.
✗ Branch 669 not taken.
✗ Branch 671 not taken.
✗ Branch 672 not taken.
✗ Branch 674 not taken.
✗ Branch 675 not taken.
✗ Branch 677 not taken.
✗ Branch 678 not taken.
✗ Branch 680 not taken.
✗ Branch 681 not taken.
✗ Branch 683 not taken.
✗ Branch 684 not taken.
✗ Branch 686 not taken.
✗ Branch 687 not taken.
✗ Branch 689 not taken.
✗ Branch 690 not taken.
✗ Branch 692 not taken.
✗ Branch 693 not taken.
✗ Branch 695 not taken.
✗ Branch 696 not taken.
✗ Branch 698 not taken.
✗ Branch 699 not taken.
✗ Branch 701 not taken.
✗ Branch 702 not taken.
✗ Branch 704 not taken.
✗ Branch 705 not taken.
✗ Branch 707 not taken.
✗ Branch 708 not taken.
✗ Branch 710 not taken.
✗ Branch 711 not taken.
✗ Branch 713 not taken.
✗ Branch 714 not taken.
✗ Branch 716 not taken.
✗ Branch 717 not taken.
✗ Branch 719 not taken.
✗ Branch 720 not taken.
✗ Branch 722 not taken.
✗ Branch 723 not taken.
✓ Branch 725 taken 1 times.
✗ Branch 726 not taken.
✗ Branch 728 not taken.
✗ Branch 729 not taken.
✗ Branch 731 not taken.
✗ Branch 732 not taken.
✗ Branch 734 not taken.
✗ Branch 735 not taken.
✗ Branch 737 not taken.
✗ Branch 738 not taken.
✗ Branch 740 not taken.
✗ Branch 741 not taken.
✗ Branch 743 not taken.
✗ Branch 744 not taken.
✗ Branch 746 not taken.
✗ Branch 747 not taken.
✓ Branch 749 taken 4 times.
✗ Branch 750 not taken.
✗ Branch 752 not taken.
✗ Branch 753 not taken.
✗ Branch 755 not taken.
✗ Branch 756 not taken.
✗ Branch 758 not taken.
✗ Branch 759 not taken.
✗ Branch 761 not taken.
✗ Branch 762 not taken.
✗ Branch 764 not taken.
✗ Branch 765 not taken.
✗ Branch 767 not taken.
✗ Branch 768 not taken.
✗ Branch 770 not taken.
✗ Branch 771 not taken.
✓ Branch 773 taken 12 times.
✗ Branch 774 not taken.
✗ Branch 776 not taken.
✗ Branch 777 not taken.
✗ Branch 779 not taken.
✗ Branch 780 not taken.
✗ Branch 782 not taken.
✗ Branch 783 not taken.
✗ Branch 785 not taken.
✗ Branch 786 not taken.
✗ Branch 788 not taken.
✗ Branch 789 not taken.
✗ Branch 791 not taken.
✗ Branch 792 not taken.
✗ Branch 794 not taken.
✗ Branch 795 not taken.
✗ Branch 797 not taken.
✗ Branch 798 not taken.
✗ Branch 800 not taken.
✗ Branch 801 not taken.
✗ Branch 803 not taken.
✗ Branch 804 not taken.
✗ Branch 806 not taken.
✗ Branch 807 not taken.
✗ Branch 809 not taken.
✗ Branch 810 not taken.
✗ Branch 812 not taken.
✗ Branch 813 not taken.
✗ Branch 815 not taken.
✗ Branch 816 not taken.
✗ Branch 818 not taken.
✗ Branch 819 not taken.
✗ Branch 821 not taken.
✗ Branch 822 not taken.
✗ Branch 824 not taken.
✗ Branch 825 not taken.
✗ Branch 827 not taken.
✗ Branch 828 not taken.
✗ Branch 830 not taken.
✗ Branch 831 not taken.
✗ Branch 833 not taken.
✗ Branch 834 not taken.
✗ Branch 836 not taken.
✗ Branch 837 not taken.
✗ Branch 839 not taken.
✗ Branch 840 not taken.
✗ Branch 842 not taken.
✗ Branch 843 not taken.
✗ Branch 845 not taken.
✗ Branch 846 not taken.
✗ Branch 848 not taken.
✗ Branch 849 not taken.
✗ Branch 851 not taken.
✗ Branch 852 not taken.
✗ Branch 854 not taken.
✗ Branch 855 not taken.
✗ Branch 857 not taken.
✗ Branch 858 not taken.
✗ Branch 860 not taken.
✗ Branch 861 not taken.
✗ Branch 863 not taken.
✗ Branch 864 not taken.
✗ Branch 866 not taken.
✗ Branch 867 not taken.
✗ Branch 869 not taken.
✗ Branch 870 not taken.
✗ Branch 872 not taken.
✗ Branch 873 not taken.
✗ Branch 875 not taken.
✗ Branch 876 not taken.
✗ Branch 878 not taken.
✗ Branch 879 not taken.
✗ Branch 881 not taken.
✗ Branch 882 not taken.
✗ Branch 884 not taken.
✗ Branch 885 not taken.
✗ Branch 887 not taken.
✗ Branch 888 not taken.
✗ Branch 890 not taken.
✗ Branch 891 not taken.
✓ Branch 893 taken 2 times.
✗ Branch 894 not taken.
✗ Branch 896 not taken.
✗ Branch 897 not taken.
✗ Branch 899 not taken.
✗ Branch 900 not taken.
✗ Branch 902 not taken.
✗ Branch 903 not taken.
✗ Branch 905 not taken.
✗ Branch 906 not taken.
✗ Branch 908 not taken.
✗ Branch 909 not taken.
✗ Branch 911 not taken.
✗ Branch 912 not taken.
✗ Branch 914 not taken.
✗ Branch 915 not taken.
✗ Branch 917 not taken.
✗ Branch 918 not taken.
✗ Branch 920 not taken.
✗ Branch 921 not taken.
✗ Branch 923 not taken.
✗ Branch 924 not taken.
✗ Branch 926 not taken.
✗ Branch 927 not taken.
✗ Branch 929 not taken.
✗ Branch 930 not taken.
✗ Branch 932 not taken.
✗ Branch 933 not taken.
✗ Branch 935 not taken.
✗ Branch 936 not taken.
✗ Branch 938 not taken.
✗ Branch 939 not taken.
✗ Branch 941 not taken.
✗ Branch 942 not taken.
✗ Branch 944 not taken.
✗ Branch 945 not taken.
✗ Branch 947 not taken.
✗ Branch 948 not taken.
✗ Branch 950 not taken.
✗ Branch 951 not taken.
✗ Branch 953 not taken.
✗ Branch 954 not taken.
✗ Branch 956 not taken.
✗ Branch 957 not taken.
✗ Branch 959 not taken.
✗ Branch 960 not taken.
✗ Branch 962 not taken.
✗ Branch 963 not taken.
✗ Branch 965 not taken.
✗ Branch 966 not taken.
✗ Branch 968 not taken.
✗ Branch 969 not taken.
✗ Branch 971 not taken.
✗ Branch 972 not taken.
✗ Branch 974 not taken.
✗ Branch 975 not taken.
✗ Branch 977 not taken.
✗ Branch 978 not taken.
✗ Branch 980 not taken.
✗ Branch 981 not taken.
✗ Branch 983 not taken.
✗ Branch 984 not taken.
✗ Branch 986 not taken.
✗ Branch 987 not taken.
✗ Branch 989 not taken.
✗ Branch 990 not taken.
✗ Branch 992 not taken.
✗ Branch 993 not taken.
✗ Branch 995 not taken.
✗ Branch 996 not taken.
✗ Branch 998 not taken.
✗ Branch 999 not taken.
✗ Branch 1001 not taken.
✗ Branch 1002 not taken.
✗ Branch 1004 not taken.
✗ Branch 1005 not taken.
✗ Branch 1007 not taken.
✗ Branch 1008 not taken.
✗ Branch 1010 not taken.
✗ Branch 1011 not taken.
✗ Branch 1013 not taken.
✗ Branch 1014 not taken.
✗ Branch 1016 not taken.
✗ Branch 1017 not taken.
✗ Branch 1019 not taken.
✗ Branch 1020 not taken.
✗ Branch 1022 not taken.
✗ Branch 1023 not taken.
✗ Branch 1025 not taken.
✗ Branch 1026 not taken.
✗ Branch 1028 not taken.
✗ Branch 1029 not taken.
✗ Branch 1031 not taken.
✗ Branch 1032 not taken.
✗ Branch 1034 not taken.
✗ Branch 1035 not taken.
✓ Branch 1037 taken 1 times.
✗ Branch 1038 not taken.
✗ Branch 1040 not taken.
✗ Branch 1041 not taken.
✗ Branch 1043 not taken.
✗ Branch 1044 not taken.
✗ Branch 1046 not taken.
✗ Branch 1047 not taken.
✗ Branch 1049 not taken.
✗ Branch 1050 not taken.
✗ Branch 1052 not taken.
✗ Branch 1053 not taken.
✗ Branch 1055 not taken.
✗ Branch 1056 not taken.
✗ Branch 1058 not taken.
✗ Branch 1059 not taken.
✓ Branch 1061 taken 1 times.
✗ Branch 1062 not taken.
✗ Branch 1064 not taken.
✗ Branch 1065 not taken.
✗ Branch 1067 not taken.
✗ Branch 1068 not taken.
✗ Branch 1070 not taken.
✗ Branch 1071 not taken.
✗ Branch 1073 not taken.
✗ Branch 1074 not taken.
✗ Branch 1076 not taken.
✗ Branch 1077 not taken.
✗ Branch 1079 not taken.
✗ Branch 1080 not taken.
✗ Branch 1082 not taken.
✗ Branch 1083 not taken.
✗ Branch 1085 not taken.
✗ Branch 1086 not taken.
✗ Branch 1088 not taken.
✗ Branch 1089 not taken.
✗ Branch 1091 not taken.
✗ Branch 1092 not taken.
✗ Branch 1094 not taken.
✗ Branch 1095 not taken.
✗ Branch 1097 not taken.
✗ Branch 1098 not taken.
✗ Branch 1100 not taken.
✗ Branch 1101 not taken.
✗ Branch 1103 not taken.
✗ Branch 1104 not taken.
✗ Branch 1106 not taken.
✗ Branch 1107 not taken.
✗ Branch 1109 not taken.
✗ Branch 1110 not taken.
✗ Branch 1112 not taken.
✗ Branch 1113 not taken.
✗ Branch 1115 not taken.
✗ Branch 1116 not taken.
✗ Branch 1118 not taken.
✗ Branch 1119 not taken.
✗ Branch 1121 not taken.
✗ Branch 1122 not taken.
✗ Branch 1124 not taken.
✗ Branch 1125 not taken.
✗ Branch 1127 not taken.
✗ Branch 1128 not taken.
✗ Branch 1130 not taken.
✗ Branch 1131 not taken.
✓ Branch 1133 taken 1 times.
✗ Branch 1134 not taken.
✗ Branch 1136 not taken.
✗ Branch 1137 not taken.
✗ Branch 1139 not taken.
✗ Branch 1140 not taken.
✗ Branch 1142 not taken.
✗ Branch 1143 not taken.
✗ Branch 1145 not taken.
✗ Branch 1146 not taken.
✗ Branch 1148 not taken.
✗ Branch 1149 not taken.
✗ Branch 1151 not taken.
✗ Branch 1152 not taken.
✗ Branch 1154 not taken.
✗ Branch 1155 not taken.
✗ Branch 1157 not taken.
✗ Branch 1158 not taken.
✗ Branch 1160 not taken.
✗ Branch 1161 not taken.
✗ Branch 1163 not taken.
✗ Branch 1164 not taken.
✗ Branch 1166 not taken.
✗ Branch 1167 not taken.
✗ Branch 1169 not taken.
✗ Branch 1170 not taken.
✗ Branch 1172 not taken.
✗ Branch 1173 not taken.
✗ Branch 1175 not taken.
✗ Branch 1176 not taken.
✗ Branch 1178 not taken.
✗ Branch 1179 not taken.
✗ Branch 1181 not taken.
✗ Branch 1182 not taken.
✗ Branch 1184 not taken.
✗ Branch 1185 not taken.
✗ Branch 1187 not taken.
✗ Branch 1188 not taken.
✗ Branch 1190 not taken.
✗ Branch 1191 not taken.
✗ Branch 1193 not taken.
✗ Branch 1194 not taken.
✗ Branch 1196 not taken.
✗ Branch 1197 not taken.
✗ Branch 1199 not taken.
✗ Branch 1200 not taken.
✗ Branch 1202 not taken.
✗ Branch 1203 not taken.
✓ Branch 1205 taken 5 times.
✗ Branch 1206 not taken.
✗ Branch 1208 not taken.
✗ Branch 1209 not taken.
✗ Branch 1211 not taken.
✗ Branch 1212 not taken.
✗ Branch 1214 not taken.
✗ Branch 1215 not taken.
✗ Branch 1217 not taken.
✗ Branch 1218 not taken.
✗ Branch 1220 not taken.
✗ Branch 1221 not taken.
✗ Branch 1223 not taken.
✗ Branch 1224 not taken.
✗ Branch 1226 not taken.
✗ Branch 1227 not taken.
✗ Branch 1229 not taken.
✗ Branch 1230 not taken.
✗ Branch 1232 not taken.
✗ Branch 1233 not taken.
✗ Branch 1235 not taken.
✗ Branch 1236 not taken.
✗ Branch 1238 not taken.
✗ Branch 1239 not taken.
✗ Branch 1241 not taken.
✗ Branch 1242 not taken.
✗ Branch 1244 not taken.
✗ Branch 1245 not taken.
✗ Branch 1247 not taken.
✗ Branch 1248 not taken.
✗ Branch 1250 not taken.
✗ Branch 1251 not taken.
✗ Branch 1253 not taken.
✗ Branch 1254 not taken.
✗ Branch 1256 not taken.
✗ Branch 1257 not taken.
✗ Branch 1259 not taken.
✗ Branch 1260 not taken.
✗ Branch 1262 not taken.
✗ Branch 1263 not taken.
✗ Branch 1265 not taken.
✗ Branch 1266 not taken.
✗ Branch 1268 not taken.
✗ Branch 1269 not taken.
✗ Branch 1271 not taken.
✗ Branch 1272 not taken.
✗ Branch 1274 not taken.
✗ Branch 1275 not taken.
✗ Branch 1277 not taken.
✗ Branch 1278 not taken.
✗ Branch 1280 not taken.
✗ Branch 1281 not taken.
✗ Branch 1283 not taken.
✗ Branch 1284 not taken.
✗ Branch 1286 not taken.
✗ Branch 1287 not taken.
✗ Branch 1289 not taken.
✗ Branch 1290 not taken.
✗ Branch 1292 not taken.
✗ Branch 1293 not taken.
✗ Branch 1295 not taken.
✗ Branch 1296 not taken.
✗ Branch 1298 not taken.
✗ Branch 1299 not taken.
✗ Branch 1301 not taken.
✗ Branch 1302 not taken.
✗ Branch 1304 not taken.
✗ Branch 1305 not taken.
✗ Branch 1307 not taken.
✗ Branch 1308 not taken.
✗ Branch 1310 not taken.
✗ Branch 1311 not taken.
✗ Branch 1313 not taken.
✗ Branch 1314 not taken.
✗ Branch 1316 not taken.
✗ Branch 1317 not taken.
✗ Branch 1319 not taken.
✗ Branch 1320 not taken.
✗ Branch 1322 not taken.
✗ Branch 1323 not taken.
✗ Branch 1325 not taken.
✗ Branch 1326 not taken.
✗ Branch 1328 not taken.
✗ Branch 1329 not taken.
✗ Branch 1331 not taken.
✗ Branch 1332 not taken.
✗ Branch 1334 not taken.
✗ Branch 1335 not taken.
✗ Branch 1337 not taken.
✗ Branch 1338 not taken.
✗ Branch 1340 not taken.
✗ Branch 1341 not taken.
✗ Branch 1343 not taken.
✗ Branch 1344 not taken.
✗ Branch 1346 not taken.
✗ Branch 1347 not taken.
✗ Branch 1349 not taken.
✗ Branch 1350 not taken.
✗ Branch 1352 not taken.
✗ Branch 1353 not taken.
✗ Branch 1355 not taken.
✗ Branch 1356 not taken.
✗ Branch 1358 not taken.
✗ Branch 1359 not taken.
✗ Branch 1361 not taken.
✗ Branch 1362 not taken.
✗ Branch 1364 not taken.
✗ Branch 1365 not taken.
✗ Branch 1367 not taken.
✗ Branch 1368 not taken.
✗ Branch 1370 not taken.
✗ Branch 1371 not taken.
✗ Branch 1373 not taken.
✗ Branch 1374 not taken.
✗ Branch 1376 not taken.
✗ Branch 1377 not taken.
✗ Branch 1379 not taken.
✗ Branch 1380 not taken.
✗ Branch 1382 not taken.
✗ Branch 1383 not taken.
✗ Branch 1385 not taken.
✗ Branch 1386 not taken.
✗ Branch 1388 not taken.
✗ Branch 1389 not taken.
✗ Branch 1391 not taken.
✗ Branch 1392 not taken.
✗ Branch 1394 not taken.
✗ Branch 1395 not taken.
✗ Branch 1397 not taken.
✗ Branch 1398 not taken.
35 this->clearAllAccessors();
510
13/962
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 96 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 99 not taken.
✗ Branch 101 not taken.
✗ Branch 102 not taken.
✗ Branch 104 not taken.
✗ Branch 105 not taken.
✗ Branch 107 not taken.
✗ Branch 108 not taken.
✗ Branch 110 not taken.
✗ Branch 111 not taken.
✗ Branch 113 not taken.
✗ Branch 114 not taken.
✗ Branch 116 not taken.
✗ Branch 117 not taken.
✗ Branch 119 not taken.
✗ Branch 120 not taken.
✗ Branch 122 not taken.
✗ Branch 123 not taken.
✗ Branch 125 not taken.
✗ Branch 126 not taken.
✗ Branch 128 not taken.
✗ Branch 129 not taken.
✗ Branch 131 not taken.
✗ Branch 132 not taken.
✗ Branch 134 not taken.
✗ Branch 135 not taken.
✗ Branch 137 not taken.
✗ Branch 138 not taken.
✗ Branch 140 not taken.
✗ Branch 141 not taken.
✗ Branch 143 not taken.
✗ Branch 144 not taken.
✗ Branch 146 not taken.
✗ Branch 147 not taken.
✗ Branch 149 not taken.
✗ Branch 150 not taken.
✗ Branch 152 not taken.
✗ Branch 153 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 158 not taken.
✗ Branch 159 not taken.
✗ Branch 161 not taken.
✗ Branch 162 not taken.
✗ Branch 164 not taken.
✗ Branch 165 not taken.
✗ Branch 167 not taken.
✗ Branch 168 not taken.
✗ Branch 170 not taken.
✗ Branch 171 not taken.
✗ Branch 173 not taken.
✗ Branch 174 not taken.
✗ Branch 176 not taken.
✗ Branch 177 not taken.
✗ Branch 179 not taken.
✗ Branch 180 not taken.
✗ Branch 182 not taken.
✗ Branch 183 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✗ Branch 191 not taken.
✗ Branch 192 not taken.
✗ Branch 194 not taken.
✗ Branch 195 not taken.
✗ Branch 197 not taken.
✗ Branch 198 not taken.
✗ Branch 200 not taken.
✗ Branch 201 not taken.
✗ Branch 203 not taken.
✗ Branch 204 not taken.
✗ Branch 206 not taken.
✗ Branch 207 not taken.
✗ Branch 209 not taken.
✗ Branch 210 not taken.
✗ Branch 212 not taken.
✗ Branch 213 not taken.
✗ Branch 215 not taken.
✗ Branch 216 not taken.
✗ Branch 218 not taken.
✗ Branch 219 not taken.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✗ Branch 224 not taken.
✗ Branch 225 not taken.
✗ Branch 227 not taken.
✗ Branch 228 not taken.
✗ Branch 230 not taken.
✗ Branch 231 not taken.
✗ Branch 233 not taken.
✗ Branch 234 not taken.
✗ Branch 236 not taken.
✗ Branch 237 not taken.
✗ Branch 239 not taken.
✗ Branch 240 not taken.
✗ Branch 242 not taken.
✗ Branch 243 not taken.
✗ Branch 245 not taken.
✗ Branch 246 not taken.
✗ Branch 248 not taken.
✗ Branch 249 not taken.
✗ Branch 251 not taken.
✗ Branch 252 not taken.
✗ Branch 254 not taken.
✗ Branch 255 not taken.
✗ Branch 257 not taken.
✗ Branch 258 not taken.
✗ Branch 260 not taken.
✗ Branch 261 not taken.
✗ Branch 263 not taken.
✗ Branch 264 not taken.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✗ Branch 272 not taken.
✗ Branch 273 not taken.
✗ Branch 275 not taken.
✗ Branch 276 not taken.
✗ Branch 278 not taken.
✗ Branch 279 not taken.
✗ Branch 281 not taken.
✗ Branch 282 not taken.
✗ Branch 284 not taken.
✗ Branch 285 not taken.
✗ Branch 287 not taken.
✗ Branch 288 not taken.
✗ Branch 290 not taken.
✗ Branch 291 not taken.
✗ Branch 293 not taken.
✗ Branch 294 not taken.
✗ Branch 296 not taken.
✗ Branch 297 not taken.
✗ Branch 299 not taken.
✗ Branch 300 not taken.
✗ Branch 302 not taken.
✗ Branch 303 not taken.
✗ Branch 305 not taken.
✗ Branch 306 not taken.
✗ Branch 308 not taken.
✗ Branch 309 not taken.
✗ Branch 311 not taken.
✗ Branch 312 not taken.
✗ Branch 314 not taken.
✗ Branch 315 not taken.
✗ Branch 317 not taken.
✗ Branch 318 not taken.
✗ Branch 320 not taken.
✗ Branch 321 not taken.
✗ Branch 323 not taken.
✗ Branch 324 not taken.
✗ Branch 326 not taken.
✗ Branch 327 not taken.
✗ Branch 329 not taken.
✗ Branch 330 not taken.
✗ Branch 332 not taken.
✗ Branch 333 not taken.
✗ Branch 335 not taken.
✗ Branch 336 not taken.
✗ Branch 338 not taken.
✗ Branch 339 not taken.
✓ Branch 341 taken 1 times.
✗ Branch 342 not taken.
✗ Branch 344 not taken.
✗ Branch 345 not taken.
✗ Branch 347 not taken.
✗ Branch 348 not taken.
✗ Branch 350 not taken.
✗ Branch 351 not taken.
✗ Branch 353 not taken.
✗ Branch 354 not taken.
✗ Branch 356 not taken.
✗ Branch 357 not taken.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✗ Branch 365 not taken.
✗ Branch 366 not taken.
✗ Branch 368 not taken.
✗ Branch 369 not taken.
✗ Branch 371 not taken.
✗ Branch 372 not taken.
✗ Branch 374 not taken.
✗ Branch 375 not taken.
✗ Branch 377 not taken.
✗ Branch 378 not taken.
✗ Branch 380 not taken.
✗ Branch 381 not taken.
✗ Branch 383 not taken.
✗ Branch 384 not taken.
✗ Branch 386 not taken.
✗ Branch 387 not taken.
✗ Branch 389 not taken.
✗ Branch 390 not taken.
✗ Branch 392 not taken.
✗ Branch 393 not taken.
✗ Branch 395 not taken.
✗ Branch 396 not taken.
✗ Branch 398 not taken.
✗ Branch 399 not taken.
✗ Branch 401 not taken.
✗ Branch 402 not taken.
✗ Branch 404 not taken.
✗ Branch 405 not taken.
✗ Branch 407 not taken.
✗ Branch 408 not taken.
✗ Branch 410 not taken.
✗ Branch 411 not taken.
✗ Branch 413 not taken.
✗ Branch 414 not taken.
✗ Branch 416 not taken.
✗ Branch 417 not taken.
✗ Branch 419 not taken.
✗ Branch 420 not taken.
✗ Branch 422 not taken.
✗ Branch 423 not taken.
✗ Branch 425 not taken.
✗ Branch 426 not taken.
✗ Branch 428 not taken.
✗ Branch 429 not taken.
✗ Branch 431 not taken.
✗ Branch 432 not taken.
✗ Branch 434 not taken.
✗ Branch 435 not taken.
✓ Branch 437 taken 1 times.
✗ Branch 438 not taken.
✗ Branch 440 not taken.
✗ Branch 441 not taken.
✗ Branch 443 not taken.
✗ Branch 444 not taken.
✗ Branch 446 not taken.
✗ Branch 447 not taken.
✗ Branch 449 not taken.
✗ Branch 450 not taken.
✗ Branch 452 not taken.
✗ Branch 453 not taken.
✗ Branch 455 not taken.
✗ Branch 456 not taken.
✗ Branch 458 not taken.
✗ Branch 459 not taken.
✗ Branch 461 not taken.
✗ Branch 462 not taken.
✗ Branch 464 not taken.
✗ Branch 465 not taken.
✗ Branch 467 not taken.
✗ Branch 468 not taken.
✗ Branch 470 not taken.
✗ Branch 471 not taken.
✗ Branch 473 not taken.
✗ Branch 474 not taken.
✗ Branch 476 not taken.
✗ Branch 477 not taken.
✗ Branch 479 not taken.
✗ Branch 480 not taken.
✗ Branch 482 not taken.
✗ Branch 483 not taken.
✗ Branch 485 not taken.
✗ Branch 486 not taken.
✗ Branch 488 not taken.
✗ Branch 489 not taken.
✗ Branch 491 not taken.
✗ Branch 492 not taken.
✗ Branch 494 not taken.
✗ Branch 495 not taken.
✗ Branch 497 not taken.
✗ Branch 498 not taken.
✗ Branch 500 not taken.
✗ Branch 501 not taken.
✗ Branch 503 not taken.
✗ Branch 504 not taken.
✗ Branch 506 not taken.
✗ Branch 507 not taken.
✓ Branch 509 taken 1 times.
✗ Branch 510 not taken.
✗ Branch 512 not taken.
✗ Branch 513 not taken.
✗ Branch 515 not taken.
✗ Branch 516 not taken.
✗ Branch 518 not taken.
✗ Branch 519 not taken.
✗ Branch 521 not taken.
✗ Branch 522 not taken.
✗ Branch 524 not taken.
✗ Branch 525 not taken.
✗ Branch 527 not taken.
✗ Branch 528 not taken.
✗ Branch 530 not taken.
✗ Branch 531 not taken.
✓ Branch 533 taken 2 times.
✗ Branch 534 not taken.
✗ Branch 536 not taken.
✗ Branch 537 not taken.
✗ Branch 539 not taken.
✗ Branch 540 not taken.
✗ Branch 542 not taken.
✗ Branch 543 not taken.
✗ Branch 545 not taken.
✗ Branch 546 not taken.
✗ Branch 548 not taken.
✗ Branch 549 not taken.
✗ Branch 551 not taken.
✗ Branch 552 not taken.
✗ Branch 554 not taken.
✗ Branch 555 not taken.
✗ Branch 557 not taken.
✗ Branch 558 not taken.
✗ Branch 560 not taken.
✗ Branch 561 not taken.
✗ Branch 563 not taken.
✗ Branch 564 not taken.
✗ Branch 566 not taken.
✗ Branch 567 not taken.
✗ Branch 569 not taken.
✗ Branch 570 not taken.
✗ Branch 572 not taken.
✗ Branch 573 not taken.
✗ Branch 575 not taken.
✗ Branch 576 not taken.
✗ Branch 578 not taken.
✗ Branch 579 not taken.
✗ Branch 581 not taken.
✗ Branch 582 not taken.
✗ Branch 584 not taken.
✗ Branch 585 not taken.
✗ Branch 587 not taken.
✗ Branch 588 not taken.
✗ Branch 590 not taken.
✗ Branch 591 not taken.
✗ Branch 593 not taken.
✗ Branch 594 not taken.
✗ Branch 596 not taken.
✗ Branch 597 not taken.
✗ Branch 599 not taken.
✗ Branch 600 not taken.
✗ Branch 602 not taken.
✗ Branch 603 not taken.
✗ Branch 605 not taken.
✗ Branch 606 not taken.
✗ Branch 608 not taken.
✗ Branch 609 not taken.
✗ Branch 611 not taken.
✗ Branch 612 not taken.
✗ Branch 614 not taken.
✗ Branch 615 not taken.
✗ Branch 617 not taken.
✗ Branch 618 not taken.
✗ Branch 620 not taken.
✗ Branch 621 not taken.
✗ Branch 623 not taken.
✗ Branch 624 not taken.
✗ Branch 626 not taken.
✗ Branch 627 not taken.
✓ Branch 629 taken 1 times.
✗ Branch 630 not taken.
✗ Branch 632 not taken.
✗ Branch 633 not taken.
✗ Branch 635 not taken.
✗ Branch 636 not taken.
✗ Branch 638 not taken.
✗ Branch 639 not taken.
✗ Branch 641 not taken.
✗ Branch 642 not taken.
✗ Branch 644 not taken.
✗ Branch 645 not taken.
✗ Branch 647 not taken.
✗ Branch 648 not taken.
✗ Branch 650 not taken.
✗ Branch 651 not taken.
✗ Branch 653 not taken.
✗ Branch 654 not taken.
✗ Branch 656 not taken.
✗ Branch 657 not taken.
✗ Branch 659 not taken.
✗ Branch 660 not taken.
✗ Branch 662 not taken.
✗ Branch 663 not taken.
✗ Branch 665 not taken.
✗ Branch 666 not taken.
✗ Branch 668 not taken.
✗ Branch 669 not taken.
✗ Branch 671 not taken.
✗ Branch 672 not taken.
✗ Branch 674 not taken.
✗ Branch 675 not taken.
✗ Branch 677 not taken.
✗ Branch 678 not taken.
✗ Branch 680 not taken.
✗ Branch 681 not taken.
✗ Branch 683 not taken.
✗ Branch 684 not taken.
✗ Branch 686 not taken.
✗ Branch 687 not taken.
✗ Branch 689 not taken.
✗ Branch 690 not taken.
✗ Branch 692 not taken.
✗ Branch 693 not taken.
✗ Branch 695 not taken.
✗ Branch 696 not taken.
✗ Branch 698 not taken.
✗ Branch 699 not taken.
✗ Branch 701 not taken.
✗ Branch 702 not taken.
✗ Branch 704 not taken.
✗ Branch 705 not taken.
✗ Branch 707 not taken.
✗ Branch 708 not taken.
✗ Branch 710 not taken.
✗ Branch 711 not taken.
✗ Branch 713 not taken.
✗ Branch 714 not taken.
✗ Branch 716 not taken.
✗ Branch 717 not taken.
✗ Branch 719 not taken.
✗ Branch 720 not taken.
✗ Branch 722 not taken.
✗ Branch 723 not taken.
✓ Branch 725 taken 1 times.
✗ Branch 726 not taken.
✗ Branch 728 not taken.
✗ Branch 729 not taken.
✗ Branch 731 not taken.
✗ Branch 732 not taken.
✗ Branch 734 not taken.
✗ Branch 735 not taken.
✗ Branch 737 not taken.
✗ Branch 738 not taken.
✗ Branch 740 not taken.
✗ Branch 741 not taken.
✗ Branch 743 not taken.
✗ Branch 744 not taken.
✗ Branch 746 not taken.
✗ Branch 747 not taken.
✓ Branch 749 taken 4 times.
✗ Branch 750 not taken.
✗ Branch 752 not taken.
✗ Branch 753 not taken.
✗ Branch 755 not taken.
✗ Branch 756 not taken.
✗ Branch 758 not taken.
✗ Branch 759 not taken.
✗ Branch 761 not taken.
✗ Branch 762 not taken.
✗ Branch 764 not taken.
✗ Branch 765 not taken.
✗ Branch 767 not taken.
✗ Branch 768 not taken.
✗ Branch 770 not taken.
✗ Branch 771 not taken.
✓ Branch 773 taken 12 times.
✗ Branch 774 not taken.
✗ Branch 776 not taken.
✗ Branch 777 not taken.
✗ Branch 779 not taken.
✗ Branch 780 not taken.
✗ Branch 782 not taken.
✗ Branch 783 not taken.
✗ Branch 785 not taken.
✗ Branch 786 not taken.
✗ Branch 788 not taken.
✗ Branch 789 not taken.
✗ Branch 791 not taken.
✗ Branch 792 not taken.
✗ Branch 794 not taken.
✗ Branch 795 not taken.
✗ Branch 797 not taken.
✗ Branch 798 not taken.
✗ Branch 800 not taken.
✗ Branch 801 not taken.
✗ Branch 803 not taken.
✗ Branch 804 not taken.
✗ Branch 806 not taken.
✗ Branch 807 not taken.
✗ Branch 809 not taken.
✗ Branch 810 not taken.
✗ Branch 812 not taken.
✗ Branch 813 not taken.
✗ Branch 815 not taken.
✗ Branch 816 not taken.
✗ Branch 818 not taken.
✗ Branch 819 not taken.
✗ Branch 821 not taken.
✗ Branch 822 not taken.
✗ Branch 824 not taken.
✗ Branch 825 not taken.
✗ Branch 827 not taken.
✗ Branch 828 not taken.
✗ Branch 830 not taken.
✗ Branch 831 not taken.
✗ Branch 833 not taken.
✗ Branch 834 not taken.
✗ Branch 836 not taken.
✗ Branch 837 not taken.
✗ Branch 839 not taken.
✗ Branch 840 not taken.
✗ Branch 842 not taken.
✗ Branch 843 not taken.
✗ Branch 845 not taken.
✗ Branch 846 not taken.
✗ Branch 848 not taken.
✗ Branch 849 not taken.
✗ Branch 851 not taken.
✗ Branch 852 not taken.
✗ Branch 854 not taken.
✗ Branch 855 not taken.
✗ Branch 857 not taken.
✗ Branch 858 not taken.
✗ Branch 860 not taken.
✗ Branch 861 not taken.
✗ Branch 863 not taken.
✗ Branch 864 not taken.
✗ Branch 866 not taken.
✗ Branch 867 not taken.
✗ Branch 869 not taken.
✗ Branch 870 not taken.
✗ Branch 872 not taken.
✗ Branch 873 not taken.
✗ Branch 875 not taken.
✗ Branch 876 not taken.
✗ Branch 878 not taken.
✗ Branch 879 not taken.
✗ Branch 881 not taken.
✗ Branch 882 not taken.
✗ Branch 884 not taken.
✗ Branch 885 not taken.
✗ Branch 887 not taken.
✗ Branch 888 not taken.
✗ Branch 890 not taken.
✗ Branch 891 not taken.
✓ Branch 893 taken 2 times.
✗ Branch 894 not taken.
✗ Branch 896 not taken.
✗ Branch 897 not taken.
✗ Branch 899 not taken.
✗ Branch 900 not taken.
✗ Branch 902 not taken.
✗ Branch 903 not taken.
✗ Branch 905 not taken.
✗ Branch 906 not taken.
✗ Branch 908 not taken.
✗ Branch 909 not taken.
✗ Branch 911 not taken.
✗ Branch 912 not taken.
✗ Branch 914 not taken.
✗ Branch 915 not taken.
✗ Branch 917 not taken.
✗ Branch 918 not taken.
✗ Branch 920 not taken.
✗ Branch 921 not taken.
✗ Branch 923 not taken.
✗ Branch 924 not taken.
✗ Branch 926 not taken.
✗ Branch 927 not taken.
✗ Branch 929 not taken.
✗ Branch 930 not taken.
✗ Branch 932 not taken.
✗ Branch 933 not taken.
✗ Branch 935 not taken.
✗ Branch 936 not taken.
✗ Branch 938 not taken.
✗ Branch 939 not taken.
✗ Branch 941 not taken.
✗ Branch 942 not taken.
✗ Branch 944 not taken.
✗ Branch 945 not taken.
✗ Branch 947 not taken.
✗ Branch 948 not taken.
✗ Branch 950 not taken.
✗ Branch 951 not taken.
✗ Branch 953 not taken.
✗ Branch 954 not taken.
✗ Branch 956 not taken.
✗ Branch 957 not taken.
✗ Branch 959 not taken.
✗ Branch 960 not taken.
✗ Branch 962 not taken.
✗ Branch 963 not taken.
✗ Branch 965 not taken.
✗ Branch 966 not taken.
✗ Branch 968 not taken.
✗ Branch 969 not taken.
✗ Branch 971 not taken.
✗ Branch 972 not taken.
✗ Branch 974 not taken.
✗ Branch 975 not taken.
✗ Branch 977 not taken.
✗ Branch 978 not taken.
✗ Branch 980 not taken.
✗ Branch 981 not taken.
✗ Branch 983 not taken.
✗ Branch 984 not taken.
✗ Branch 986 not taken.
✗ Branch 987 not taken.
✗ Branch 989 not taken.
✗ Branch 990 not taken.
✗ Branch 992 not taken.
✗ Branch 993 not taken.
✗ Branch 995 not taken.
✗ Branch 996 not taken.
✗ Branch 998 not taken.
✗ Branch 999 not taken.
✗ Branch 1001 not taken.
✗ Branch 1002 not taken.
✗ Branch 1004 not taken.
✗ Branch 1005 not taken.
✗ Branch 1007 not taken.
✗ Branch 1008 not taken.
✗ Branch 1010 not taken.
✗ Branch 1011 not taken.
✗ Branch 1013 not taken.
✗ Branch 1014 not taken.
✗ Branch 1016 not taken.
✗ Branch 1017 not taken.
✗ Branch 1019 not taken.
✗ Branch 1020 not taken.
✗ Branch 1022 not taken.
✗ Branch 1023 not taken.
✗ Branch 1025 not taken.
✗ Branch 1026 not taken.
✗ Branch 1028 not taken.
✗ Branch 1029 not taken.
✗ Branch 1031 not taken.
✗ Branch 1032 not taken.
✗ Branch 1034 not taken.
✗ Branch 1035 not taken.
✓ Branch 1037 taken 1 times.
✗ Branch 1038 not taken.
✗ Branch 1040 not taken.
✗ Branch 1041 not taken.
✗ Branch 1043 not taken.
✗ Branch 1044 not taken.
✗ Branch 1046 not taken.
✗ Branch 1047 not taken.
✗ Branch 1049 not taken.
✗ Branch 1050 not taken.
✗ Branch 1052 not taken.
✗ Branch 1053 not taken.
✗ Branch 1055 not taken.
✗ Branch 1056 not taken.
✗ Branch 1058 not taken.
✗ Branch 1059 not taken.
✓ Branch 1061 taken 1 times.
✗ Branch 1062 not taken.
✗ Branch 1064 not taken.
✗ Branch 1065 not taken.
✗ Branch 1067 not taken.
✗ Branch 1068 not taken.
✗ Branch 1070 not taken.
✗ Branch 1071 not taken.
✗ Branch 1073 not taken.
✗ Branch 1074 not taken.
✗ Branch 1076 not taken.
✗ Branch 1077 not taken.
✗ Branch 1079 not taken.
✗ Branch 1080 not taken.
✗ Branch 1082 not taken.
✗ Branch 1083 not taken.
✗ Branch 1085 not taken.
✗ Branch 1086 not taken.
✗ Branch 1088 not taken.
✗ Branch 1089 not taken.
✗ Branch 1091 not taken.
✗ Branch 1092 not taken.
✗ Branch 1094 not taken.
✗ Branch 1095 not taken.
✗ Branch 1097 not taken.
✗ Branch 1098 not taken.
✗ Branch 1100 not taken.
✗ Branch 1101 not taken.
✗ Branch 1103 not taken.
✗ Branch 1104 not taken.
✗ Branch 1106 not taken.
✗ Branch 1107 not taken.
✗ Branch 1109 not taken.
✗ Branch 1110 not taken.
✗ Branch 1112 not taken.
✗ Branch 1113 not taken.
✗ Branch 1115 not taken.
✗ Branch 1116 not taken.
✗ Branch 1118 not taken.
✗ Branch 1119 not taken.
✗ Branch 1121 not taken.
✗ Branch 1122 not taken.
✗ Branch 1124 not taken.
✗ Branch 1125 not taken.
✗ Branch 1127 not taken.
✗ Branch 1128 not taken.
✗ Branch 1130 not taken.
✗ Branch 1131 not taken.
✓ Branch 1133 taken 1 times.
✗ Branch 1134 not taken.
✗ Branch 1136 not taken.
✗ Branch 1137 not taken.
✗ Branch 1139 not taken.
✗ Branch 1140 not taken.
✗ Branch 1142 not taken.
✗ Branch 1143 not taken.
✗ Branch 1145 not taken.
✗ Branch 1146 not taken.
✗ Branch 1148 not taken.
✗ Branch 1149 not taken.
✗ Branch 1151 not taken.
✗ Branch 1152 not taken.
✗ Branch 1154 not taken.
✗ Branch 1155 not taken.
✗ Branch 1157 not taken.
✗ Branch 1158 not taken.
✗ Branch 1160 not taken.
✗ Branch 1161 not taken.
✗ Branch 1163 not taken.
✗ Branch 1164 not taken.
✗ Branch 1166 not taken.
✗ Branch 1167 not taken.
✗ Branch 1169 not taken.
✗ Branch 1170 not taken.
✗ Branch 1172 not taken.
✗ Branch 1173 not taken.
✗ Branch 1175 not taken.
✗ Branch 1176 not taken.
✗ Branch 1178 not taken.
✗ Branch 1179 not taken.
✗ Branch 1181 not taken.
✗ Branch 1182 not taken.
✗ Branch 1184 not taken.
✗ Branch 1185 not taken.
✗ Branch 1187 not taken.
✗ Branch 1188 not taken.
✗ Branch 1190 not taken.
✗ Branch 1191 not taken.
✗ Branch 1193 not taken.
✗ Branch 1194 not taken.
✗ Branch 1196 not taken.
✗ Branch 1197 not taken.
✗ Branch 1199 not taken.
✗ Branch 1200 not taken.
✗ Branch 1202 not taken.
✗ Branch 1203 not taken.
✓ Branch 1205 taken 5 times.
✗ Branch 1206 not taken.
✗ Branch 1208 not taken.
✗ Branch 1209 not taken.
✗ Branch 1211 not taken.
✗ Branch 1212 not taken.
✗ Branch 1214 not taken.
✗ Branch 1215 not taken.
✗ Branch 1217 not taken.
✗ Branch 1218 not taken.
✗ Branch 1220 not taken.
✗ Branch 1221 not taken.
✗ Branch 1223 not taken.
✗ Branch 1224 not taken.
✗ Branch 1226 not taken.
✗ Branch 1227 not taken.
✗ Branch 1229 not taken.
✗ Branch 1230 not taken.
✗ Branch 1232 not taken.
✗ Branch 1233 not taken.
✗ Branch 1235 not taken.
✗ Branch 1236 not taken.
✗ Branch 1238 not taken.
✗ Branch 1239 not taken.
✗ Branch 1241 not taken.
✗ Branch 1242 not taken.
✗ Branch 1244 not taken.
✗ Branch 1245 not taken.
✗ Branch 1247 not taken.
✗ Branch 1248 not taken.
✗ Branch 1250 not taken.
✗ Branch 1251 not taken.
✗ Branch 1253 not taken.
✗ Branch 1254 not taken.
✗ Branch 1256 not taken.
✗ Branch 1257 not taken.
✗ Branch 1259 not taken.
✗ Branch 1260 not taken.
✗ Branch 1262 not taken.
✗ Branch 1263 not taken.
✗ Branch 1265 not taken.
✗ Branch 1266 not taken.
✗ Branch 1268 not taken.
✗ Branch 1269 not taken.
✗ Branch 1271 not taken.
✗ Branch 1272 not taken.
✗ Branch 1274 not taken.
✗ Branch 1275 not taken.
✗ Branch 1277 not taken.
✗ Branch 1278 not taken.
✗ Branch 1280 not taken.
✗ Branch 1281 not taken.
✗ Branch 1283 not taken.
✗ Branch 1284 not taken.
✗ Branch 1286 not taken.
✗ Branch 1287 not taken.
✗ Branch 1289 not taken.
✗ Branch 1290 not taken.
✗ Branch 1292 not taken.
✗ Branch 1293 not taken.
✗ Branch 1295 not taken.
✗ Branch 1296 not taken.
✗ Branch 1298 not taken.
✗ Branch 1299 not taken.
✗ Branch 1301 not taken.
✗ Branch 1302 not taken.
✗ Branch 1304 not taken.
✗ Branch 1305 not taken.
✗ Branch 1307 not taken.
✗ Branch 1308 not taken.
✗ Branch 1310 not taken.
✗ Branch 1311 not taken.
✗ Branch 1313 not taken.
✗ Branch 1314 not taken.
✗ Branch 1316 not taken.
✗ Branch 1317 not taken.
✗ Branch 1319 not taken.
✗ Branch 1320 not taken.
✗ Branch 1322 not taken.
✗ Branch 1323 not taken.
✗ Branch 1325 not taken.
✗ Branch 1326 not taken.
✗ Branch 1328 not taken.
✗ Branch 1329 not taken.
✗ Branch 1331 not taken.
✗ Branch 1332 not taken.
✗ Branch 1334 not taken.
✗ Branch 1335 not taken.
✗ Branch 1337 not taken.
✗ Branch 1338 not taken.
✗ Branch 1340 not taken.
✗ Branch 1341 not taken.
✗ Branch 1343 not taken.
✗ Branch 1344 not taken.
✗ Branch 1346 not taken.
✗ Branch 1347 not taken.
✗ Branch 1349 not taken.
✗ Branch 1350 not taken.
✗ Branch 1352 not taken.
✗ Branch 1353 not taken.
✗ Branch 1355 not taken.
✗ Branch 1356 not taken.
✗ Branch 1358 not taken.
✗ Branch 1359 not taken.
✗ Branch 1361 not taken.
✗ Branch 1362 not taken.
✗ Branch 1364 not taken.
✗ Branch 1365 not taken.
✗ Branch 1367 not taken.
✗ Branch 1368 not taken.
✗ Branch 1370 not taken.
✗ Branch 1371 not taken.
✗ Branch 1373 not taken.
✗ Branch 1374 not taken.
✗ Branch 1376 not taken.
✗ Branch 1377 not taken.
✗ Branch 1379 not taken.
✗ Branch 1380 not taken.
✗ Branch 1382 not taken.
✗ Branch 1383 not taken.
✗ Branch 1385 not taken.
✗ Branch 1386 not taken.
✗ Branch 1388 not taken.
✗ Branch 1389 not taken.
✗ Branch 1391 not taken.
✗ Branch 1392 not taken.
✗ Branch 1394 not taken.
✗ Branch 1395 not taken.
✗ Branch 1397 not taken.
✗ Branch 1398 not taken.
35 mRoot.prune(tolerance);
511 33 }
512
513 /// @brief Add the given leaf node to this tree, creating a new branch if necessary.
514 /// If a leaf node with the same origin already exists, replace it.
515 ///
516 /// @warning Ownership of the leaf is transferred to the tree so
517 /// the client code should not attempt to delete the leaf pointer!
518
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 57873 times.
72163 void addLeaf(LeafNodeType* leaf) { assert(leaf); mRoot.addLeaf(leaf); }
519
520 /// @brief Add a tile containing voxel (x, y, z) at the specified tree level,
521 /// creating a new branch if necessary. Delete any existing lower-level nodes
522 /// that contain (x, y, z).
523 /// @note @a level must be less than this tree's depth.
524 void addTile(Index level, const Coord& xyz, const ValueType& value, bool active);
525
526 /// @brief Return a pointer to the node of type @c NodeT that contains voxel (x, y, z)
527 /// and replace it with a tile of the specified value and state.
528 /// If no such node exists, leave the tree unchanged and return @c nullptr.
529 /// @note The caller takes ownership of the node and is responsible for deleting it.
530 template<typename NodeT>
531 NodeT* stealNode(const Coord& xyz, const ValueType& value, bool active);
532
533 /// @brief Return a pointer to the leaf node that contains voxel (x, y, z).
534 /// If no such node exists, create one that preserves the values and
535 /// active states of all voxels.
536 /// @details Use this method to preallocate a static tree topology over which to
537 /// safely perform multithreaded processing.
538 LeafNodeType* touchLeaf(const Coord& xyz);
539
540 //@{
541 /// @brief Return a pointer to the node of type @c NodeType that contains
542 /// voxel (x, y, z). If no such node exists, return @c nullptr.
543 template<typename NodeType> NodeType* probeNode(const Coord& xyz);
544 template<typename NodeType> const NodeType* probeConstNode(const Coord& xyz) const;
545 template<typename NodeType> const NodeType* probeNode(const Coord& xyz) const;
546 //@}
547
548 //@{
549 /// @brief Return a pointer to the leaf node that contains voxel (x, y, z).
550 /// If no such node exists, return @c nullptr.
551 LeafNodeType* probeLeaf(const Coord& xyz);
552 const LeafNodeType* probeConstLeaf(const Coord& xyz) const;
553 const LeafNodeType* probeLeaf(const Coord& xyz) const { return this->probeConstLeaf(xyz); }
554 //@}
555
556 //@{
557 /// @brief Adds all nodes of a certain type to a container with the following API:
558 /// @code
559 /// struct ArrayT {
560 /// using value_type = ...; // the type of node to be added to the array
561 /// void push_back(value_type nodePtr); // add a node to the array
562 /// };
563 /// @endcode
564 /// @details An example of a wrapper around a c-style array is:
565 /// @code
566 /// struct MyArray {
567 /// using value_type = LeafType*;
568 /// value_type* ptr;
569 /// MyArray(value_type* array) : ptr(array) {}
570 /// void push_back(value_type leaf) { *ptr++ = leaf; }
571 ///};
572 /// @endcode
573 /// @details An example that constructs a list of pointer to all leaf nodes is:
574 /// @code
575 /// std::vector<const LeafNodeType*> array;//most std contains have the required API
576 /// array.reserve(tree.leafCount());//this is a fast preallocation.
577 /// tree.getNodes(array);
578 /// @endcode
579
27/60
✓ Branch 1 taken 27799 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 7570 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 171 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 124 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 158 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 154 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 128 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 145 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 174 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 254 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 285 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 134 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 121 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 129 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 893 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 68 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 545 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 186 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 552 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 784 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 7 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 3 times.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✓ Branch 70 taken 3 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 3 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 3 times.
✗ Branch 77 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✓ Branch 85 taken 18 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 18 times.
✗ Branch 89 not taken.
40422 template<typename ArrayT> void getNodes(ArrayT& array) { mRoot.getNodes(array); }
580
19/74
✓ Branch 1 taken 187 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 457 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 81 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 55 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 19 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 21 times.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✓ Branch 49 taken 4 times.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✓ Branch 82 taken 2 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 2 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 1 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 27 times.
✗ Branch 95 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✓ Branch 106 taken 3 times.
✗ Branch 107 not taken.
867 template<typename ArrayT> void getNodes(ArrayT& array) const { mRoot.getNodes(array); }
581 //@}
582
583 /// @brief Steals all nodes of a certain type from the tree and
584 /// adds them to a container with the following API:
585 /// @code
586 /// struct ArrayT {
587 /// using value_type = ...; // the type of node to be added to the array
588 /// void push_back(value_type nodePtr); // add a node to the array
589 /// };
590 /// @endcode
591 /// @details An example of a wrapper around a c-style array is:
592 /// @code
593 /// struct MyArray {
594 /// using value_type = LeafType*;
595 /// value_type* ptr;
596 /// MyArray(value_type* array) : ptr(array) {}
597 /// void push_back(value_type leaf) { *ptr++ = leaf; }
598 ///};
599 /// @endcode
600 /// @details An example that constructs a list of pointer to all leaf nodes is:
601 /// @code
602 /// std::vector<const LeafNodeType*> array;//most std contains have the required API
603 /// array.reserve(tree.leafCount());//this is a fast preallocation.
604 /// tree.stealNodes(array);
605 /// @endcode
606 template<typename ArrayT>
607
54/138
✓ Branch 1 taken 43483 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 41039 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 41039 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4043 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3971 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3971 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 5780 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 5779 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 5779 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 497 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 6661 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 6661 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 234 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 234 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 234 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 356 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 356 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 356 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 246 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 246 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 246 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 245 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 243 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 243 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 275 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 275 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 275 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 391 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 391 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 391 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 338 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 338 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 338 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 216 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 216 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 216 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 217 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 217 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 217 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 217 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 217 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 216 times.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✓ Branch 136 taken 152 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 152 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 152 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 732 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 732 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 732 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 376 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 376 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 376 times.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✓ Branch 172 taken 732 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 732 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 732 times.
✗ Branch 179 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
179032 void stealNodes(ArrayT& array) { this->clearAllAccessors(); mRoot.stealNodes(array); }
608 template<typename ArrayT>
609 void stealNodes(ArrayT& array, const ValueType& value, bool state)
610 {
611
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 this->clearAllAccessors();
612
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 mRoot.stealNodes(array, value, state);
613 2 }
614
615 //
616 // Aux methods
617 //
618 /// @brief Return @c true if this tree contains no nodes other than
619 /// the root node and no tiles other than background tiles.
620 743 bool empty() const { return mRoot.empty(); }
621
622 /// Remove all tiles from this tree and all nodes other than the root node.
623 void clear();
624
625 /// Clear all registered accessors.
626 void clearAllAccessors();
627
628 //@{
629 /// @brief Register an accessor for this tree. Registered accessors are
630 /// automatically cleared whenever one of this tree's nodes is deleted.
631 void attachAccessor(ValueAccessorBase<Tree, true>&) const;
632 void attachAccessor(ValueAccessorBase<const Tree, true>&) const;
633 //@}
634
635 //@{
636 /// Dummy implementations
637 void attachAccessor(ValueAccessorBase<Tree, false>&) const {}
638 void attachAccessor(ValueAccessorBase<const Tree, false>&) const {}
639 //@}
640
641 //@{
642 /// Deregister an accessor so that it is no longer automatically cleared.
643 void releaseAccessor(ValueAccessorBase<Tree, true>&) const;
644 void releaseAccessor(ValueAccessorBase<const Tree, true>&) const;
645 //@}
646
647 //@{
648 /// Dummy implementations
649 void releaseAccessor(ValueAccessorBase<Tree, false>&) const {}
650 void releaseAccessor(ValueAccessorBase<const Tree, false>&) const {}
651 //@}
652
653 /// @brief Return this tree's background value wrapped as metadata.
654 /// @note Query the metadata object for the value's type.
655 Metadata::Ptr getBackgroundValue() const override;
656
657 /// @brief Return this tree's background value.
658 ///
659 /// @note Use tools::changeBackground to efficiently modify the
660 /// background values. Else use tree.root().setBackground, which
661 /// is serial and hence slower.
662 const ValueType& background() const { return mRoot.background(); }
663
664 /// Min and max are both inclusive.
665 3 void getIndexRange(CoordBBox& bbox) const override { mRoot.getIndexRange(bbox); }
666
667 /// @brief Efficiently merge another tree into this tree using one of several schemes.
668 /// @details This operation is primarily intended to combine trees that are mostly
669 /// non-overlapping (for example, intermediate trees from computations that are
670 /// parallelized across disjoint regions of space).
671 /// @note This operation is not guaranteed to produce an optimally sparse tree.
672 /// Follow merge() with prune() for optimal sparseness.
673 /// @warning This operation always empties the other tree.
674 void merge(Tree& other, MergePolicy = MERGE_ACTIVE_STATES);
675
676 /// @brief Union this tree's set of active values with the active values
677 /// of the other tree, whose @c ValueType may be different.
678 /// @details The resulting state of a value is active if the corresponding value
679 /// was already active OR if it is active in the other tree. Also, a resulting
680 /// value maps to a voxel if the corresponding value already mapped to a voxel
681 /// OR if it is a voxel in the other tree. Thus, a resulting value can only
682 /// map to a tile if the corresponding value already mapped to a tile
683 /// AND if it is a tile value in other tree.
684 ///
685 /// @note This operation modifies only active states, not values.
686 /// Specifically, active tiles and voxels in this tree are not changed, and
687 /// tiles or voxels that were inactive in this tree but active in the other tree
688 /// are marked as active in this tree but left with their original values.
689 ///
690 /// @note If preserveTiles is true, any active tile in this topology
691 /// will not be densified by overlapping child topology.
692 template<typename OtherRootNodeType>
693 void topologyUnion(const Tree<OtherRootNodeType>& other, const bool preserveTiles = false);
694
695 /// @brief Intersects this tree's set of active values with the active values
696 /// of the other tree, whose @c ValueType may be different.
697 /// @details The resulting state of a value is active only if the corresponding
698 /// value was already active AND if it is active in the other tree. Also, a
699 /// resulting value maps to a voxel if the corresponding value
700 /// already mapped to an active voxel in either of the two grids
701 /// and it maps to an active tile or voxel in the other grid.
702 ///
703 /// @note This operation can delete branches in this grid if they
704 /// overlap with inactive tiles in the other grid. Likewise active
705 /// voxels can be turned into inactive voxels resulting in leaf
706 /// nodes with no active values. Thus, it is recommended to
707 /// subsequently call tools::pruneInactive.
708 template<typename OtherRootNodeType>
709 void topologyIntersection(const Tree<OtherRootNodeType>& other);
710
711 /// @brief Difference this tree's set of active values with the active values
712 /// of the other tree, whose @c ValueType may be different. So a
713 /// resulting voxel will be active only if the original voxel is
714 /// active in this tree and inactive in the other tree.
715 ///
716 /// @note This operation can delete branches in this grid if they
717 /// overlap with active tiles in the other grid. Likewise active
718 /// voxels can be turned into inactive voxels resulting in leaf
719 /// nodes with no active values. Thus, it is recommended to
720 /// subsequently call tools::pruneInactive.
721 template<typename OtherRootNodeType>
722 void topologyDifference(const Tree<OtherRootNodeType>& other);
723
724 /// For a given function @c f, use sparse traversal to compute <tt>f(this, other)</tt>
725 /// over all corresponding pairs of values (tile or voxel) of this tree and the other tree
726 /// and store the result in this tree.
727 /// This method is typically more space-efficient than the two-tree combine2(),
728 /// since it moves rather than copies nodes from the other tree into this tree.
729 /// @note This operation always empties the other tree.
730 /// @param other a tree of the same type as this tree
731 /// @param op a functor of the form <tt>void op(const T& a, const T& b, T& result)</tt>,
732 /// where @c T is this tree's @c ValueType, that computes
733 /// <tt>result = f(a, b)</tt>
734 /// @param prune if true, prune the resulting tree one branch at a time (this is usually
735 /// more space-efficient than pruning the entire tree in one pass)
736 ///
737 /// @par Example:
738 /// Compute the per-voxel difference between two floating-point trees,
739 /// @c aTree and @c bTree, and store the result in @c aTree (leaving @c bTree empty).
740 /// @code
741 /// {
742 /// struct Local {
743 /// static inline void diff(const float& a, const float& b, float& result) {
744 /// result = a - b;
745 /// }
746 /// };
747 /// aTree.combine(bTree, Local::diff);
748 /// }
749 /// @endcode
750 ///
751 /// @par Example:
752 /// Compute <tt>f * a + (1 - f) * b</tt> over all voxels of two floating-point trees,
753 /// @c aTree and @c bTree, and store the result in @c aTree (leaving @c bTree empty).
754 /// @code
755 /// namespace {
756 /// struct Blend {
757 /// Blend(float f): frac(f) {}
758 /// inline void operator()(const float& a, const float& b, float& result) const {
759 /// result = frac * a + (1.0 - frac) * b;
760 /// }
761 /// float frac;
762 /// };
763 /// }
764 /// {
765 /// aTree.combine(bTree, Blend(0.25)); // 0.25 * a + 0.75 * b
766 /// }
767 /// @endcode
768 template<typename CombineOp>
769 void combine(Tree& other, CombineOp& op, bool prune = false);
770 #ifndef _WIN32
771 template<typename CombineOp>
772 void combine(Tree& other, const CombineOp& op, bool prune = false);
773 #endif
774
775 /// Like combine(), but with
776 /// @param other a tree of the same type as this tree
777 /// @param op a functor of the form <tt>void op(CombineArgs<ValueType>& args)</tt> that
778 /// computes <tt>args.setResult(f(args.a(), args.b()))</tt> and, optionally,
779 /// <tt>args.setResultIsActive(g(args.aIsActive(), args.bIsActive()))</tt>
780 /// for some functions @c f and @c g
781 /// @param prune if true, prune the resulting tree one branch at a time (this is usually
782 /// more space-efficient than pruning the entire tree in one pass)
783 ///
784 /// This variant passes not only the @em a and @em b values but also the active states
785 /// of the @em a and @em b values to the functor, which may then return, by calling
786 /// @c args.setResultIsActive(), a computed active state for the result value.
787 /// By default, the result is active if either the @em a or the @em b value is active.
788 ///
789 /// @see openvdb/Types.h for the definition of the CombineArgs struct.
790 ///
791 /// @par Example:
792 /// Replace voxel values in floating-point @c aTree with corresponding values
793 /// from floating-point @c bTree (leaving @c bTree empty) wherever the @c bTree
794 /// values are larger. Also, preserve the active states of any transferred values.
795 /// @code
796 /// {
797 /// struct Local {
798 /// static inline void max(CombineArgs<float>& args) {
799 /// if (args.b() > args.a()) {
800 /// // Transfer the B value and its active state.
801 /// args.setResult(args.b());
802 /// args.setResultIsActive(args.bIsActive());
803 /// } else {
804 /// // Preserve the A value and its active state.
805 /// args.setResult(args.a());
806 /// args.setResultIsActive(args.aIsActive());
807 /// }
808 /// }
809 /// };
810 /// aTree.combineExtended(bTree, Local::max);
811 /// }
812 /// @endcode
813 template<typename ExtendedCombineOp>
814 void combineExtended(Tree& other, ExtendedCombineOp& op, bool prune = false);
815 #ifndef _WIN32
816 template<typename ExtendedCombineOp>
817 void combineExtended(Tree& other, const ExtendedCombineOp& op, bool prune = false);
818 #endif
819
820 /// For a given function @c f, use sparse traversal to compute <tt>f(a, b)</tt> over all
821 /// corresponding pairs of values (tile or voxel) of trees A and B and store the result
822 /// in this tree.
823 /// @param a,b two trees with the same configuration (levels and node dimensions)
824 /// as this tree but with the B tree possibly having a different value type
825 /// @param op a functor of the form <tt>void op(const T1& a, const T2& b, T1& result)</tt>,
826 /// where @c T1 is this tree's and the A tree's @c ValueType and @c T2 is the
827 /// B tree's @c ValueType, that computes <tt>result = f(a, b)</tt>
828 /// @param prune if true, prune the resulting tree one branch at a time (this is usually
829 /// more space-efficient than pruning the entire tree in one pass)
830 ///
831 /// @throw TypeError if the B tree's configuration doesn't match this tree's
832 /// or if this tree's ValueType is not constructible from the B tree's ValueType.
833 ///
834 /// @par Example:
835 /// Compute the per-voxel difference between two floating-point trees,
836 /// @c aTree and @c bTree, and store the result in a third tree.
837 /// @code
838 /// {
839 /// struct Local {
840 /// static inline void diff(const float& a, const float& b, float& result) {
841 /// result = a - b;
842 /// }
843 /// };
844 /// FloatTree resultTree;
845 /// resultTree.combine2(aTree, bTree, Local::diff);
846 /// }
847 /// @endcode
848 template<typename CombineOp, typename OtherTreeType /*= Tree*/>
849 void combine2(const Tree& a, const OtherTreeType& b, CombineOp& op, bool prune = false);
850 #ifndef _WIN32
851 template<typename CombineOp, typename OtherTreeType /*= Tree*/>
852 void combine2(const Tree& a, const OtherTreeType& b, const CombineOp& op, bool prune = false);
853 #endif
854
855 /// Like combine2(), but with
856 /// @param a,b two trees with the same configuration (levels and node dimensions)
857 /// as this tree but with the B tree possibly having a different value type
858 /// @param op a functor of the form <tt>void op(CombineArgs<T1, T2>& args)</tt>, where
859 /// @c T1 is this tree's and the A tree's @c ValueType and @c T2 is the B tree's
860 /// @c ValueType, that computes <tt>args.setResult(f(args.a(), args.b()))</tt>
861 /// and, optionally,
862 /// <tt>args.setResultIsActive(g(args.aIsActive(), args.bIsActive()))</tt>
863 /// for some functions @c f and @c g
864 /// @param prune if true, prune the resulting tree one branch at a time (this is usually
865 /// more space-efficient than pruning the entire tree in one pass)
866 /// This variant passes not only the @em a and @em b values but also the active states
867 /// of the @em a and @em b values to the functor, which may then return, by calling
868 /// <tt>args.setResultIsActive()</tt>, a computed active state for the result value.
869 /// By default, the result is active if either the @em a or the @em b value is active.
870 ///
871 /// @throw TypeError if the B tree's configuration doesn't match this tree's
872 /// or if this tree's ValueType is not constructible from the B tree's ValueType.
873 ///
874 /// @see openvdb/Types.h for the definition of the CombineArgs struct.
875 ///
876 /// @par Example:
877 /// Compute the per-voxel maximum values of two single-precision floating-point trees,
878 /// @c aTree and @c bTree, and store the result in a third tree. Set the active state
879 /// of each output value to that of the larger of the two input values.
880 /// @code
881 /// {
882 /// struct Local {
883 /// static inline void max(CombineArgs<float>& args) {
884 /// if (args.b() > args.a()) {
885 /// // Transfer the B value and its active state.
886 /// args.setResult(args.b());
887 /// args.setResultIsActive(args.bIsActive());
888 /// } else {
889 /// // Preserve the A value and its active state.
890 /// args.setResult(args.a());
891 /// args.setResultIsActive(args.aIsActive());
892 /// }
893 /// }
894 /// };
895 /// FloatTree aTree = ...;
896 /// FloatTree bTree = ...;
897 /// FloatTree resultTree;
898 /// resultTree.combine2Extended(aTree, bTree, Local::max);
899 /// }
900 /// @endcode
901 ///
902 /// @par Example:
903 /// Compute the per-voxel maximum values of a double-precision and a single-precision
904 /// floating-point tree, @c aTree and @c bTree, and store the result in a third,
905 /// double-precision tree. Set the active state of each output value to that of
906 /// the larger of the two input values.
907 /// @code
908 /// {
909 /// struct Local {
910 /// static inline void max(CombineArgs<double, float>& args) {
911 /// if (args.b() > args.a()) {
912 /// // Transfer the B value and its active state.
913 /// args.setResult(args.b());
914 /// args.setResultIsActive(args.bIsActive());
915 /// } else {
916 /// // Preserve the A value and its active state.
917 /// args.setResult(args.a());
918 /// args.setResultIsActive(args.aIsActive());
919 /// }
920 /// }
921 /// };
922 /// DoubleTree aTree = ...;
923 /// FloatTree bTree = ...;
924 /// DoubleTree resultTree;
925 /// resultTree.combine2Extended(aTree, bTree, Local::max);
926 /// }
927 /// @endcode
928 template<typename ExtendedCombineOp, typename OtherTreeType /*= Tree*/>
929 void combine2Extended(const Tree& a, const OtherTreeType& b, ExtendedCombineOp& op,
930 bool prune = false);
931 #ifndef _WIN32
932 template<typename ExtendedCombineOp, typename OtherTreeType /*= Tree*/>
933 void combine2Extended(const Tree& a, const OtherTreeType& b, const ExtendedCombineOp&,
934 bool prune = false);
935 #endif
936
937 template<typename BBoxOp>
938 OPENVDB_DEPRECATED_MESSAGE("Use tools::visitNodesDepthFirst or DynamicNodeManager instead")
939
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 void visitActiveBBox(BBoxOp& op) const { mRoot.visitActiveBBox(op); }
940
941 template<typename VisitorOp>
942 OPENVDB_DEPRECATED_MESSAGE("Use tools::visitNodesDepthFirst or DynamicNodeManager instead")
943 void visit(VisitorOp& op);
944 template<typename VisitorOp>
945 OPENVDB_DEPRECATED_MESSAGE("Use tools::visitNodesDepthFirst or DynamicNodeManager instead")
946 void visit(const VisitorOp& op);
947
948 template<typename VisitorOp>
949 OPENVDB_DEPRECATED_MESSAGE("Use tools::visitNodesDepthFirst or DynamicNodeManager instead")
950 void visit(VisitorOp& op) const;
951 template<typename VisitorOp>
952 OPENVDB_DEPRECATED_MESSAGE("Use tools::visitNodesDepthFirst or DynamicNodeManager instead")
953 void visit(const VisitorOp& op) const;
954
955 template<typename OtherTreeType, typename VisitorOp>
956 OPENVDB_DEPRECATED_MESSAGE("Use tools::visitNodesDepthFirst or DynamicNodeManager instead")
957 void visit2(OtherTreeType& other, VisitorOp& op);
958 template<typename OtherTreeType, typename VisitorOp>
959 OPENVDB_DEPRECATED_MESSAGE("Use tools::visitNodesDepthFirst or DynamicNodeManager instead")
960 void visit2(OtherTreeType& other, const VisitorOp& op);
961
962 template<typename OtherTreeType, typename VisitorOp>
963 OPENVDB_DEPRECATED_MESSAGE("Use tools::visitNodesDepthFirst or DynamicNodeManager instead")
964 void visit2(OtherTreeType& other, VisitorOp& op) const;
965 template<typename OtherTreeType, typename VisitorOp>
966 OPENVDB_DEPRECATED_MESSAGE("Use tools::visitNodesDepthFirst or DynamicNodeManager instead")
967 void visit2(OtherTreeType& other, const VisitorOp& op) const;
968
969
970 //
971 // Iteration
972 //
973 //@{
974 /// Return an iterator over children of the root node.
975 typename RootNodeType::ChildOnCIter beginRootChildren() const { return mRoot.cbeginChildOn(); }
976 typename RootNodeType::ChildOnCIter cbeginRootChildren() const { return mRoot.cbeginChildOn(); }
977 typename RootNodeType::ChildOnIter beginRootChildren() { return mRoot.beginChildOn(); }
978 //@}
979
980 //@{
981 /// Return an iterator over non-child entries of the root node's table.
982 typename RootNodeType::ChildOffCIter beginRootTiles() const { return mRoot.cbeginChildOff(); }
983 typename RootNodeType::ChildOffCIter cbeginRootTiles() const { return mRoot.cbeginChildOff(); }
984 typename RootNodeType::ChildOffIter beginRootTiles() { return mRoot.beginChildOff(); }
985 //@}
986
987 //@{
988 /// Return an iterator over all entries of the root node's table.
989 typename RootNodeType::ChildAllCIter beginRootDense() const { return mRoot.cbeginChildAll(); }
990 typename RootNodeType::ChildAllCIter cbeginRootDense() const { return mRoot.cbeginChildAll(); }
991 typename RootNodeType::ChildAllIter beginRootDense() { return mRoot.beginChildAll(); }
992 //@}
993
994
995 //@{
996 /// Iterator over all nodes in this tree
997 using NodeIter = NodeIteratorBase<Tree, typename RootNodeType::ChildOnIter>;
998 using NodeCIter = NodeIteratorBase<const Tree, typename RootNodeType::ChildOnCIter>;
999 //@}
1000
1001 //@{
1002 /// Iterator over all leaf nodes in this tree
1003 using LeafIter = LeafIteratorBase<Tree, typename RootNodeType::ChildOnIter>;
1004 using LeafCIter = LeafIteratorBase<const Tree, typename RootNodeType::ChildOnCIter>;
1005 //@}
1006
1007 //@{
1008 /// Return an iterator over all nodes in this tree.
1009 NodeIter beginNode() { return NodeIter(*this); }
1010 NodeCIter beginNode() const { return NodeCIter(*this); }
1011 32 NodeCIter cbeginNode() const { return NodeCIter(*this); }
1012 //@}
1013
1014 //@{
1015 /// Return an iterator over all leaf nodes in this tree.
1016
37/89
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 4 times.
✓ Branch 8 taken 19 times.
✓ Branch 9 taken 4 times.
✓ Branch 10 taken 3 times.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 4 times.
✓ Branch 13 taken 3 times.
✓ Branch 14 taken 6 times.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 3 times.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 2 times.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 5 times.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 2 times.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 35 taken 1 times.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 1 times.
✓ Branch 39 taken 1 times.
✗ Branch 40 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✓ Branch 44 taken 1 times.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✓ Branch 50 taken 1 times.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✓ Branch 53 taken 1 times.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 1 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✓ Branch 62 taken 8 times.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 84 not taken.
✗ Branch 85 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✗ Branch 93 not taken.
✗ Branch 94 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 1 times.
✗ Branch 104 not taken.
311 LeafIter beginLeaf() { return LeafIter(*this); }
1017
1/20
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
255 LeafCIter beginLeaf() const { return LeafCIter(*this); }
1018
158/213
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 10 times.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 3 times.
✓ Branch 13 taken 6 times.
✓ Branch 14 taken 1 times.
✓ Branch 15 taken 7 times.
✓ Branch 16 taken 7 times.
✓ Branch 17 taken 1 times.
✓ Branch 18 taken 2 times.
✓ Branch 19 taken 16 times.
✓ Branch 20 taken 1 times.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 766 times.
✓ Branch 23 taken 1 times.
✓ Branch 24 taken 3 times.
✓ Branch 25 taken 15 times.
✓ Branch 26 taken 1 times.
✓ Branch 27 taken 3 times.
✓ Branch 28 taken 14 times.
✓ Branch 29 taken 1 times.
✓ Branch 30 taken 3 times.
✓ Branch 31 taken 16 times.
✓ Branch 32 taken 3 times.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 13 times.
✓ Branch 35 taken 4 times.
✓ Branch 36 taken 2 times.
✓ Branch 37 taken 13 times.
✓ Branch 38 taken 2 times.
✓ Branch 39 taken 6 times.
✓ Branch 40 taken 15 times.
✓ Branch 41 taken 3 times.
✓ Branch 42 taken 2 times.
✓ Branch 43 taken 19 times.
✓ Branch 44 taken 3 times.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 19 times.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 5 times.
✓ Branch 49 taken 11 times.
✓ Branch 50 taken 2 times.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 5 times.
✓ Branch 53 taken 2 times.
✓ Branch 54 taken 2 times.
✓ Branch 55 taken 4 times.
✓ Branch 56 taken 5 times.
✓ Branch 57 taken 2 times.
✓ Branch 58 taken 2 times.
✓ Branch 59 taken 3 times.
✓ Branch 60 taken 3 times.
✓ Branch 61 taken 8 times.
✓ Branch 62 taken 3 times.
✓ Branch 63 taken 1 times.
✓ Branch 64 taken 2 times.
✓ Branch 65 taken 3 times.
✓ Branch 66 taken 15 times.
✓ Branch 67 taken 3 times.
✓ Branch 68 taken 1 times.
✓ Branch 69 taken 18 times.
✓ Branch 70 taken 2 times.
✓ Branch 71 taken 1 times.
✓ Branch 72 taken 2 times.
✓ Branch 73 taken 18 times.
✓ Branch 74 taken 1 times.
✓ Branch 75 taken 5 times.
✓ Branch 76 taken 11 times.
✓ Branch 77 taken 1 times.
✓ Branch 78 taken 2 times.
✓ Branch 79 taken 3 times.
✓ Branch 80 taken 1 times.
✓ Branch 81 taken 1 times.
✓ Branch 82 taken 82 times.
✓ Branch 83 taken 2 times.
✓ Branch 84 taken 1 times.
✓ Branch 85 taken 2 times.
✓ Branch 86 taken 2 times.
✓ Branch 87 taken 1 times.
✓ Branch 88 taken 2 times.
✓ Branch 89 taken 2 times.
✓ Branch 90 taken 1 times.
✓ Branch 91 taken 1 times.
✓ Branch 92 taken 2 times.
✓ Branch 93 taken 1 times.
✓ Branch 94 taken 16 times.
✓ Branch 95 taken 8 times.
✗ Branch 96 not taken.
✓ Branch 97 taken 1 times.
✓ Branch 98 taken 12 times.
✗ Branch 99 not taken.
✓ Branch 100 taken 1 times.
✓ Branch 101 taken 3 times.
✗ Branch 102 not taken.
✓ Branch 103 taken 1 times.
✓ Branch 104 taken 2 times.
✗ Branch 105 not taken.
✓ Branch 106 taken 1 times.
✓ Branch 107 taken 1 times.
✗ Branch 108 not taken.
✓ Branch 109 taken 11 times.
✓ Branch 110 taken 1 times.
✓ Branch 111 taken 9 times.
✓ Branch 112 taken 1 times.
✓ Branch 113 taken 1 times.
✗ Branch 114 not taken.
✓ Branch 115 taken 1 times.
✓ Branch 116 taken 2 times.
✗ Branch 117 not taken.
✓ Branch 118 taken 1 times.
✓ Branch 119 taken 2 times.
✗ Branch 120 not taken.
✓ Branch 121 taken 1 times.
✓ Branch 122 taken 2 times.
✗ Branch 123 not taken.
✓ Branch 124 taken 1 times.
✓ Branch 125 taken 2 times.
✗ Branch 126 not taken.
✓ Branch 127 taken 1 times.
✓ Branch 128 taken 1 times.
✗ Branch 129 not taken.
✓ Branch 130 taken 1 times.
✓ Branch 131 taken 1 times.
✗ Branch 132 not taken.
✓ Branch 133 taken 1 times.
✓ Branch 134 taken 1 times.
✓ Branch 135 taken 1 times.
✗ Branch 136 not taken.
✓ Branch 137 taken 1 times.
✓ Branch 138 taken 1 times.
✗ Branch 139 not taken.
✓ Branch 140 taken 1 times.
✓ Branch 141 taken 1 times.
✗ Branch 142 not taken.
✓ Branch 143 taken 1 times.
✓ Branch 144 taken 1 times.
✗ Branch 145 not taken.
✓ Branch 146 taken 1 times.
✓ Branch 147 taken 1 times.
✗ Branch 148 not taken.
✓ Branch 149 taken 1 times.
✓ Branch 150 taken 1 times.
✗ Branch 151 not taken.
✓ Branch 152 taken 1 times.
✓ Branch 153 taken 1 times.
✗ Branch 154 not taken.
✓ Branch 155 taken 1 times.
✓ Branch 156 taken 1 times.
✗ Branch 157 not taken.
✓ Branch 158 taken 1 times.
✗ Branch 159 not taken.
✗ Branch 160 not taken.
✓ Branch 161 taken 1 times.
✗ Branch 162 not taken.
✗ Branch 163 not taken.
✓ Branch 164 taken 1 times.
✗ Branch 165 not taken.
✗ Branch 166 not taken.
✓ Branch 167 taken 1 times.
✗ Branch 168 not taken.
✓ Branch 170 taken 1 times.
✗ Branch 171 not taken.
✓ Branch 173 taken 1 times.
✗ Branch 174 not taken.
✓ Branch 176 taken 1 times.
✗ Branch 177 not taken.
✓ Branch 179 taken 1 times.
✗ Branch 180 not taken.
✓ Branch 182 taken 1 times.
✗ Branch 183 not taken.
✓ Branch 185 taken 1 times.
✗ Branch 186 not taken.
✓ Branch 188 taken 1 times.
✗ Branch 189 not taken.
✓ Branch 191 taken 1 times.
✗ Branch 192 not taken.
✓ Branch 194 taken 1 times.
✗ Branch 195 not taken.
✓ Branch 197 taken 1 times.
✗ Branch 198 not taken.
✓ Branch 200 taken 1 times.
✗ Branch 201 not taken.
✓ Branch 203 taken 1 times.
✗ Branch 204 not taken.
✓ Branch 206 taken 1 times.
✗ Branch 207 not taken.
✓ Branch 209 taken 1 times.
✗ Branch 210 not taken.
✓ Branch 212 taken 1 times.
✗ Branch 213 not taken.
✓ Branch 215 taken 1 times.
✗ Branch 216 not taken.
✓ Branch 218 taken 1 times.
✗ Branch 219 not taken.
✓ Branch 221 taken 1 times.
✗ Branch 222 not taken.
✓ Branch 224 taken 1 times.
✗ Branch 225 not taken.
✓ Branch 227 taken 1 times.
✗ Branch 228 not taken.
✓ Branch 230 taken 1 times.
✗ Branch 231 not taken.
✓ Branch 233 taken 1 times.
✗ Branch 234 not taken.
✓ Branch 236 taken 1 times.
✗ Branch 237 not taken.
13438 LeafCIter cbeginLeaf() const { return LeafCIter(*this); }
1019 //@}
1020
1021 using ValueAllIter = TreeValueIteratorBase<Tree, typename RootNodeType::ValueAllIter>;
1022 using ValueAllCIter = TreeValueIteratorBase<const Tree, typename RootNodeType::ValueAllCIter>;
1023 using ValueOnIter = TreeValueIteratorBase<Tree, typename RootNodeType::ValueOnIter>;
1024 using ValueOnCIter = TreeValueIteratorBase<const Tree, typename RootNodeType::ValueOnCIter>;
1025 using ValueOffIter = TreeValueIteratorBase<Tree, typename RootNodeType::ValueOffIter>;
1026 using ValueOffCIter = TreeValueIteratorBase<const Tree, typename RootNodeType::ValueOffCIter>;
1027
1028 //@{
1029 /// Return an iterator over all values (tile and voxel) across all nodes.
1030
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
1576 ValueAllIter beginValueAll() { return ValueAllIter(*this); }
1031 ValueAllCIter beginValueAll() const { return ValueAllCIter(*this); }
1032
11/92
✓ Branch 1 taken 26 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 9 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 12 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 9 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 9 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 10 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 9 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
112 ValueAllCIter cbeginValueAll() const { return ValueAllCIter(*this); }
1033 //@}
1034 //@{
1035 /// Return an iterator over active values (tile and voxel) across all nodes.
1036
10/928
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✓ Branch 142 taken 1 times.
✗ Branch 143 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 157 not taken.
✗ Branch 158 not taken.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✗ Branch 175 not taken.
✗ Branch 176 not taken.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✓ Branch 214 taken 2 times.
✗ Branch 215 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✗ Branch 229 not taken.
✗ Branch 230 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 235 not taken.
✗ Branch 236 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 241 not taken.
✗ Branch 242 not taken.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✗ Branch 253 not taken.
✗ Branch 254 not taken.
✗ Branch 256 not taken.
✗ Branch 257 not taken.
✗ Branch 259 not taken.
✗ Branch 260 not taken.
✗ Branch 262 not taken.
✗ Branch 263 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 271 not taken.
✗ Branch 272 not taken.
✗ Branch 274 not taken.
✗ Branch 275 not taken.
✗ Branch 277 not taken.
✗ Branch 278 not taken.
✗ Branch 280 not taken.
✗ Branch 281 not taken.
✗ Branch 283 not taken.
✗ Branch 284 not taken.
✓ Branch 286 taken 2 times.
✗ Branch 287 not taken.
✗ Branch 289 not taken.
✗ Branch 290 not taken.
✗ Branch 292 not taken.
✗ Branch 293 not taken.
✗ Branch 295 not taken.
✗ Branch 296 not taken.
✗ Branch 298 not taken.
✗ Branch 299 not taken.
✗ Branch 301 not taken.
✗ Branch 302 not taken.
✗ Branch 304 not taken.
✗ Branch 305 not taken.
✗ Branch 307 not taken.
✗ Branch 308 not taken.
✗ Branch 310 not taken.
✗ Branch 311 not taken.
✗ Branch 313 not taken.
✗ Branch 314 not taken.
✗ Branch 316 not taken.
✗ Branch 317 not taken.
✗ Branch 319 not taken.
✗ Branch 320 not taken.
✗ Branch 322 not taken.
✗ Branch 323 not taken.
✗ Branch 325 not taken.
✗ Branch 326 not taken.
✗ Branch 328 not taken.
✗ Branch 329 not taken.
✗ Branch 331 not taken.
✗ Branch 332 not taken.
✗ Branch 334 not taken.
✗ Branch 335 not taken.
✗ Branch 337 not taken.
✗ Branch 338 not taken.
✗ Branch 340 not taken.
✗ Branch 341 not taken.
✗ Branch 343 not taken.
✗ Branch 344 not taken.
✗ Branch 346 not taken.
✗ Branch 347 not taken.
✗ Branch 349 not taken.
✗ Branch 350 not taken.
✗ Branch 352 not taken.
✗ Branch 353 not taken.
✗ Branch 355 not taken.
✗ Branch 356 not taken.
✗ Branch 358 not taken.
✗ Branch 359 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 364 not taken.
✗ Branch 365 not taken.
✗ Branch 367 not taken.
✗ Branch 368 not taken.
✗ Branch 370 not taken.
✗ Branch 371 not taken.
✗ Branch 373 not taken.
✗ Branch 374 not taken.
✗ Branch 376 not taken.
✗ Branch 377 not taken.
✗ Branch 379 not taken.
✗ Branch 380 not taken.
✗ Branch 382 not taken.
✗ Branch 383 not taken.
✗ Branch 385 not taken.
✗ Branch 386 not taken.
✗ Branch 388 not taken.
✗ Branch 389 not taken.
✗ Branch 391 not taken.
✗ Branch 392 not taken.
✗ Branch 394 not taken.
✗ Branch 395 not taken.
✗ Branch 397 not taken.
✗ Branch 398 not taken.
✗ Branch 400 not taken.
✗ Branch 401 not taken.
✗ Branch 403 not taken.
✗ Branch 404 not taken.
✗ Branch 406 not taken.
✗ Branch 407 not taken.
✗ Branch 409 not taken.
✗ Branch 410 not taken.
✗ Branch 412 not taken.
✗ Branch 413 not taken.
✗ Branch 415 not taken.
✗ Branch 416 not taken.
✗ Branch 418 not taken.
✗ Branch 419 not taken.
✗ Branch 421 not taken.
✗ Branch 422 not taken.
✗ Branch 424 not taken.
✗ Branch 425 not taken.
✗ Branch 427 not taken.
✗ Branch 428 not taken.
✗ Branch 430 not taken.
✗ Branch 431 not taken.
✗ Branch 433 not taken.
✗ Branch 434 not taken.
✗ Branch 436 not taken.
✗ Branch 437 not taken.
✗ Branch 439 not taken.
✗ Branch 440 not taken.
✗ Branch 442 not taken.
✗ Branch 443 not taken.
✗ Branch 445 not taken.
✗ Branch 446 not taken.
✗ Branch 448 not taken.
✗ Branch 449 not taken.
✗ Branch 451 not taken.
✗ Branch 452 not taken.
✗ Branch 454 not taken.
✗ Branch 455 not taken.
✗ Branch 457 not taken.
✗ Branch 458 not taken.
✗ Branch 460 not taken.
✗ Branch 461 not taken.
✗ Branch 463 not taken.
✗ Branch 464 not taken.
✗ Branch 466 not taken.
✗ Branch 467 not taken.
✗ Branch 469 not taken.
✗ Branch 470 not taken.
✗ Branch 472 not taken.
✗ Branch 473 not taken.
✗ Branch 475 not taken.
✗ Branch 476 not taken.
✗ Branch 478 not taken.
✗ Branch 479 not taken.
✗ Branch 481 not taken.
✗ Branch 482 not taken.
✗ Branch 484 not taken.
✗ Branch 485 not taken.
✗ Branch 487 not taken.
✗ Branch 488 not taken.
✗ Branch 490 not taken.
✗ Branch 491 not taken.
✗ Branch 493 not taken.
✗ Branch 494 not taken.
✗ Branch 496 not taken.
✗ Branch 497 not taken.
✗ Branch 499 not taken.
✗ Branch 500 not taken.
✗ Branch 502 not taken.
✗ Branch 503 not taken.
✗ Branch 505 not taken.
✗ Branch 506 not taken.
✗ Branch 508 not taken.
✗ Branch 509 not taken.
✗ Branch 511 not taken.
✗ Branch 512 not taken.
✗ Branch 514 not taken.
✗ Branch 515 not taken.
✗ Branch 517 not taken.
✗ Branch 518 not taken.
✗ Branch 520 not taken.
✗ Branch 521 not taken.
✗ Branch 523 not taken.
✗ Branch 524 not taken.
✗ Branch 526 not taken.
✗ Branch 527 not taken.
✗ Branch 529 not taken.
✗ Branch 530 not taken.
✗ Branch 532 not taken.
✗ Branch 533 not taken.
✗ Branch 535 not taken.
✗ Branch 536 not taken.
✗ Branch 538 not taken.
✗ Branch 539 not taken.
✗ Branch 541 not taken.
✗ Branch 542 not taken.
✗ Branch 544 not taken.
✗ Branch 545 not taken.
✗ Branch 547 not taken.
✗ Branch 548 not taken.
✗ Branch 550 not taken.
✗ Branch 551 not taken.
✗ Branch 553 not taken.
✗ Branch 554 not taken.
✗ Branch 556 not taken.
✗ Branch 557 not taken.
✗ Branch 559 not taken.
✗ Branch 560 not taken.
✗ Branch 562 not taken.
✗ Branch 563 not taken.
✗ Branch 565 not taken.
✗ Branch 566 not taken.
✗ Branch 568 not taken.
✗ Branch 569 not taken.
✗ Branch 571 not taken.
✗ Branch 572 not taken.
✗ Branch 574 not taken.
✗ Branch 575 not taken.
✗ Branch 577 not taken.
✗ Branch 578 not taken.
✗ Branch 580 not taken.
✗ Branch 581 not taken.
✗ Branch 583 not taken.
✗ Branch 584 not taken.
✗ Branch 586 not taken.
✗ Branch 587 not taken.
✗ Branch 589 not taken.
✗ Branch 590 not taken.
✗ Branch 592 not taken.
✗ Branch 593 not taken.
✗ Branch 595 not taken.
✗ Branch 596 not taken.
✗ Branch 598 not taken.
✗ Branch 599 not taken.
✗ Branch 601 not taken.
✗ Branch 602 not taken.
✗ Branch 604 not taken.
✗ Branch 605 not taken.
✗ Branch 607 not taken.
✗ Branch 608 not taken.
✗ Branch 610 not taken.
✗ Branch 611 not taken.
✗ Branch 613 not taken.
✗ Branch 614 not taken.
✗ Branch 616 not taken.
✗ Branch 617 not taken.
✗ Branch 619 not taken.
✗ Branch 620 not taken.
✗ Branch 622 not taken.
✗ Branch 623 not taken.
✗ Branch 625 not taken.
✗ Branch 626 not taken.
✗ Branch 628 not taken.
✗ Branch 629 not taken.
✗ Branch 631 not taken.
✗ Branch 632 not taken.
✗ Branch 634 not taken.
✗ Branch 635 not taken.
✗ Branch 637 not taken.
✗ Branch 638 not taken.
✗ Branch 640 not taken.
✗ Branch 641 not taken.
✗ Branch 643 not taken.
✗ Branch 644 not taken.
✗ Branch 646 not taken.
✗ Branch 647 not taken.
✗ Branch 649 not taken.
✗ Branch 650 not taken.
✗ Branch 652 not taken.
✗ Branch 653 not taken.
✗ Branch 655 not taken.
✗ Branch 656 not taken.
✗ Branch 658 not taken.
✗ Branch 659 not taken.
✗ Branch 661 not taken.
✗ Branch 662 not taken.
✗ Branch 664 not taken.
✗ Branch 665 not taken.
✗ Branch 667 not taken.
✗ Branch 668 not taken.
✗ Branch 670 not taken.
✗ Branch 671 not taken.
✗ Branch 673 not taken.
✗ Branch 674 not taken.
✗ Branch 676 not taken.
✗ Branch 677 not taken.
✗ Branch 679 not taken.
✗ Branch 680 not taken.
✗ Branch 682 not taken.
✗ Branch 683 not taken.
✗ Branch 685 not taken.
✗ Branch 686 not taken.
✗ Branch 688 not taken.
✗ Branch 689 not taken.
✗ Branch 691 not taken.
✗ Branch 692 not taken.
✗ Branch 694 not taken.
✗ Branch 695 not taken.
✗ Branch 697 not taken.
✗ Branch 698 not taken.
✗ Branch 700 not taken.
✗ Branch 701 not taken.
✗ Branch 703 not taken.
✗ Branch 704 not taken.
✗ Branch 706 not taken.
✗ Branch 707 not taken.
✗ Branch 709 not taken.
✗ Branch 710 not taken.
✗ Branch 712 not taken.
✗ Branch 713 not taken.
✗ Branch 715 not taken.
✗ Branch 716 not taken.
✗ Branch 718 not taken.
✗ Branch 719 not taken.
✗ Branch 721 not taken.
✗ Branch 722 not taken.
✗ Branch 724 not taken.
✗ Branch 725 not taken.
✗ Branch 727 not taken.
✗ Branch 728 not taken.
✗ Branch 730 not taken.
✗ Branch 731 not taken.
✗ Branch 733 not taken.
✗ Branch 734 not taken.
✗ Branch 736 not taken.
✗ Branch 737 not taken.
✗ Branch 739 not taken.
✗ Branch 740 not taken.
✗ Branch 742 not taken.
✗ Branch 743 not taken.
✗ Branch 745 not taken.
✗ Branch 746 not taken.
✗ Branch 748 not taken.
✗ Branch 749 not taken.
✗ Branch 751 not taken.
✗ Branch 752 not taken.
✗ Branch 754 not taken.
✗ Branch 755 not taken.
✗ Branch 757 not taken.
✗ Branch 758 not taken.
✗ Branch 760 not taken.
✗ Branch 761 not taken.
✗ Branch 763 not taken.
✗ Branch 764 not taken.
✗ Branch 766 not taken.
✗ Branch 767 not taken.
✗ Branch 769 not taken.
✗ Branch 770 not taken.
✗ Branch 772 not taken.
✗ Branch 773 not taken.
✗ Branch 775 not taken.
✗ Branch 776 not taken.
✗ Branch 778 not taken.
✗ Branch 779 not taken.
✗ Branch 781 not taken.
✗ Branch 782 not taken.
✗ Branch 784 not taken.
✗ Branch 785 not taken.
✗ Branch 787 not taken.
✗ Branch 788 not taken.
✗ Branch 790 not taken.
✗ Branch 791 not taken.
✗ Branch 793 not taken.
✗ Branch 794 not taken.
✗ Branch 796 not taken.
✗ Branch 797 not taken.
✗ Branch 799 not taken.
✗ Branch 800 not taken.
✗ Branch 802 not taken.
✗ Branch 803 not taken.
✗ Branch 805 not taken.
✗ Branch 806 not taken.
✗ Branch 808 not taken.
✗ Branch 809 not taken.
✗ Branch 811 not taken.
✗ Branch 812 not taken.
✗ Branch 814 not taken.
✗ Branch 815 not taken.
✗ Branch 817 not taken.
✗ Branch 818 not taken.
✗ Branch 820 not taken.
✗ Branch 821 not taken.
✗ Branch 823 not taken.
✗ Branch 824 not taken.
✗ Branch 826 not taken.
✗ Branch 827 not taken.
✗ Branch 829 not taken.
✗ Branch 830 not taken.
✗ Branch 832 not taken.
✗ Branch 833 not taken.
✗ Branch 835 not taken.
✗ Branch 836 not taken.
✗ Branch 838 not taken.
✗ Branch 839 not taken.
✗ Branch 841 not taken.
✗ Branch 842 not taken.
✗ Branch 844 not taken.
✗ Branch 845 not taken.
✗ Branch 847 not taken.
✗ Branch 848 not taken.
✗ Branch 850 not taken.
✗ Branch 851 not taken.
✗ Branch 853 not taken.
✗ Branch 854 not taken.
✗ Branch 856 not taken.
✗ Branch 857 not taken.
✗ Branch 859 not taken.
✗ Branch 860 not taken.
✗ Branch 862 not taken.
✗ Branch 863 not taken.
✗ Branch 865 not taken.
✗ Branch 866 not taken.
✗ Branch 868 not taken.
✗ Branch 869 not taken.
✗ Branch 871 not taken.
✗ Branch 872 not taken.
✗ Branch 874 not taken.
✗ Branch 875 not taken.
✗ Branch 877 not taken.
✗ Branch 878 not taken.
✗ Branch 880 not taken.
✗ Branch 881 not taken.
✗ Branch 883 not taken.
✗ Branch 884 not taken.
✗ Branch 886 not taken.
✗ Branch 887 not taken.
✗ Branch 889 not taken.
✗ Branch 890 not taken.
✗ Branch 892 not taken.
✗ Branch 893 not taken.
✗ Branch 895 not taken.
✗ Branch 896 not taken.
✗ Branch 898 not taken.
✗ Branch 899 not taken.
✗ Branch 901 not taken.
✗ Branch 902 not taken.
✗ Branch 904 not taken.
✗ Branch 905 not taken.
✗ Branch 907 not taken.
✗ Branch 908 not taken.
✗ Branch 910 not taken.
✗ Branch 911 not taken.
✗ Branch 913 not taken.
✗ Branch 914 not taken.
✗ Branch 916 not taken.
✗ Branch 917 not taken.
✗ Branch 919 not taken.
✗ Branch 920 not taken.
✗ Branch 922 not taken.
✗ Branch 923 not taken.
✗ Branch 925 not taken.
✗ Branch 926 not taken.
✗ Branch 928 not taken.
✗ Branch 929 not taken.
✗ Branch 931 not taken.
✗ Branch 932 not taken.
✗ Branch 934 not taken.
✗ Branch 935 not taken.
✗ Branch 937 not taken.
✗ Branch 938 not taken.
✗ Branch 940 not taken.
✗ Branch 941 not taken.
✗ Branch 943 not taken.
✗ Branch 944 not taken.
✗ Branch 946 not taken.
✗ Branch 947 not taken.
✗ Branch 949 not taken.
✗ Branch 950 not taken.
✗ Branch 952 not taken.
✗ Branch 953 not taken.
✗ Branch 955 not taken.
✗ Branch 956 not taken.
✗ Branch 958 not taken.
✗ Branch 959 not taken.
✗ Branch 961 not taken.
✗ Branch 962 not taken.
✗ Branch 964 not taken.
✗ Branch 965 not taken.
✗ Branch 967 not taken.
✗ Branch 968 not taken.
✗ Branch 970 not taken.
✗ Branch 971 not taken.
✗ Branch 973 not taken.
✗ Branch 974 not taken.
✗ Branch 976 not taken.
✗ Branch 977 not taken.
✗ Branch 979 not taken.
✗ Branch 980 not taken.
✗ Branch 982 not taken.
✗ Branch 983 not taken.
✗ Branch 985 not taken.
✗ Branch 986 not taken.
✗ Branch 988 not taken.
✗ Branch 989 not taken.
✗ Branch 991 not taken.
✗ Branch 992 not taken.
✗ Branch 994 not taken.
✗ Branch 995 not taken.
✗ Branch 997 not taken.
✗ Branch 998 not taken.
✗ Branch 1000 not taken.
✗ Branch 1001 not taken.
✗ Branch 1003 not taken.
✗ Branch 1004 not taken.
✗ Branch 1006 not taken.
✗ Branch 1007 not taken.
✗ Branch 1009 not taken.
✗ Branch 1010 not taken.
✗ Branch 1012 not taken.
✗ Branch 1013 not taken.
✗ Branch 1015 not taken.
✗ Branch 1016 not taken.
✗ Branch 1018 not taken.
✗ Branch 1019 not taken.
✗ Branch 1021 not taken.
✗ Branch 1022 not taken.
✗ Branch 1024 not taken.
✗ Branch 1025 not taken.
✗ Branch 1027 not taken.
✗ Branch 1028 not taken.
✗ Branch 1030 not taken.
✗ Branch 1031 not taken.
✗ Branch 1033 not taken.
✗ Branch 1034 not taken.
✗ Branch 1036 not taken.
✗ Branch 1037 not taken.
✗ Branch 1039 not taken.
✗ Branch 1040 not taken.
✗ Branch 1042 not taken.
✗ Branch 1043 not taken.
✗ Branch 1045 not taken.
✗ Branch 1046 not taken.
✗ Branch 1048 not taken.
✗ Branch 1049 not taken.
✗ Branch 1051 not taken.
✗ Branch 1052 not taken.
✗ Branch 1054 not taken.
✗ Branch 1055 not taken.
✗ Branch 1057 not taken.
✗ Branch 1058 not taken.
✗ Branch 1060 not taken.
✗ Branch 1061 not taken.
✗ Branch 1063 not taken.
✗ Branch 1064 not taken.
✗ Branch 1066 not taken.
✗ Branch 1067 not taken.
✗ Branch 1069 not taken.
✗ Branch 1070 not taken.
✗ Branch 1072 not taken.
✗ Branch 1073 not taken.
✗ Branch 1075 not taken.
✗ Branch 1076 not taken.
✗ Branch 1078 not taken.
✗ Branch 1079 not taken.
✗ Branch 1081 not taken.
✗ Branch 1082 not taken.
✗ Branch 1084 not taken.
✗ Branch 1085 not taken.
✗ Branch 1087 not taken.
✗ Branch 1088 not taken.
✗ Branch 1090 not taken.
✗ Branch 1091 not taken.
✗ Branch 1093 not taken.
✗ Branch 1094 not taken.
✗ Branch 1096 not taken.
✗ Branch 1097 not taken.
✗ Branch 1099 not taken.
✗ Branch 1100 not taken.
✗ Branch 1102 not taken.
✗ Branch 1103 not taken.
✗ Branch 1105 not taken.
✗ Branch 1106 not taken.
✗ Branch 1108 not taken.
✗ Branch 1109 not taken.
✗ Branch 1111 not taken.
✗ Branch 1112 not taken.
✗ Branch 1114 not taken.
✗ Branch 1115 not taken.
✗ Branch 1117 not taken.
✗ Branch 1118 not taken.
✗ Branch 1120 not taken.
✗ Branch 1121 not taken.
✗ Branch 1123 not taken.
✗ Branch 1124 not taken.
✗ Branch 1126 not taken.
✗ Branch 1127 not taken.
✗ Branch 1129 not taken.
✗ Branch 1130 not taken.
✗ Branch 1132 not taken.
✗ Branch 1133 not taken.
✗ Branch 1135 not taken.
✗ Branch 1136 not taken.
✗ Branch 1138 not taken.
✗ Branch 1139 not taken.
✗ Branch 1141 not taken.
✗ Branch 1142 not taken.
✗ Branch 1144 not taken.
✗ Branch 1145 not taken.
✗ Branch 1147 not taken.
✗ Branch 1148 not taken.
✗ Branch 1150 not taken.
✗ Branch 1151 not taken.
✗ Branch 1153 not taken.
✗ Branch 1154 not taken.
✗ Branch 1156 not taken.
✗ Branch 1157 not taken.
✗ Branch 1159 not taken.
✗ Branch 1160 not taken.
✗ Branch 1162 not taken.
✗ Branch 1163 not taken.
✗ Branch 1165 not taken.
✗ Branch 1166 not taken.
✗ Branch 1168 not taken.
✗ Branch 1169 not taken.
✗ Branch 1171 not taken.
✗ Branch 1172 not taken.
✗ Branch 1174 not taken.
✗ Branch 1175 not taken.
✗ Branch 1177 not taken.
✗ Branch 1178 not taken.
✗ Branch 1180 not taken.
✗ Branch 1181 not taken.
✗ Branch 1183 not taken.
✗ Branch 1184 not taken.
✗ Branch 1186 not taken.
✗ Branch 1187 not taken.
✗ Branch 1189 not taken.
✗ Branch 1190 not taken.
✗ Branch 1192 not taken.
✗ Branch 1193 not taken.
✗ Branch 1195 not taken.
✗ Branch 1196 not taken.
✗ Branch 1198 not taken.
✗ Branch 1199 not taken.
✗ Branch 1201 not taken.
✗ Branch 1202 not taken.
✗ Branch 1204 not taken.
✗ Branch 1205 not taken.
✗ Branch 1207 not taken.
✗ Branch 1208 not taken.
✗ Branch 1210 not taken.
✗ Branch 1211 not taken.
✗ Branch 1213 not taken.
✗ Branch 1214 not taken.
✗ Branch 1216 not taken.
✗ Branch 1217 not taken.
✗ Branch 1219 not taken.
✗ Branch 1220 not taken.
✗ Branch 1222 not taken.
✗ Branch 1223 not taken.
✗ Branch 1225 not taken.
✗ Branch 1226 not taken.
✗ Branch 1228 not taken.
✗ Branch 1229 not taken.
✗ Branch 1231 not taken.
✗ Branch 1232 not taken.
✗ Branch 1234 not taken.
✗ Branch 1235 not taken.
✗ Branch 1237 not taken.
✗ Branch 1238 not taken.
✗ Branch 1240 not taken.
✗ Branch 1241 not taken.
✗ Branch 1243 not taken.
✗ Branch 1244 not taken.
✗ Branch 1246 not taken.
✗ Branch 1247 not taken.
✗ Branch 1249 not taken.
✗ Branch 1250 not taken.
✗ Branch 1252 not taken.
✗ Branch 1253 not taken.
✗ Branch 1255 not taken.
✗ Branch 1256 not taken.
✗ Branch 1258 not taken.
✗ Branch 1259 not taken.
✗ Branch 1261 not taken.
✗ Branch 1262 not taken.
✗ Branch 1264 not taken.
✗ Branch 1265 not taken.
✗ Branch 1267 not taken.
✗ Branch 1268 not taken.
✗ Branch 1270 not taken.
✗ Branch 1271 not taken.
✗ Branch 1273 not taken.
✗ Branch 1274 not taken.
✗ Branch 1276 not taken.
✗ Branch 1277 not taken.
✗ Branch 1279 not taken.
✗ Branch 1280 not taken.
✗ Branch 1282 not taken.
✗ Branch 1283 not taken.
✗ Branch 1285 not taken.
✗ Branch 1286 not taken.
✗ Branch 1288 not taken.
✗ Branch 1289 not taken.
✗ Branch 1291 not taken.
✗ Branch 1292 not taken.
✗ Branch 1294 not taken.
✗ Branch 1295 not taken.
✗ Branch 1297 not taken.
✗ Branch 1298 not taken.
✗ Branch 1300 not taken.
✗ Branch 1301 not taken.
✗ Branch 1303 not taken.
✗ Branch 1304 not taken.
✗ Branch 1306 not taken.
✗ Branch 1307 not taken.
✗ Branch 1309 not taken.
✗ Branch 1310 not taken.
✗ Branch 1312 not taken.
✗ Branch 1313 not taken.
✗ Branch 1315 not taken.
✗ Branch 1316 not taken.
✗ Branch 1318 not taken.
✗ Branch 1319 not taken.
✗ Branch 1321 not taken.
✗ Branch 1322 not taken.
✗ Branch 1324 not taken.
✗ Branch 1325 not taken.
✗ Branch 1327 not taken.
✗ Branch 1328 not taken.
✗ Branch 1330 not taken.
✗ Branch 1331 not taken.
✗ Branch 1333 not taken.
✗ Branch 1334 not taken.
✗ Branch 1336 not taken.
✗ Branch 1337 not taken.
✗ Branch 1339 not taken.
✗ Branch 1340 not taken.
✗ Branch 1342 not taken.
✗ Branch 1343 not taken.
✗ Branch 1345 not taken.
✗ Branch 1346 not taken.
✗ Branch 1348 not taken.
✗ Branch 1349 not taken.
✗ Branch 1351 not taken.
✗ Branch 1352 not taken.
✗ Branch 1354 not taken.
✗ Branch 1355 not taken.
✗ Branch 1357 not taken.
✗ Branch 1358 not taken.
✗ Branch 1360 not taken.
✗ Branch 1361 not taken.
✗ Branch 1363 not taken.
✗ Branch 1364 not taken.
✗ Branch 1366 not taken.
✗ Branch 1367 not taken.
✗ Branch 1369 not taken.
✗ Branch 1370 not taken.
✗ Branch 1372 not taken.
✗ Branch 1373 not taken.
✗ Branch 1375 not taken.
✗ Branch 1376 not taken.
✗ Branch 1378 not taken.
✗ Branch 1379 not taken.
✗ Branch 1381 not taken.
✗ Branch 1382 not taken.
✗ Branch 1384 not taken.
✗ Branch 1385 not taken.
✗ Branch 1387 not taken.
✗ Branch 1388 not taken.
✗ Branch 1390 not taken.
✗ Branch 1391 not taken.
21 ValueOnIter beginValueOn() { return ValueOnIter(*this); }
1037 ValueOnCIter beginValueOn() const { return ValueOnCIter(*this); }
1038
40/69
✓ Branch 1 taken 16 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 15 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 16 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✓ Branch 10 taken 5 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 times.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 times.
✓ Branch 19 taken 4 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 1 times.
✓ Branch 22 taken 3 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✓ Branch 25 taken 4 times.
✗ Branch 26 not taken.
✓ Branch 27 taken 1 times.
✓ Branch 28 taken 4 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 1 times.
✓ Branch 31 taken 4 times.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
✓ Branch 34 taken 4 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 4 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 3 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 4 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 3 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 3 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 3 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 3 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 1 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 1 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 1 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
159 ValueOnCIter cbeginValueOn() const { return ValueOnCIter(*this); }
1039 //@}
1040 //@{
1041 /// Return an iterator over inactive values (tile and voxel) across all nodes.
1042
4/8
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
15 ValueOffIter beginValueOff() { return ValueOffIter(*this); }
1043 ValueOffCIter beginValueOff() const { return ValueOffCIter(*this); }
1044
16/32
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
28 ValueOffCIter cbeginValueOff() const { return ValueOffCIter(*this); }
1045 //@}
1046
1047 /// @brief Return an iterator of type @c IterT (for example, begin<ValueOnIter>() is
1048 /// equivalent to beginValueOn()).
1049 template<typename IterT> IterT begin();
1050 /// @brief Return a const iterator of type CIterT (for example, cbegin<ValueOnCIter>()
1051 /// is equivalent to cbeginValueOn()).
1052 template<typename CIterT> CIterT cbegin() const;
1053
1054
1055 protected:
1056 using AccessorRegistry = tbb::concurrent_hash_map<ValueAccessorBase<Tree, true>*, bool>;
1057 using ConstAccessorRegistry = tbb::concurrent_hash_map<ValueAccessorBase<const Tree, true>*, bool>;
1058
1059 /// @brief Notify all registered accessors, by calling ValueAccessor::release(),
1060 /// that this tree is about to be deleted.
1061 void releaseAllAccessors();
1062
1063 // TBB body object used to deallocates nodes in parallel.
1064 template<typename NodeType>
1065 struct DeallocateNodes {
1066
61/92
✓ Branch 0 taken 11134 times.
✓ Branch 1 taken 29905 times.
✓ Branch 2 taken 13717 times.
✓ Branch 3 taken 27322 times.
✓ Branch 4 taken 2229 times.
✓ Branch 5 taken 1741 times.
✓ Branch 6 taken 3027 times.
✓ Branch 7 taken 943 times.
✓ Branch 8 taken 3953 times.
✓ Branch 9 taken 1755 times.
✓ Branch 10 taken 4767 times.
✓ Branch 11 taken 941 times.
✓ Branch 12 taken 257 times.
✓ Branch 13 taken 239 times.
✓ Branch 14 taken 392 times.
✓ Branch 15 taken 104 times.
✓ Branch 16 taken 118 times.
✓ Branch 17 taken 116 times.
✓ Branch 18 taken 234 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 169 times.
✓ Branch 21 taken 187 times.
✓ Branch 22 taken 297 times.
✓ Branch 23 taken 59 times.
✓ Branch 24 taken 127 times.
✓ Branch 25 taken 119 times.
✓ Branch 26 taken 246 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 122 times.
✓ Branch 29 taken 121 times.
✓ Branch 30 taken 243 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 137 times.
✓ Branch 33 taken 138 times.
✓ Branch 34 taken 274 times.
✓ Branch 35 taken 1 times.
✓ Branch 36 taken 195 times.
✓ Branch 37 taken 196 times.
✓ Branch 38 taken 390 times.
✓ Branch 39 taken 1 times.
✓ Branch 40 taken 171 times.
✓ Branch 41 taken 167 times.
✓ Branch 42 taken 338 times.
✗ Branch 43 not taken.
✓ Branch 44 taken 108 times.
✓ Branch 45 taken 108 times.
✓ Branch 46 taken 216 times.
✗ Branch 47 not taken.
✓ Branch 48 taken 108 times.
✓ Branch 49 taken 108 times.
✓ Branch 50 taken 216 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 108 times.
✓ Branch 53 taken 108 times.
✓ Branch 54 taken 216 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 76 times.
✓ Branch 61 taken 76 times.
✓ Branch 62 taken 152 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 369 times.
✓ Branch 65 taken 363 times.
✓ Branch 66 taken 732 times.
✗ Branch 67 not taken.
✓ Branch 68 taken 188 times.
✓ Branch 69 taken 188 times.
✓ Branch 70 taken 376 times.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✓ Branch 76 taken 366 times.
✓ Branch 77 taken 366 times.
✓ Branch 78 taken 732 times.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
111872 DeallocateNodes(std::vector<NodeType*>& nodes)
1067
97/184
✓ Branch 0 taken 11134 times.
✓ Branch 1 taken 29905 times.
✓ Branch 3 taken 41039 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 13717 times.
✓ Branch 6 taken 27322 times.
✓ Branch 8 taken 41039 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2229 times.
✓ Branch 11 taken 1741 times.
✓ Branch 13 taken 3970 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 3027 times.
✓ Branch 16 taken 943 times.
✓ Branch 18 taken 3970 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 3953 times.
✓ Branch 21 taken 1755 times.
✓ Branch 23 taken 5708 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 4767 times.
✓ Branch 26 taken 941 times.
✓ Branch 28 taken 5708 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 257 times.
✓ Branch 31 taken 239 times.
✓ Branch 33 taken 496 times.
✗ Branch 34 not taken.
✓ Branch 35 taken 392 times.
✓ Branch 36 taken 104 times.
✓ Branch 38 taken 496 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 118 times.
✓ Branch 41 taken 116 times.
✓ Branch 43 taken 234 times.
✗ Branch 44 not taken.
✓ Branch 45 taken 234 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 234 times.
✗ Branch 49 not taken.
✓ Branch 50 taken 169 times.
✓ Branch 51 taken 187 times.
✓ Branch 53 taken 356 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 297 times.
✓ Branch 56 taken 59 times.
✓ Branch 58 taken 356 times.
✗ Branch 59 not taken.
✓ Branch 60 taken 127 times.
✓ Branch 61 taken 119 times.
✓ Branch 63 taken 246 times.
✗ Branch 64 not taken.
✓ Branch 65 taken 246 times.
✗ Branch 66 not taken.
✓ Branch 68 taken 246 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 122 times.
✓ Branch 71 taken 121 times.
✓ Branch 73 taken 243 times.
✗ Branch 74 not taken.
✓ Branch 75 taken 243 times.
✗ Branch 76 not taken.
✓ Branch 78 taken 243 times.
✗ Branch 79 not taken.
✓ Branch 80 taken 137 times.
✓ Branch 81 taken 138 times.
✓ Branch 83 taken 275 times.
✗ Branch 84 not taken.
✓ Branch 85 taken 274 times.
✓ Branch 86 taken 1 times.
✓ Branch 88 taken 275 times.
✗ Branch 89 not taken.
✓ Branch 90 taken 195 times.
✓ Branch 91 taken 196 times.
✓ Branch 93 taken 391 times.
✗ Branch 94 not taken.
✓ Branch 95 taken 390 times.
✓ Branch 96 taken 1 times.
✓ Branch 98 taken 391 times.
✗ Branch 99 not taken.
✓ Branch 100 taken 171 times.
✓ Branch 101 taken 167 times.
✓ Branch 103 taken 338 times.
✗ Branch 104 not taken.
✓ Branch 105 taken 338 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 338 times.
✗ Branch 109 not taken.
✓ Branch 110 taken 108 times.
✓ Branch 111 taken 108 times.
✓ Branch 113 taken 216 times.
✗ Branch 114 not taken.
✓ Branch 115 taken 216 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 216 times.
✗ Branch 119 not taken.
✓ Branch 120 taken 108 times.
✓ Branch 121 taken 108 times.
✓ Branch 123 taken 216 times.
✗ Branch 124 not taken.
✓ Branch 125 taken 216 times.
✗ Branch 126 not taken.
✓ Branch 128 taken 216 times.
✗ Branch 129 not taken.
✓ Branch 130 taken 108 times.
✓ Branch 131 taken 108 times.
✓ Branch 133 taken 216 times.
✗ Branch 134 not taken.
✓ Branch 135 taken 216 times.
✗ Branch 136 not taken.
✓ Branch 138 taken 216 times.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 141 not taken.
✗ Branch 143 not taken.
✗ Branch 144 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✓ Branch 150 taken 76 times.
✓ Branch 151 taken 76 times.
✓ Branch 153 taken 152 times.
✗ Branch 154 not taken.
✓ Branch 155 taken 152 times.
✗ Branch 156 not taken.
✓ Branch 158 taken 152 times.
✗ Branch 159 not taken.
✓ Branch 160 taken 369 times.
✓ Branch 161 taken 363 times.
✓ Branch 163 taken 732 times.
✗ Branch 164 not taken.
✓ Branch 165 taken 732 times.
✗ Branch 166 not taken.
✓ Branch 168 taken 732 times.
✗ Branch 169 not taken.
✓ Branch 170 taken 188 times.
✓ Branch 171 taken 188 times.
✓ Branch 173 taken 376 times.
✗ Branch 174 not taken.
✓ Branch 175 taken 376 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 376 times.
✗ Branch 179 not taken.
✗ Branch 180 not taken.
✗ Branch 181 not taken.
✗ Branch 183 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✓ Branch 190 taken 366 times.
✓ Branch 191 taken 366 times.
✓ Branch 193 taken 732 times.
✗ Branch 194 not taken.
✓ Branch 195 taken 732 times.
✗ Branch 196 not taken.
✓ Branch 198 taken 732 times.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 201 not taken.
✗ Branch 203 not taken.
✗ Branch 204 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 210 not taken.
✗ Branch 211 not taken.
✗ Branch 213 not taken.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✗ Branch 216 not taken.
✗ Branch 218 not taken.
✗ Branch 219 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 225 not taken.
✗ Branch 226 not taken.
✗ Branch 228 not taken.
✗ Branch 229 not taken.
158372 : mNodes(nodes.empty() ? nullptr : &nodes.front()) { }
1068 471156 void operator()(const tbb::blocked_range<size_t>& range) const {
1069
2/2
✓ Branch 0 taken 24765872 times.
✓ Branch 1 taken 235578 times.
50002900 for (size_t n = range.begin(), N = range.end(); n < N; ++n) {
1070
1/2
✓ Branch 0 taken 24765872 times.
✗ Branch 1 not taken.
53102886 delete mNodes[n]; mNodes[n] = nullptr;
1071 }
1072 471156 }
1073 NodeType ** const mNodes;
1074 };
1075
1076 //
1077 // Data members
1078 //
1079 RootNodeType mRoot; // root node of the tree
1080 mutable AccessorRegistry mAccessorRegistry;
1081 mutable ConstAccessorRegistry mConstAccessorRegistry;
1082
1083 static std::unique_ptr<const Name> sTreeTypeName;
1084 }; // end of Tree class
1085
1086 template<typename _RootNodeType>
1087 std::unique_ptr<const Name> Tree<_RootNodeType>::sTreeTypeName;
1088
1089
1090 /// @brief Tree3<T, N1, N2>::Type is the type of a three-level tree
1091 /// (Root, Internal, Leaf) with value type T and
1092 /// internal and leaf node log dimensions N1 and N2, respectively.
1093 /// @note This is NOT the standard tree configuration (Tree4 is).
1094 template<typename T, Index N1=4, Index N2=3>
1095 struct Tree3 {
1096 using Type = Tree<RootNode<InternalNode<LeafNode<T, N2>, N1>>>;
1097 };
1098
1099
1100 /// @brief Tree4<T, N1, N2, N3>::Type is the type of a four-level tree
1101 /// (Root, Internal, Internal, Leaf) with value type T and
1102 /// internal and leaf node log dimensions N1, N2 and N3, respectively.
1103 /// @note This is the standard tree configuration.
1104 template<typename T, Index N1=5, Index N2=4, Index N3=3>
1105 struct Tree4 {
1106 using Type = Tree<RootNode<InternalNode<InternalNode<LeafNode<T, N3>, N2>, N1>>>;
1107 };
1108
1109 /// @brief Tree5<T, N1, N2, N3, N4>::Type is the type of a five-level tree
1110 /// (Root, Internal, Internal, Internal, Leaf) with value type T and
1111 /// internal and leaf node log dimensions N1, N2, N3 and N4, respectively.
1112 /// @note This is NOT the standard tree configuration (Tree4 is).
1113 template<typename T, Index N1=6, Index N2=5, Index N3=4, Index N4=3>
1114 struct Tree5 {
1115 using Type =
1116 Tree<RootNode<InternalNode<InternalNode<InternalNode<LeafNode<T, N4>, N3>, N2>, N1>>>;
1117 };
1118
1119
1120 ////////////////////////////////////////
1121
1122
1123 inline void
1124 113 TreeBase::readTopology(std::istream& is, bool /*saveFloatAsHalf*/)
1125 {
1126 int32_t bufferCount;
1127 113 is.read(reinterpret_cast<char*>(&bufferCount), sizeof(int32_t));
1128
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 113 times.
113 if (bufferCount != 1) OPENVDB_LOG_WARN("multi-buffer trees are no longer supported");
1129 113 }
1130
1131
1132 inline void
1133 TreeBase::writeTopology(std::ostream& os, bool /*saveFloatAsHalf*/) const
1134 {
1135 150 int32_t bufferCount = 1;
1136 os.write(reinterpret_cast<char*>(&bufferCount), sizeof(int32_t));
1137 }
1138
1139
1140 inline void
1141 TreeBase::print(std::ostream& os, int /*verboseLevel*/) const
1142 {
1143 os << " Tree Type: " << type()
1144 << " Active Voxel Count: " << activeVoxelCount() << std::endl
1145 << " Active tile Count: " << activeTileCount() << std::endl
1146 << " Inactive Voxel Count: " << inactiveVoxelCount() << std::endl
1147 << " Leaf Node Count: " << leafCount() << std::endl
1148 << " Non-leaf Node Count: " << nonLeafCount() << std::endl;
1149 }
1150
1151
1152 ////////////////////////////////////////
1153
1154
1155 //
1156 // Type traits for tree iterators
1157 //
1158
1159 /// @brief TreeIterTraits provides, for all tree iterators, a begin(tree) function
1160 /// that returns an iterator over a tree of arbitrary type.
1161 template<typename TreeT, typename IterT> struct TreeIterTraits;
1162
1163 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::RootNodeType::ChildOnIter> {
1164 static typename TreeT::RootNodeType::ChildOnIter begin(TreeT& tree) {
1165 return tree.beginRootChildren();
1166 }
1167 };
1168
1169 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::RootNodeType::ChildOnCIter> {
1170 static typename TreeT::RootNodeType::ChildOnCIter begin(const TreeT& tree) {
1171 return tree.cbeginRootChildren();
1172 }
1173 };
1174
1175 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::RootNodeType::ChildOffIter> {
1176 static typename TreeT::RootNodeType::ChildOffIter begin(TreeT& tree) {
1177 return tree.beginRootTiles();
1178 }
1179 };
1180
1181 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::RootNodeType::ChildOffCIter> {
1182 static typename TreeT::RootNodeType::ChildOffCIter begin(const TreeT& tree) {
1183 return tree.cbeginRootTiles();
1184 }
1185 };
1186
1187 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::RootNodeType::ChildAllIter> {
1188 static typename TreeT::RootNodeType::ChildAllIter begin(TreeT& tree) {
1189 return tree.beginRootDense();
1190 }
1191 };
1192
1193 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::RootNodeType::ChildAllCIter> {
1194 static typename TreeT::RootNodeType::ChildAllCIter begin(const TreeT& tree) {
1195 return tree.cbeginRootDense();
1196 }
1197 };
1198
1199 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::NodeIter> {
1200 static typename TreeT::NodeIter begin(TreeT& tree) { return tree.beginNode(); }
1201 };
1202
1203 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::NodeCIter> {
1204 static typename TreeT::NodeCIter begin(const TreeT& tree) { return tree.cbeginNode(); }
1205 };
1206
1207 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::LeafIter> {
1208 static typename TreeT::LeafIter begin(TreeT& tree) { return tree.beginLeaf(); }
1209 };
1210
1211 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::LeafCIter> {
1212 static typename TreeT::LeafCIter begin(const TreeT& tree) { return tree.cbeginLeaf(); }
1213 };
1214
1215 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::ValueOnIter> {
1216 static typename TreeT::ValueOnIter begin(TreeT& tree) { return tree.beginValueOn(); }
1217 };
1218
1219 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::ValueOnCIter> {
1220 static typename TreeT::ValueOnCIter begin(const TreeT& tree) { return tree.cbeginValueOn(); }
1221 };
1222
1223 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::ValueOffIter> {
1224 static typename TreeT::ValueOffIter begin(TreeT& tree) { return tree.beginValueOff(); }
1225 };
1226
1227 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::ValueOffCIter> {
1228 static typename TreeT::ValueOffCIter begin(const TreeT& tree) { return tree.cbeginValueOff(); }
1229 };
1230
1231 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::ValueAllIter> {
1232 static typename TreeT::ValueAllIter begin(TreeT& tree) { return tree.beginValueAll(); }
1233 };
1234
1235 template<typename TreeT> struct TreeIterTraits<TreeT, typename TreeT::ValueAllCIter> {
1236 static typename TreeT::ValueAllCIter begin(const TreeT& tree) { return tree.cbeginValueAll(); }
1237 };
1238
1239
1240 template<typename RootNodeType>
1241 template<typename IterT>
1242 inline IterT
1243 Tree<RootNodeType>::begin()
1244 {
1245 1 return TreeIterTraits<Tree, IterT>::begin(*this);
1246 }
1247
1248
1249 template<typename RootNodeType>
1250 template<typename IterT>
1251 inline IterT
1252 Tree<RootNodeType>::cbegin() const
1253 {
1254 return TreeIterTraits<Tree, IterT>::begin(*this);
1255 }
1256
1257
1258 ////////////////////////////////////////
1259
1260
1261 template<typename RootNodeType>
1262 void
1263 226 Tree<RootNodeType>::readTopology(std::istream& is, bool saveFloatAsHalf)
1264 {
1265 226 this->clearAllAccessors();
1266 226 TreeBase::readTopology(is, saveFloatAsHalf);
1267 226 mRoot.readTopology(is, saveFloatAsHalf);
1268 }
1269
1270
1271 template<typename RootNodeType>
1272 void
1273 300 Tree<RootNodeType>::writeTopology(std::ostream& os, bool saveFloatAsHalf) const
1274 {
1275 300 TreeBase::writeTopology(os, saveFloatAsHalf);
1276 300 mRoot.writeTopology(os, saveFloatAsHalf);
1277 }
1278
1279
1280 template<typename RootNodeType>
1281 inline void
1282 528 Tree<RootNodeType>::readBuffers(std::istream &is, bool saveFloatAsHalf)
1283 {
1284 528 this->clearAllAccessors();
1285 528 mRoot.readBuffers(is, saveFloatAsHalf);
1286 }
1287
1288
1289 template<typename RootNodeType>
1290 inline void
1291 8 Tree<RootNodeType>::readBuffers(std::istream &is, const CoordBBox& bbox, bool saveFloatAsHalf)
1292 {
1293 8 this->clearAllAccessors();
1294 8 mRoot.readBuffers(is, bbox, saveFloatAsHalf);
1295 }
1296
1297
1298 template<typename RootNodeType>
1299 inline void
1300 Tree<RootNodeType>::readNonresidentBuffers() const
1301 {
1302 for (LeafCIter it = this->cbeginLeaf(); it; ++it) {
1303 // Retrieving the value of a leaf voxel forces loading of the leaf node's voxel buffer.
1304 it->getValue(Index(0));
1305 }
1306 }
1307
1308
1309 template<typename RootNodeType>
1310 inline void
1311 518 Tree<RootNodeType>::writeBuffers(std::ostream &os, bool saveFloatAsHalf) const
1312 {
1313 518 mRoot.writeBuffers(os, saveFloatAsHalf);
1314 }
1315
1316
1317 template<typename RootNodeType>
1318 inline void
1319
1/2
✓ Branch 1 taken 55936 times.
✗ Branch 2 not taken.
97852 Tree<RootNodeType>::clear()
1320 {
1321 std::vector<LeafNodeType*> leafnodes;
1322 this->stealNodes(leafnodes);
1323
1324
2/6
✓ Branch 1 taken 55936 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 55936 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
97852 tbb::parallel_for(tbb::blocked_range<size_t>(0, leafnodes.size()),
1325 DeallocateNodes<LeafNodeType>(leafnodes));
1326
1327 std::vector<typename RootNodeType::ChildNodeType*> internalNodes;
1328 this->stealNodes(internalNodes);
1329
1330
1/4
✓ Branch 1 taken 55936 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
97852 tbb::parallel_for(tbb::blocked_range<size_t>(0, internalNodes.size()),
1331 DeallocateNodes<typename RootNodeType::ChildNodeType>(internalNodes));
1332
1333 97852 mRoot.clear();
1334
1335
1/2
✓ Branch 1 taken 55936 times.
✗ Branch 2 not taken.
97852 this->clearAllAccessors();
1336 97852 }
1337
1338
1339 ////////////////////////////////////////
1340
1341
1342 template<typename RootNodeType>
1343 inline void
1344
1/2
✓ Branch 1 taken 4971245 times.
✗ Branch 2 not taken.
9925360 Tree<RootNodeType>::attachAccessor(ValueAccessorBase<Tree, true>& accessor) const
1345 {
1346 typename AccessorRegistry::accessor a;
1347
2/6
✓ Branch 1 taken 4971245 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4971245 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
9925360 mAccessorRegistry.insert(a, &accessor);
1348 9925360 }
1349
1350
1351 template<typename RootNodeType>
1352 inline void
1353
1/2
✓ Branch 1 taken 347022 times.
✗ Branch 2 not taken.
640937 Tree<RootNodeType>::attachAccessor(ValueAccessorBase<const Tree, true>& accessor) const
1354 {
1355 typename ConstAccessorRegistry::accessor a;
1356
2/6
✓ Branch 1 taken 347022 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 347022 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
640937 mConstAccessorRegistry.insert(a, &accessor);
1357 640937 }
1358
1359
1360 template<typename RootNodeType>
1361 inline void
1362 Tree<RootNodeType>::releaseAccessor(ValueAccessorBase<Tree, true>& accessor) const
1363 {
1364 4970360 mAccessorRegistry.erase(&accessor);
1365 4970360 }
1366
1367
1368 template<typename RootNodeType>
1369 inline void
1370 Tree<RootNodeType>::releaseAccessor(ValueAccessorBase<const Tree, true>& accessor) const
1371 {
1372 279142 mConstAccessorRegistry.erase(&accessor);
1373 279142 }
1374
1375
1376 template<typename RootNodeType>
1377 inline void
1378 462187 Tree<RootNodeType>::clearAllAccessors()
1379 {
1380 462187 for (typename AccessorRegistry::iterator it = mAccessorRegistry.begin();
1381
2/2
✓ Branch 0 taken 6559 times.
✓ Branch 1 taken 256994 times.
488423 it != mAccessorRegistry.end(); ++it)
1382 {
1383
1/2
✓ Branch 0 taken 6559 times.
✗ Branch 1 not taken.
13118 if (it->first) it->first->clear();
1384 }
1385
1386 462187 for (typename ConstAccessorRegistry::iterator it = mConstAccessorRegistry.begin();
1387
2/2
✓ Branch 0 taken 54 times.
✓ Branch 1 taken 256994 times.
462403 it != mConstAccessorRegistry.end(); ++it)
1388 {
1389
1/2
✓ Branch 0 taken 54 times.
✗ Branch 1 not taken.
108 if (it->first) it->first->clear();
1390 }
1391 462187 }
1392
1393
1394 template<typename RootNodeType>
1395 inline void
1396 90879 Tree<RootNodeType>::releaseAllAccessors()
1397 {
1398 90879 mAccessorRegistry.erase(nullptr);
1399 for (typename AccessorRegistry::iterator it = mAccessorRegistry.begin();
1400
2/2
✓ Branch 0 taken 446 times.
✓ Branch 1 taken 52448 times.
92663 it != mAccessorRegistry.end(); ++it)
1401 {
1402 892 it->first->release();
1403 }
1404 90879 mAccessorRegistry.clear();
1405
1406 90879 mAccessorRegistry.erase(nullptr);
1407 90879 for (typename ConstAccessorRegistry::iterator it = mConstAccessorRegistry.begin();
1408
2/2
✓ Branch 0 taken 17 times.
✓ Branch 1 taken 52448 times.
90947 it != mConstAccessorRegistry.end(); ++it)
1409 {
1410 34 it->first->release();
1411 }
1412 90879 mConstAccessorRegistry.clear();
1413 90879 }
1414
1415
1416 ////////////////////////////////////////
1417
1418
1419 template<typename RootNodeType>
1420 inline const typename RootNodeType::ValueType&
1421 Tree<RootNodeType>::getValue(const Coord& xyz) const
1422 {
1423
177/333
✓ Branch 1 taken 113368 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 54976 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3870 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 7081 times.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 2523 times.
✓ Branch 13 taken 6186 times.
✓ Branch 14 taken 1 times.
✓ Branch 15 taken 2523 times.
✓ Branch 16 taken 9217 times.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 1784 times.
✓ Branch 19 taken 42887 times.
✓ Branch 20 taken 1 times.
✓ Branch 21 taken 1784 times.
✓ Branch 22 taken 42887 times.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 6658 times.
✓ Branch 26 taken 3913 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1345 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 594 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 8000608 times.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 64590 times.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 8000590 times.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 97364 times.
✓ Branch 44 taken 125000 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 97500 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 71656 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 71562 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 373887 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 355481 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 354970 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 309892 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 309887 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 15 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 20 times.
✓ Branch 74 taken 1 times.
✗ Branch 75 not taken.
✓ Branch 76 taken 60 times.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 79 taken 49 times.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 82 taken 12 times.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 85 taken 32779 times.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 88 taken 33290 times.
✓ Branch 89 taken 1 times.
✗ Branch 90 not taken.
✓ Branch 91 taken 254 times.
✓ Branch 92 taken 1 times.
✗ Branch 93 not taken.
✓ Branch 94 taken 7 times.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 97 taken 16 times.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 100 taken 9 times.
✓ Branch 101 taken 1 times.
✗ Branch 102 not taken.
✓ Branch 103 taken 12 times.
✓ Branch 104 taken 1 times.
✗ Branch 105 not taken.
✓ Branch 106 taken 12 times.
✓ Branch 107 taken 1 times.
✗ Branch 108 not taken.
✓ Branch 109 taken 18 times.
✓ Branch 110 taken 1 times.
✗ Branch 111 not taken.
✓ Branch 112 taken 18 times.
✓ Branch 113 taken 1 times.
✗ Branch 114 not taken.
✓ Branch 115 taken 22 times.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
✓ Branch 118 taken 22 times.
✓ Branch 119 taken 1 times.
✗ Branch 120 not taken.
✓ Branch 121 taken 45105 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 20 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 20 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 19 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 1513 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 1513 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 296 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 19 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 9 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 9 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 9 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 9 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 9 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 9 times.
✗ Branch 161 not taken.
✓ Branch 163 taken 9 times.
✗ Branch 164 not taken.
✓ Branch 166 taken 9 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 9 times.
✗ Branch 170 not taken.
✓ Branch 172 taken 9 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 9 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 9 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 9 times.
✗ Branch 182 not taken.
✓ Branch 184 taken 9 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 9 times.
✗ Branch 188 not taken.
✓ Branch 190 taken 9 times.
✗ Branch 191 not taken.
✓ Branch 193 taken 9 times.
✗ Branch 194 not taken.
✓ Branch 196 taken 9 times.
✗ Branch 197 not taken.
✓ Branch 199 taken 125008 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 9 times.
✗ Branch 203 not taken.
✓ Branch 205 taken 9 times.
✗ Branch 206 not taken.
✓ Branch 208 taken 9 times.
✗ Branch 209 not taken.
✓ Branch 211 taken 9 times.
✗ Branch 212 not taken.
✓ Branch 214 taken 9 times.
✗ Branch 215 not taken.
✓ Branch 217 taken 3 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 3 times.
✗ Branch 221 not taken.
✓ Branch 223 taken 3 times.
✗ Branch 224 not taken.
✓ Branch 226 taken 3 times.
✗ Branch 227 not taken.
✓ Branch 229 taken 3 times.
✗ Branch 230 not taken.
✓ Branch 232 taken 3 times.
✗ Branch 233 not taken.
✓ Branch 235 taken 3 times.
✗ Branch 236 not taken.
✓ Branch 238 taken 3 times.
✗ Branch 239 not taken.
✓ Branch 241 taken 3 times.
✗ Branch 242 not taken.
✓ Branch 244 taken 3 times.
✗ Branch 245 not taken.
✓ Branch 247 taken 3 times.
✗ Branch 248 not taken.
✓ Branch 250 taken 3 times.
✗ Branch 251 not taken.
✓ Branch 253 taken 2 times.
✗ Branch 254 not taken.
✓ Branch 256 taken 2 times.
✗ Branch 257 not taken.
✓ Branch 259 taken 2 times.
✗ Branch 260 not taken.
✓ Branch 262 taken 3 times.
✗ Branch 263 not taken.
✓ Branch 265 taken 3 times.
✗ Branch 266 not taken.
✓ Branch 268 taken 3 times.
✗ Branch 269 not taken.
✓ Branch 271 taken 3 times.
✗ Branch 272 not taken.
✓ Branch 274 taken 3 times.
✗ Branch 275 not taken.
✓ Branch 277 taken 3 times.
✗ Branch 278 not taken.
✓ Branch 280 taken 3 times.
✗ Branch 281 not taken.
✓ Branch 283 taken 3 times.
✗ Branch 284 not taken.
✓ Branch 286 taken 3 times.
✗ Branch 287 not taken.
✓ Branch 289 taken 3 times.
✗ Branch 290 not taken.
✓ Branch 292 taken 3 times.
✗ Branch 293 not taken.
✓ Branch 295 taken 3 times.
✗ Branch 296 not taken.
✓ Branch 298 taken 3 times.
✗ Branch 299 not taken.
✓ Branch 301 taken 3 times.
✗ Branch 302 not taken.
✓ Branch 304 taken 3 times.
✗ Branch 305 not taken.
✓ Branch 307 taken 3 times.
✗ Branch 308 not taken.
✓ Branch 310 taken 3 times.
✗ Branch 311 not taken.
✓ Branch 313 taken 3 times.
✗ Branch 314 not taken.
✗ Branch 315 not taken.
✓ Branch 316 taken 3 times.
✗ Branch 317 not taken.
✗ Branch 318 not taken.
✓ Branch 319 taken 3 times.
✗ Branch 320 not taken.
✗ Branch 321 not taken.
✓ Branch 322 taken 3 times.
✗ Branch 323 not taken.
✗ Branch 324 not taken.
✓ Branch 325 taken 3 times.
✗ Branch 326 not taken.
✗ Branch 327 not taken.
✓ Branch 328 taken 3 times.
✗ Branch 329 not taken.
✗ Branch 330 not taken.
✓ Branch 331 taken 3 times.
✗ Branch 332 not taken.
✗ Branch 333 not taken.
✓ Branch 334 taken 2 times.
✗ Branch 335 not taken.
✗ Branch 336 not taken.
✓ Branch 337 taken 2 times.
✗ Branch 338 not taken.
✗ Branch 339 not taken.
✓ Branch 340 taken 2 times.
✗ Branch 341 not taken.
✗ Branch 342 not taken.
✓ Branch 343 taken 2 times.
✗ Branch 344 not taken.
✗ Branch 345 not taken.
✓ Branch 346 taken 2 times.
✗ Branch 347 not taken.
✗ Branch 348 not taken.
✓ Branch 349 taken 2 times.
✗ Branch 350 not taken.
✗ Branch 351 not taken.
✓ Branch 352 taken 2 times.
✗ Branch 353 not taken.
✗ Branch 354 not taken.
✓ Branch 355 taken 2 times.
✗ Branch 356 not taken.
✗ Branch 357 not taken.
✓ Branch 358 taken 2 times.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✓ Branch 361 taken 2 times.
✗ Branch 362 not taken.
✓ Branch 364 taken 2 times.
✗ Branch 365 not taken.
✓ Branch 367 taken 2 times.
✗ Branch 368 not taken.
✓ Branch 370 taken 2 times.
✗ Branch 371 not taken.
✓ Branch 373 taken 2 times.
✗ Branch 374 not taken.
✓ Branch 376 taken 2 times.
✗ Branch 377 not taken.
✓ Branch 379 taken 2 times.
✗ Branch 380 not taken.
✓ Branch 382 taken 2 times.
✗ Branch 383 not taken.
✓ Branch 385 taken 1 times.
✗ Branch 386 not taken.
✓ Branch 388 taken 1 times.
✗ Branch 389 not taken.
✓ Branch 391 taken 1 times.
✗ Branch 392 not taken.
✓ Branch 394 taken 1 times.
✗ Branch 395 not taken.
✓ Branch 397 taken 1 times.
✗ Branch 398 not taken.
✓ Branch 400 taken 1 times.
✗ Branch 401 not taken.
✓ Branch 403 taken 1 times.
✗ Branch 404 not taken.
✓ Branch 406 taken 1 times.
✗ Branch 407 not taken.
✓ Branch 409 taken 1 times.
✗ Branch 410 not taken.
✓ Branch 412 taken 1 times.
✗ Branch 413 not taken.
✓ Branch 415 taken 1 times.
✗ Branch 416 not taken.
✓ Branch 418 taken 1 times.
✗ Branch 419 not taken.
✓ Branch 421 taken 1 times.
✗ Branch 422 not taken.
✓ Branch 424 taken 1 times.
✗ Branch 425 not taken.
✓ Branch 427 taken 1 times.
✗ Branch 428 not taken.
✓ Branch 430 taken 1 times.
✗ Branch 431 not taken.
21536580 return mRoot.getValue(xyz);
1424 }
1425
1426
1427 template<typename RootNodeType>
1428 template<typename AccessT>
1429 inline const typename RootNodeType::ValueType&
1430 Tree<RootNodeType>::getValue(const Coord& xyz, AccessT& accessor) const
1431 {
1432 return accessor.getValue(xyz);
1433 }
1434
1435
1436 template<typename RootNodeType>
1437 inline int
1438 Tree<RootNodeType>::getValueDepth(const Coord& xyz) const
1439 {
1440 310015 return mRoot.getValueDepth(xyz);
1441 }
1442
1443
1444 template<typename RootNodeType>
1445 inline void
1446 Tree<RootNodeType>::setValueOff(const Coord& xyz)
1447 {
1448
9/18
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 3 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
36 mRoot.setValueOff(xyz);
1449 36 }
1450
1451
1452 template<typename RootNodeType>
1453 inline void
1454 Tree<RootNodeType>::setValueOff(const Coord& xyz, const ValueType& value)
1455 {
1456
32/64
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 14 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 5 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 7 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 7 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 7 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 7 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 7 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 7 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 7 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 7 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 7 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 7 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 7 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 7 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 7 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 7 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 7 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 7 times.
✗ Branch 95 not taken.
162 mRoot.setValueOff(xyz, value);
1457 162 }
1458
1459
1460 template<typename RootNodeType>
1461 inline void
1462 Tree<RootNodeType>::setActiveState(const Coord& xyz, bool on)
1463 {
1464
2/4
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
4 mRoot.setActiveState(xyz, on);
1465 4 }
1466
1467
1468 template<typename RootNodeType>
1469 inline void
1470 Tree<RootNodeType>::setValue(const Coord& xyz, const ValueType& value)
1471 {
1472
340/680
✓ Branch 1 taken 30888 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 23653 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 72028 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 17295 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 8037 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 8019 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 8019 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 8019 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 8028 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 25 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 15 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 526 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 15 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 15 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 15 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 22 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 14 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 13 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 13 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 12 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 22 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 22 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 12 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 522 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 12 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 9 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 9 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 15 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 8 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 7 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 7 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 7 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 17 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 17 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 7 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 518 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 64006 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 64006 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 7 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 14 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 6 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 5 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 5 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 5 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 14 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 14 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 4 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 515 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 4 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 4 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 4 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 11 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 4 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 10 times.
✗ Branch 161 not taken.
✓ Branch 163 taken 4 times.
✗ Branch 164 not taken.
✓ Branch 166 taken 4 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 14 times.
✗ Branch 170 not taken.
✓ Branch 172 taken 14 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 4 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 515 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 4 times.
✗ Branch 182 not taken.
✓ Branch 184 taken 4 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 4 times.
✗ Branch 188 not taken.
✓ Branch 190 taken 11 times.
✗ Branch 191 not taken.
✓ Branch 193 taken 4 times.
✗ Branch 194 not taken.
✓ Branch 196 taken 4 times.
✗ Branch 197 not taken.
✓ Branch 199 taken 4 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 4 times.
✗ Branch 203 not taken.
✓ Branch 205 taken 14 times.
✗ Branch 206 not taken.
✓ Branch 208 taken 14 times.
✗ Branch 209 not taken.
✓ Branch 211 taken 4 times.
✗ Branch 212 not taken.
✓ Branch 214 taken 515 times.
✗ Branch 215 not taken.
✓ Branch 217 taken 3 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 3 times.
✗ Branch 221 not taken.
✓ Branch 223 taken 3 times.
✗ Branch 224 not taken.
✓ Branch 226 taken 3 times.
✗ Branch 227 not taken.
✓ Branch 229 taken 3 times.
✗ Branch 230 not taken.
✓ Branch 232 taken 3 times.
✗ Branch 233 not taken.
✓ Branch 235 taken 3 times.
✗ Branch 236 not taken.
✓ Branch 238 taken 3 times.
✗ Branch 239 not taken.
✓ Branch 241 taken 3 times.
✗ Branch 242 not taken.
✓ Branch 244 taken 3 times.
✗ Branch 245 not taken.
✓ Branch 247 taken 3 times.
✗ Branch 248 not taken.
✓ Branch 250 taken 3 times.
✗ Branch 251 not taken.
✓ Branch 253 taken 3 times.
✗ Branch 254 not taken.
✓ Branch 256 taken 3 times.
✗ Branch 257 not taken.
✓ Branch 259 taken 9 times.
✗ Branch 260 not taken.
✓ Branch 262 taken 3 times.
✗ Branch 263 not taken.
✓ Branch 265 taken 3 times.
✗ Branch 266 not taken.
✓ Branch 268 taken 3 times.
✗ Branch 269 not taken.
✓ Branch 271 taken 3 times.
✗ Branch 272 not taken.
✓ Branch 274 taken 3 times.
✗ Branch 275 not taken.
✓ Branch 277 taken 3 times.
✗ Branch 278 not taken.
✓ Branch 280 taken 3 times.
✗ Branch 281 not taken.
✓ Branch 283 taken 3 times.
✗ Branch 284 not taken.
✓ Branch 286 taken 3 times.
✗ Branch 287 not taken.
✓ Branch 289 taken 3 times.
✗ Branch 290 not taken.
✓ Branch 292 taken 3 times.
✗ Branch 293 not taken.
✓ Branch 295 taken 3 times.
✗ Branch 296 not taken.
✓ Branch 298 taken 3 times.
✗ Branch 299 not taken.
✓ Branch 301 taken 3 times.
✗ Branch 302 not taken.
✓ Branch 304 taken 3 times.
✗ Branch 305 not taken.
✓ Branch 307 taken 3 times.
✗ Branch 308 not taken.
✓ Branch 310 taken 3 times.
✗ Branch 311 not taken.
✓ Branch 313 taken 3 times.
✗ Branch 314 not taken.
✓ Branch 316 taken 3 times.
✗ Branch 317 not taken.
✓ Branch 319 taken 3 times.
✗ Branch 320 not taken.
✓ Branch 322 taken 3 times.
✗ Branch 323 not taken.
✓ Branch 325 taken 3 times.
✗ Branch 326 not taken.
✓ Branch 328 taken 3 times.
✗ Branch 329 not taken.
✓ Branch 331 taken 3 times.
✗ Branch 332 not taken.
✓ Branch 334 taken 9 times.
✗ Branch 335 not taken.
✓ Branch 337 taken 3 times.
✗ Branch 338 not taken.
✓ Branch 340 taken 3 times.
✗ Branch 341 not taken.
✓ Branch 343 taken 3 times.
✗ Branch 344 not taken.
✓ Branch 346 taken 3 times.
✗ Branch 347 not taken.
✓ Branch 349 taken 3 times.
✗ Branch 350 not taken.
✓ Branch 352 taken 3 times.
✗ Branch 353 not taken.
✓ Branch 355 taken 3 times.
✗ Branch 356 not taken.
✓ Branch 358 taken 3 times.
✗ Branch 359 not taken.
✓ Branch 361 taken 3 times.
✗ Branch 362 not taken.
✓ Branch 364 taken 3 times.
✗ Branch 365 not taken.
✓ Branch 367 taken 3 times.
✗ Branch 368 not taken.
✓ Branch 370 taken 3 times.
✗ Branch 371 not taken.
✓ Branch 373 taken 3 times.
✗ Branch 374 not taken.
✓ Branch 376 taken 3 times.
✗ Branch 377 not taken.
✓ Branch 379 taken 3 times.
✗ Branch 380 not taken.
✓ Branch 382 taken 3 times.
✗ Branch 383 not taken.
✓ Branch 385 taken 3 times.
✗ Branch 386 not taken.
✓ Branch 388 taken 3 times.
✗ Branch 389 not taken.
✓ Branch 391 taken 3 times.
✗ Branch 392 not taken.
✓ Branch 394 taken 3 times.
✗ Branch 395 not taken.
✓ Branch 397 taken 3 times.
✗ Branch 398 not taken.
✓ Branch 400 taken 3 times.
✗ Branch 401 not taken.
✓ Branch 403 taken 9 times.
✗ Branch 404 not taken.
✓ Branch 406 taken 3 times.
✗ Branch 407 not taken.
✓ Branch 409 taken 3 times.
✗ Branch 410 not taken.
✓ Branch 412 taken 3 times.
✗ Branch 413 not taken.
✓ Branch 415 taken 3 times.
✗ Branch 416 not taken.
✓ Branch 418 taken 3 times.
✗ Branch 419 not taken.
✓ Branch 421 taken 3 times.
✗ Branch 422 not taken.
✓ Branch 424 taken 3 times.
✗ Branch 425 not taken.
✓ Branch 427 taken 3 times.
✗ Branch 428 not taken.
✓ Branch 430 taken 3 times.
✗ Branch 431 not taken.
✓ Branch 433 taken 3 times.
✗ Branch 434 not taken.
✓ Branch 436 taken 3 times.
✗ Branch 437 not taken.
✓ Branch 439 taken 3 times.
✗ Branch 440 not taken.
✓ Branch 442 taken 3 times.
✗ Branch 443 not taken.
✓ Branch 445 taken 3 times.
✗ Branch 446 not taken.
✓ Branch 448 taken 3 times.
✗ Branch 449 not taken.
✓ Branch 451 taken 3 times.
✗ Branch 452 not taken.
✓ Branch 454 taken 3 times.
✗ Branch 455 not taken.
✓ Branch 457 taken 3 times.
✗ Branch 458 not taken.
✓ Branch 460 taken 3 times.
✗ Branch 461 not taken.
✓ Branch 463 taken 3 times.
✗ Branch 464 not taken.
✓ Branch 466 taken 3 times.
✗ Branch 467 not taken.
✓ Branch 469 taken 3 times.
✗ Branch 470 not taken.
✓ Branch 472 taken 3 times.
✗ Branch 473 not taken.
✓ Branch 475 taken 3 times.
✗ Branch 476 not taken.
✓ Branch 478 taken 3 times.
✗ Branch 479 not taken.
✓ Branch 481 taken 3 times.
✗ Branch 482 not taken.
✓ Branch 484 taken 3 times.
✗ Branch 485 not taken.
✓ Branch 487 taken 3 times.
✗ Branch 488 not taken.
✓ Branch 490 taken 3 times.
✗ Branch 491 not taken.
✓ Branch 493 taken 3 times.
✗ Branch 494 not taken.
✓ Branch 496 taken 3 times.
✗ Branch 497 not taken.
✓ Branch 499 taken 3 times.
✗ Branch 500 not taken.
✓ Branch 502 taken 3 times.
✗ Branch 503 not taken.
✓ Branch 505 taken 3 times.
✗ Branch 506 not taken.
✓ Branch 508 taken 3 times.
✗ Branch 509 not taken.
✓ Branch 511 taken 3 times.
✗ Branch 512 not taken.
✓ Branch 514 taken 3 times.
✗ Branch 515 not taken.
✓ Branch 517 taken 3 times.
✗ Branch 518 not taken.
✓ Branch 520 taken 3 times.
✗ Branch 521 not taken.
✓ Branch 523 taken 3 times.
✗ Branch 524 not taken.
✓ Branch 526 taken 3 times.
✗ Branch 527 not taken.
✓ Branch 529 taken 3 times.
✗ Branch 530 not taken.
✓ Branch 532 taken 3 times.
✗ Branch 533 not taken.
✓ Branch 535 taken 3 times.
✗ Branch 536 not taken.
✓ Branch 538 taken 3 times.
✗ Branch 539 not taken.
✓ Branch 541 taken 3 times.
✗ Branch 542 not taken.
✓ Branch 544 taken 3 times.
✗ Branch 545 not taken.
✓ Branch 547 taken 3 times.
✗ Branch 548 not taken.
✓ Branch 550 taken 3 times.
✗ Branch 551 not taken.
✓ Branch 553 taken 3 times.
✗ Branch 554 not taken.
✓ Branch 556 taken 3 times.
✗ Branch 557 not taken.
✓ Branch 559 taken 3 times.
✗ Branch 560 not taken.
✓ Branch 562 taken 3 times.
✗ Branch 563 not taken.
✓ Branch 565 taken 3 times.
✗ Branch 566 not taken.
✓ Branch 568 taken 3 times.
✗ Branch 569 not taken.
✓ Branch 571 taken 3 times.
✗ Branch 572 not taken.
✓ Branch 574 taken 3 times.
✗ Branch 575 not taken.
✓ Branch 577 taken 3 times.
✗ Branch 578 not taken.
✓ Branch 580 taken 3 times.
✗ Branch 581 not taken.
✓ Branch 583 taken 3 times.
✗ Branch 584 not taken.
✓ Branch 586 taken 3 times.
✗ Branch 587 not taken.
✓ Branch 589 taken 2 times.
✗ Branch 590 not taken.
✓ Branch 592 taken 2 times.
✗ Branch 593 not taken.
✓ Branch 595 taken 2 times.
✗ Branch 596 not taken.
✓ Branch 598 taken 2 times.
✗ Branch 599 not taken.
✓ Branch 601 taken 2 times.
✗ Branch 602 not taken.
✓ Branch 604 taken 2 times.
✗ Branch 605 not taken.
✓ Branch 607 taken 2 times.
✗ Branch 608 not taken.
✓ Branch 610 taken 2 times.
✗ Branch 611 not taken.
✓ Branch 613 taken 2 times.
✗ Branch 614 not taken.
✓ Branch 616 taken 2 times.
✗ Branch 617 not taken.
✓ Branch 619 taken 2 times.
✗ Branch 620 not taken.
✓ Branch 622 taken 2 times.
✗ Branch 623 not taken.
✓ Branch 625 taken 2 times.
✗ Branch 626 not taken.
✓ Branch 628 taken 2 times.
✗ Branch 629 not taken.
✓ Branch 631 taken 2 times.
✗ Branch 632 not taken.
✓ Branch 634 taken 2 times.
✗ Branch 635 not taken.
✓ Branch 637 taken 2 times.
✗ Branch 638 not taken.
✓ Branch 640 taken 2 times.
✗ Branch 641 not taken.
✓ Branch 643 taken 2 times.
✗ Branch 644 not taken.
✓ Branch 646 taken 2 times.
✗ Branch 647 not taken.
✓ Branch 649 taken 2 times.
✗ Branch 650 not taken.
✓ Branch 652 taken 2 times.
✗ Branch 653 not taken.
✓ Branch 655 taken 2 times.
✗ Branch 656 not taken.
✓ Branch 658 taken 2 times.
✗ Branch 659 not taken.
✓ Branch 661 taken 2 times.
✗ Branch 662 not taken.
✓ Branch 664 taken 2 times.
✗ Branch 665 not taken.
✓ Branch 667 taken 2 times.
✗ Branch 668 not taken.
✓ Branch 670 taken 2 times.
✗ Branch 671 not taken.
✓ Branch 673 taken 2 times.
✗ Branch 674 not taken.
✓ Branch 676 taken 2 times.
✗ Branch 677 not taken.
✓ Branch 679 taken 2 times.
✗ Branch 680 not taken.
✓ Branch 682 taken 2 times.
✗ Branch 683 not taken.
✓ Branch 685 taken 2 times.
✗ Branch 686 not taken.
✓ Branch 688 taken 2 times.
✗ Branch 689 not taken.
✓ Branch 691 taken 2 times.
✗ Branch 692 not taken.
✓ Branch 694 taken 2 times.
✗ Branch 695 not taken.
✓ Branch 697 taken 2 times.
✗ Branch 698 not taken.
✓ Branch 700 taken 2 times.
✗ Branch 701 not taken.
✓ Branch 703 taken 2 times.
✗ Branch 704 not taken.
✓ Branch 706 taken 2 times.
✗ Branch 707 not taken.
✓ Branch 709 taken 2 times.
✗ Branch 710 not taken.
✓ Branch 712 taken 2 times.
✗ Branch 713 not taken.
✓ Branch 715 taken 2 times.
✗ Branch 716 not taken.
✓ Branch 718 taken 2 times.
✗ Branch 719 not taken.
✓ Branch 721 taken 2 times.
✗ Branch 722 not taken.
✓ Branch 724 taken 2 times.
✗ Branch 725 not taken.
✓ Branch 727 taken 2 times.
✗ Branch 728 not taken.
✓ Branch 730 taken 1 times.
✗ Branch 731 not taken.
✓ Branch 733 taken 1 times.
✗ Branch 734 not taken.
✓ Branch 736 taken 1 times.
✗ Branch 737 not taken.
✓ Branch 739 taken 1 times.
✗ Branch 740 not taken.
✓ Branch 742 taken 1 times.
✗ Branch 743 not taken.
✓ Branch 745 taken 1 times.
✗ Branch 746 not taken.
✓ Branch 748 taken 1 times.
✗ Branch 749 not taken.
✓ Branch 751 taken 1 times.
✗ Branch 752 not taken.
✓ Branch 754 taken 1 times.
✗ Branch 755 not taken.
✓ Branch 757 taken 1 times.
✗ Branch 758 not taken.
✓ Branch 760 taken 1 times.
✗ Branch 761 not taken.
✓ Branch 763 taken 1 times.
✗ Branch 764 not taken.
✓ Branch 766 taken 1 times.
✗ Branch 767 not taken.
✓ Branch 769 taken 1 times.
✗ Branch 770 not taken.
✓ Branch 772 taken 1 times.
✗ Branch 773 not taken.
✓ Branch 775 taken 1 times.
✗ Branch 776 not taken.
✓ Branch 778 taken 1 times.
✗ Branch 779 not taken.
✓ Branch 781 taken 1 times.
✗ Branch 782 not taken.
✓ Branch 784 taken 1 times.
✗ Branch 785 not taken.
✓ Branch 787 taken 1 times.
✗ Branch 788 not taken.
✓ Branch 790 taken 1 times.
✗ Branch 791 not taken.
✓ Branch 793 taken 1 times.
✗ Branch 794 not taken.
✓ Branch 796 taken 1 times.
✗ Branch 797 not taken.
✓ Branch 799 taken 1 times.
✗ Branch 800 not taken.
✓ Branch 802 taken 1 times.
✗ Branch 803 not taken.
✓ Branch 805 taken 1 times.
✗ Branch 806 not taken.
✓ Branch 808 taken 1 times.
✗ Branch 809 not taken.
✓ Branch 811 taken 1 times.
✗ Branch 812 not taken.
✓ Branch 814 taken 1 times.
✗ Branch 815 not taken.
✓ Branch 817 taken 1 times.
✗ Branch 818 not taken.
✓ Branch 820 taken 1 times.
✗ Branch 821 not taken.
✓ Branch 823 taken 1 times.
✗ Branch 824 not taken.
✓ Branch 826 taken 1 times.
✗ Branch 827 not taken.
✓ Branch 829 taken 1 times.
✗ Branch 830 not taken.
✓ Branch 832 taken 1 times.
✗ Branch 833 not taken.
✓ Branch 835 taken 1 times.
✗ Branch 836 not taken.
✓ Branch 838 taken 1 times.
✗ Branch 839 not taken.
✓ Branch 841 taken 1 times.
✗ Branch 842 not taken.
✓ Branch 844 taken 1 times.
✗ Branch 845 not taken.
✓ Branch 847 taken 1 times.
✗ Branch 848 not taken.
✓ Branch 850 taken 1 times.
✗ Branch 851 not taken.
✓ Branch 853 taken 1 times.
✗ Branch 854 not taken.
✓ Branch 856 taken 1 times.
✗ Branch 857 not taken.
✓ Branch 859 taken 1 times.
✗ Branch 860 not taken.
✓ Branch 862 taken 1 times.
✗ Branch 863 not taken.
✓ Branch 865 taken 1 times.
✗ Branch 866 not taken.
✓ Branch 868 taken 1 times.
✗ Branch 869 not taken.
✓ Branch 871 taken 1 times.
✗ Branch 872 not taken.
✓ Branch 874 taken 1 times.
✗ Branch 875 not taken.
✓ Branch 877 taken 1 times.
✗ Branch 878 not taken.
✓ Branch 880 taken 1 times.
✗ Branch 881 not taken.
✓ Branch 883 taken 1 times.
✗ Branch 884 not taken.
✓ Branch 886 taken 1 times.
✗ Branch 887 not taken.
✓ Branch 889 taken 1 times.
✗ Branch 890 not taken.
✓ Branch 892 taken 1 times.
✗ Branch 893 not taken.
✓ Branch 895 taken 1 times.
✗ Branch 896 not taken.
✓ Branch 898 taken 1 times.
✗ Branch 899 not taken.
✓ Branch 901 taken 1 times.
✗ Branch 902 not taken.
✓ Branch 904 taken 1 times.
✗ Branch 905 not taken.
✓ Branch 907 taken 1 times.
✗ Branch 908 not taken.
✓ Branch 910 taken 1 times.
✗ Branch 911 not taken.
✓ Branch 913 taken 1 times.
✗ Branch 914 not taken.
✓ Branch 916 taken 1 times.
✗ Branch 917 not taken.
✓ Branch 919 taken 1 times.
✗ Branch 920 not taken.
✓ Branch 922 taken 1 times.
✗ Branch 923 not taken.
✓ Branch 925 taken 1 times.
✗ Branch 926 not taken.
✓ Branch 928 taken 1 times.
✗ Branch 929 not taken.
✓ Branch 931 taken 1 times.
✗ Branch 932 not taken.
✓ Branch 934 taken 1 times.
✗ Branch 935 not taken.
✓ Branch 937 taken 1 times.
✗ Branch 938 not taken.
✓ Branch 940 taken 1 times.
✗ Branch 941 not taken.
✓ Branch 943 taken 1 times.
✗ Branch 944 not taken.
✓ Branch 946 taken 1 times.
✗ Branch 947 not taken.
✓ Branch 949 taken 1 times.
✗ Branch 950 not taken.
✓ Branch 952 taken 1 times.
✗ Branch 953 not taken.
✓ Branch 955 taken 1 times.
✗ Branch 956 not taken.
✓ Branch 958 taken 1 times.
✗ Branch 959 not taken.
✓ Branch 961 taken 1 times.
✗ Branch 962 not taken.
✓ Branch 964 taken 1 times.
✗ Branch 965 not taken.
✓ Branch 967 taken 1 times.
✗ Branch 968 not taken.
✓ Branch 970 taken 1 times.
✗ Branch 971 not taken.
✓ Branch 973 taken 1 times.
✗ Branch 974 not taken.
✓ Branch 976 taken 1 times.
✗ Branch 977 not taken.
✓ Branch 979 taken 1 times.
✗ Branch 980 not taken.
✓ Branch 982 taken 1 times.
✗ Branch 983 not taken.
✓ Branch 985 taken 1 times.
✗ Branch 986 not taken.
✓ Branch 988 taken 1 times.
✗ Branch 989 not taken.
✓ Branch 991 taken 1 times.
✗ Branch 992 not taken.
✓ Branch 994 taken 1 times.
✗ Branch 995 not taken.
✓ Branch 997 taken 1 times.
✗ Branch 998 not taken.
✓ Branch 1000 taken 1 times.
✗ Branch 1001 not taken.
✓ Branch 1003 taken 1 times.
✗ Branch 1004 not taken.
✓ Branch 1006 taken 1 times.
✗ Branch 1007 not taken.
✓ Branch 1009 taken 1 times.
✗ Branch 1010 not taken.
✓ Branch 1012 taken 1 times.
✗ Branch 1013 not taken.
✓ Branch 1015 taken 1 times.
✗ Branch 1016 not taken.
✓ Branch 1018 taken 1 times.
✗ Branch 1019 not taken.
316242 mRoot.setValueOn(xyz, value);
1473 316242 }
1474
1475 template<typename RootNodeType>
1476 inline void
1477 Tree<RootNodeType>::setValueOnly(const Coord& xyz, const ValueType& value)
1478 {
1479
12/24
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
16 mRoot.setValueOnly(xyz, value);
1480 16 }
1481
1482 template<typename RootNodeType>
1483 template<typename AccessT>
1484 inline void
1485 Tree<RootNodeType>::setValue(const Coord& xyz, const ValueType& value, AccessT& accessor)
1486 {
1487 accessor.setValue(xyz, value);
1488 }
1489
1490
1491 template<typename RootNodeType>
1492 inline void
1493 Tree<RootNodeType>::setValueOn(const Coord& xyz)
1494 {
1495
14/28
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
30 mRoot.setActiveState(xyz, true);
1496 30 }
1497
1498
1499 template<typename RootNodeType>
1500 inline void
1501 Tree<RootNodeType>::setValueOn(const Coord& xyz, const ValueType& value)
1502 {
1503
63/126
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 7 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 1 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 1 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 1 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 7 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 7 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 7 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 7 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 7 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 7 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 7 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 7 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 7 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 7 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 7 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 7 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 7 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 7 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 7 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 7 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 7 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 7 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 7 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 7 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 7 times.
✗ Branch 146 not taken.
✓ Branch 148 taken 7 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 7 times.
✗ Branch 152 not taken.
✓ Branch 154 taken 7 times.
✗ Branch 155 not taken.
✓ Branch 157 taken 7 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 7 times.
✗ Branch 161 not taken.
✓ Branch 163 taken 7 times.
✗ Branch 164 not taken.
✓ Branch 166 taken 7 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 1 times.
✗ Branch 170 not taken.
✓ Branch 172 taken 1 times.
✗ Branch 173 not taken.
✓ Branch 175 taken 1 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 1 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 1 times.
✗ Branch 182 not taken.
✓ Branch 184 taken 1 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 1 times.
✗ Branch 188 not taken.
257 mRoot.setValueOn(xyz, value);
1504 257 }
1505
1506
1507 template<typename RootNodeType>
1508 template<typename ModifyOp>
1509 inline void
1510 Tree<RootNodeType>::modifyValue(const Coord& xyz, const ModifyOp& op)
1511 {
1512
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
7 mRoot.modifyValue(xyz, op);
1513 1 }
1514
1515
1516 template<typename RootNodeType>
1517 template<typename ModifyOp>
1518 inline void
1519 Tree<RootNodeType>::modifyValueAndActiveState(const Coord& xyz, const ModifyOp& op)
1520 {
1521
4/8
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
4 mRoot.modifyValueAndActiveState(xyz, op);
1522 4 }
1523
1524
1525 template<typename RootNodeType>
1526 inline bool
1527 Tree<RootNodeType>::probeValue(const Coord& xyz, ValueType& value) const
1528 {
1529 3595 return mRoot.probeValue(xyz, value);
1530 }
1531
1532
1533 ////////////////////////////////////////
1534
1535
1536 template<typename RootNodeType>
1537 inline void
1538 Tree<RootNodeType>::addTile(Index level, const Coord& xyz,
1539 const ValueType& value, bool active)
1540 {
1541
107/124
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 7 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 3 times.
✓ Branch 8 taken 7 times.
✓ Branch 9 taken 3 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 5 times.
✓ Branch 12 taken 4 times.
✓ Branch 13 taken 2 times.
✓ Branch 14 taken 5 times.
✓ Branch 15 taken 4 times.
✓ Branch 16 taken 2 times.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 3 times.
✓ Branch 19 taken 1 times.
✓ Branch 20 taken 2 times.
✓ Branch 21 taken 3 times.
✓ Branch 22 taken 136 times.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 3 times.
✓ Branch 25 taken 136 times.
✓ Branch 26 taken 2 times.
✓ Branch 27 taken 7 times.
✓ Branch 28 taken 144 times.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 5 times.
✓ Branch 31 taken 144 times.
✓ Branch 32 taken 2 times.
✓ Branch 33 taken 4 times.
✓ Branch 34 taken 153 times.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 3 times.
✓ Branch 37 taken 153 times.
✓ Branch 38 taken 2 times.
✓ Branch 39 taken 2 times.
✓ Branch 40 taken 150 times.
✓ Branch 41 taken 1 times.
✓ Branch 42 taken 1 times.
✓ Branch 43 taken 150 times.
✓ Branch 44 taken 1 times.
✓ Branch 45 taken 1 times.
✓ Branch 46 taken 153 times.
✓ Branch 47 taken 1 times.
✓ Branch 48 taken 1 times.
✓ Branch 49 taken 153 times.
✓ Branch 50 taken 1 times.
✓ Branch 51 taken 1 times.
✓ Branch 52 taken 171 times.
✓ Branch 53 taken 1 times.
✓ Branch 54 taken 1 times.
✓ Branch 55 taken 171 times.
✓ Branch 56 taken 1 times.
✓ Branch 57 taken 1 times.
✓ Branch 58 taken 168 times.
✓ Branch 59 taken 1 times.
✓ Branch 60 taken 1 times.
✓ Branch 61 taken 168 times.
✓ Branch 62 taken 1 times.
✓ Branch 63 taken 1 times.
✓ Branch 64 taken 171 times.
✓ Branch 65 taken 1 times.
✓ Branch 66 taken 1 times.
✓ Branch 67 taken 171 times.
✓ Branch 68 taken 1 times.
✓ Branch 69 taken 1 times.
✓ Branch 70 taken 195 times.
✓ Branch 71 taken 1 times.
✓ Branch 72 taken 1 times.
✓ Branch 73 taken 195 times.
✓ Branch 74 taken 1 times.
✓ Branch 75 taken 1 times.
✓ Branch 76 taken 282 times.
✓ Branch 77 taken 1 times.
✓ Branch 78 taken 1 times.
✓ Branch 79 taken 282 times.
✓ Branch 80 taken 1 times.
✓ Branch 81 taken 1 times.
✓ Branch 82 taken 240 times.
✓ Branch 83 taken 1 times.
✓ Branch 84 taken 1 times.
✓ Branch 85 taken 240 times.
✓ Branch 86 taken 1 times.
✓ Branch 87 taken 1 times.
✓ Branch 88 taken 147 times.
✓ Branch 89 taken 1 times.
✓ Branch 90 taken 1 times.
✓ Branch 91 taken 147 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 147 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 147 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 147 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 147 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 885 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 885 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 102 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 102 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 528 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 528 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 267 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 267 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 459 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 459 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 534 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 534 times.
✗ Branch 140 not taken.
10640 mRoot.addTile(level, xyz, value, active);
1542 10639 }
1543
1544
1545 template<typename RootNodeType>
1546 template<typename NodeT>
1547 inline NodeT*
1548 Tree<RootNodeType>::stealNode(const Coord& xyz, const ValueType& value, bool active)
1549 {
1550 22771 this->clearAllAccessors();
1551 22771 return mRoot.template stealNode<NodeT>(xyz, value, active);
1552 }
1553
1554
1555 template<typename RootNodeType>
1556 inline typename RootNodeType::LeafNodeType*
1557 Tree<RootNodeType>::touchLeaf(const Coord& xyz)
1558 {
1559
49/98
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3094 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 43 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 162 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 2 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 2 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 1 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 1 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 1 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 1 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 1 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 1 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 1 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 1 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 1 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 1 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 1 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 1 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 1 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 1 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 1 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 1 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 1 times.
✗ Branch 134 not taken.
✓ Branch 136 taken 1 times.
✗ Branch 137 not taken.
✓ Branch 139 taken 1 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 1 times.
✗ Branch 143 not taken.
✓ Branch 145 taken 1 times.
✗ Branch 146 not taken.
3926 return mRoot.touchLeaf(xyz);
1560 }
1561
1562
1563 template<typename RootNodeType>
1564 inline typename RootNodeType::LeafNodeType*
1565 Tree<RootNodeType>::probeLeaf(const Coord& xyz)
1566 {
1567 38028 return mRoot.probeLeaf(xyz);
1568 }
1569
1570
1571 template<typename RootNodeType>
1572 inline const typename RootNodeType::LeafNodeType*
1573 Tree<RootNodeType>::probeConstLeaf(const Coord& xyz) const
1574 {
1575 77978 return mRoot.probeConstLeaf(xyz);
1576 }
1577
1578
1579 template<typename RootNodeType>
1580 template<typename NodeType>
1581 inline NodeType*
1582 Tree<RootNodeType>::probeNode(const Coord& xyz)
1583 {
1584 3475 return mRoot.template probeNode<NodeType>(xyz);
1585 }
1586
1587
1588 template<typename RootNodeType>
1589 template<typename NodeType>
1590 inline const NodeType*
1591 Tree<RootNodeType>::probeNode(const Coord& xyz) const
1592 {
1593 return this->template probeConstNode<NodeType>(xyz);
1594 }
1595
1596
1597 template<typename RootNodeType>
1598 template<typename NodeType>
1599 inline const NodeType*
1600 Tree<RootNodeType>::probeConstNode(const Coord& xyz) const
1601 {
1602 13504 return mRoot.template probeConstNode<NodeType>(xyz);
1603 }
1604
1605
1606 ////////////////////////////////////////
1607
1608
1609 template<typename RootNodeType>
1610 inline void
1611 Tree<RootNodeType>::clip(const CoordBBox& bbox)
1612 {
1613
1/9
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
7 this->clearAllAccessors();
1614
1/9
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
7 return mRoot.clip(bbox);
1615 }
1616
1617
1618 template<typename RootNodeType>
1619 inline void
1620 Tree<RootNodeType>::clipUnallocatedNodes()
1621 {
1622 this->clearAllAccessors();
1623 for (LeafIter it = this->beginLeaf(); it; ) {
1624 const LeafNodeType* leaf = it.getLeaf();
1625 ++it; // advance the iterator before deleting the leaf node
1626 if (!leaf->isAllocated()) {
1627 this->addTile(/*level=*/0, leaf->origin(), this->background(), /*active=*/false);
1628 }
1629 }
1630 }
1631
1632 template<typename RootNodeType>
1633 inline Index32
1634 4 Tree<RootNodeType>::unallocatedLeafCount() const
1635 {
1636 Index32 sum = 0;
1637
3/4
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
12 for (auto it = this->cbeginLeaf(); it; ++it) if (!it->isAllocated()) ++sum;
1638 4 return sum;
1639 }
1640
1641
1642 template<typename RootNodeType>
1643 inline void
1644 Tree<RootNodeType>::sparseFill(const CoordBBox& bbox, const ValueType& value, bool active)
1645 {
1646
55/93
✓ Branch 1 taken 112 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 50 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 33 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 30 times.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 30 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 30 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 17 times.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 21 times.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 14 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 7 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 7 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 6 times.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 5 times.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 4 times.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 6 times.
✓ Branch 44 taken 1 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 6 times.
✓ Branch 47 taken 1 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 5 times.
✓ Branch 50 taken 1 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 5 times.
✓ Branch 53 taken 1 times.
✗ Branch 54 not taken.
✓ Branch 55 taken 3 times.
✓ Branch 56 taken 1 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 3 times.
✓ Branch 59 taken 1 times.
✗ Branch 60 not taken.
✓ Branch 61 taken 2 times.
✓ Branch 62 taken 1 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 2 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 2 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 2 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 2 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 2 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 2 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 2 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 2 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 2 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 2 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 2 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 1 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 1 times.
✗ Branch 107 not taken.
669 this->clearAllAccessors();
1647
47/85
✓ Branch 1 taken 103 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 41 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 24 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 23 times.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 26 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 25 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 14 times.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 18 times.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 11 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 4 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 4 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 3 times.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 1 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 1 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 1 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 1 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 1 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 1 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 1 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 1 times.
✗ Branch 107 not taken.
569 return mRoot.sparseFill(bbox, value, active);
1648 }
1649
1650
1651 template<typename RootNodeType>
1652 inline void
1653 Tree<RootNodeType>::denseFill(const CoordBBox& bbox, const ValueType& value, bool active)
1654 {
1655
40/80
✓ Branch 1 taken 53 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 49 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 49 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 51 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 51 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 50 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 50 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 51 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 51 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 57 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 57 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 56 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 56 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 57 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 57 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 65 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 65 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 94 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 94 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 80 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 80 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 49 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 49 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 49 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 49 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 49 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 49 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 295 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 295 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 34 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 34 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 176 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 176 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 89 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 89 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 153 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 153 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 178 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 178 times.
✗ Branch 119 not taken.
3464 this->clearAllAccessors();
1656
40/80
✓ Branch 1 taken 53 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 47 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 49 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 49 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 51 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 51 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 50 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 50 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 51 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 51 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 57 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 57 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 56 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 56 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 57 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 57 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 65 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 65 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 94 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 94 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 80 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 80 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 49 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 49 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 49 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 49 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 49 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 49 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 295 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 295 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 34 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 34 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 176 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 176 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 89 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 89 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 153 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 153 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 178 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 178 times.
✗ Branch 119 not taken.
3464 return mRoot.denseFill(bbox, value, active);
1657 }
1658
1659
1660 template<typename RootNodeType>
1661 inline void
1662 Tree<RootNodeType>::voxelizeActiveTiles(bool threaded)
1663 {
1664
39/958
✓ Branch 1 taken 41 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 45 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 2 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 1 times.
✓ Branch 22 taken 3 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 2 times.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 16 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 4 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 9 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✓ Branch 77 taken 13 times.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 99 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 111 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 114 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 120 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✗ Branch 123 not taken.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 132 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✓ Branch 135 taken 14 times.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 144 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✓ Branch 147 taken 2 times.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 157 not taken.
✗ Branch 158 not taken.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✗ Branch 175 not taken.
✗ Branch 176 not taken.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✗ Branch 229 not taken.
✗ Branch 230 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 235 not taken.
✗ Branch 236 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 241 not taken.
✗ Branch 242 not taken.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✗ Branch 253 not taken.
✗ Branch 254 not taken.
✗ Branch 256 not taken.
✗ Branch 257 not taken.
✗ Branch 259 not taken.
✗ Branch 260 not taken.
✗ Branch 262 not taken.
✗ Branch 263 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 271 not taken.
✗ Branch 272 not taken.
✗ Branch 274 not taken.
✗ Branch 275 not taken.
✗ Branch 277 not taken.
✗ Branch 278 not taken.
✗ Branch 280 not taken.
✗ Branch 281 not taken.
✗ Branch 283 not taken.
✗ Branch 284 not taken.
✗ Branch 286 not taken.
✗ Branch 287 not taken.
✗ Branch 289 not taken.
✗ Branch 290 not taken.
✗ Branch 292 not taken.
✗ Branch 293 not taken.
✗ Branch 295 not taken.
✗ Branch 296 not taken.
✗ Branch 298 not taken.
✗ Branch 299 not taken.
✗ Branch 301 not taken.
✗ Branch 302 not taken.
✗ Branch 304 not taken.
✗ Branch 305 not taken.
✗ Branch 307 not taken.
✗ Branch 308 not taken.
✗ Branch 310 not taken.
✗ Branch 311 not taken.
✗ Branch 313 not taken.
✗ Branch 314 not taken.
✗ Branch 316 not taken.
✗ Branch 317 not taken.
✗ Branch 319 not taken.
✗ Branch 320 not taken.
✗ Branch 322 not taken.
✗ Branch 323 not taken.
✗ Branch 325 not taken.
✗ Branch 326 not taken.
✗ Branch 328 not taken.
✗ Branch 329 not taken.
✗ Branch 331 not taken.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✗ Branch 337 not taken.
✗ Branch 338 not taken.
✗ Branch 340 not taken.
✗ Branch 341 not taken.
✗ Branch 343 not taken.
✗ Branch 344 not taken.
✗ Branch 346 not taken.
✗ Branch 347 not taken.
✗ Branch 349 not taken.
✗ Branch 350 not taken.
✗ Branch 352 not taken.
✗ Branch 353 not taken.
✗ Branch 355 not taken.
✗ Branch 356 not taken.
✗ Branch 358 not taken.
✗ Branch 359 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 364 not taken.
✗ Branch 365 not taken.
✗ Branch 367 not taken.
✗ Branch 368 not taken.
✗ Branch 370 not taken.
✗ Branch 371 not taken.
✗ Branch 373 not taken.
✗ Branch 374 not taken.
✗ Branch 376 not taken.
✗ Branch 377 not taken.
✗ Branch 379 not taken.
✗ Branch 380 not taken.
✗ Branch 382 not taken.
✗ Branch 383 not taken.
✗ Branch 385 not taken.
✗ Branch 386 not taken.
✗ Branch 388 not taken.
✗ Branch 389 not taken.
✗ Branch 391 not taken.
✗ Branch 392 not taken.
✗ Branch 394 not taken.
✗ Branch 395 not taken.
✗ Branch 397 not taken.
✗ Branch 398 not taken.
✗ Branch 400 not taken.
✗ Branch 401 not taken.
✗ Branch 403 not taken.
✗ Branch 404 not taken.
✗ Branch 406 not taken.
✗ Branch 407 not taken.
✗ Branch 409 not taken.
✗ Branch 410 not taken.
✗ Branch 412 not taken.
✗ Branch 413 not taken.
✗ Branch 415 not taken.
✗ Branch 416 not taken.
✗ Branch 418 not taken.
✗ Branch 419 not taken.
✗ Branch 421 not taken.
✗ Branch 422 not taken.
✗ Branch 424 not taken.
✗ Branch 425 not taken.
✗ Branch 427 not taken.
✗ Branch 428 not taken.
✓ Branch 430 taken 1 times.
✗ Branch 431 not taken.
✗ Branch 433 not taken.
✗ Branch 434 not taken.
✗ Branch 436 not taken.
✗ Branch 437 not taken.
✗ Branch 439 not taken.
✗ Branch 440 not taken.
✗ Branch 442 not taken.
✗ Branch 443 not taken.
✗ Branch 445 not taken.
✗ Branch 446 not taken.
✗ Branch 448 not taken.
✗ Branch 449 not taken.
✗ Branch 451 not taken.
✗ Branch 452 not taken.
✗ Branch 454 not taken.
✗ Branch 455 not taken.
✗ Branch 457 not taken.
✗ Branch 458 not taken.
✗ Branch 460 not taken.
✗ Branch 461 not taken.
✗ Branch 463 not taken.
✗ Branch 464 not taken.
✗ Branch 466 not taken.
✗ Branch 467 not taken.
✗ Branch 469 not taken.
✗ Branch 470 not taken.
✗ Branch 472 not taken.
✗ Branch 473 not taken.
✗ Branch 475 not taken.
✗ Branch 476 not taken.
✗ Branch 478 not taken.
✗ Branch 479 not taken.
✗ Branch 481 not taken.
✗ Branch 482 not taken.
✗ Branch 484 not taken.
✗ Branch 485 not taken.
✗ Branch 487 not taken.
✗ Branch 488 not taken.
✗ Branch 490 not taken.
✗ Branch 491 not taken.
✗ Branch 493 not taken.
✗ Branch 494 not taken.
✗ Branch 496 not taken.
✗ Branch 497 not taken.
✗ Branch 499 not taken.
✗ Branch 500 not taken.
✓ Branch 502 taken 1 times.
✗ Branch 503 not taken.
✗ Branch 505 not taken.
✗ Branch 506 not taken.
✗ Branch 508 not taken.
✗ Branch 509 not taken.
✗ Branch 511 not taken.
✗ Branch 512 not taken.
✗ Branch 514 not taken.
✗ Branch 515 not taken.
✗ Branch 517 not taken.
✗ Branch 518 not taken.
✗ Branch 520 not taken.
✗ Branch 521 not taken.
✗ Branch 523 not taken.
✗ Branch 524 not taken.
✓ Branch 526 taken 2 times.
✗ Branch 527 not taken.
✗ Branch 529 not taken.
✗ Branch 530 not taken.
✗ Branch 532 not taken.
✗ Branch 533 not taken.
✗ Branch 535 not taken.
✗ Branch 536 not taken.
✗ Branch 538 not taken.
✗ Branch 539 not taken.
✗ Branch 541 not taken.
✗ Branch 542 not taken.
✗ Branch 544 not taken.
✗ Branch 545 not taken.
✗ Branch 547 not taken.
✗ Branch 548 not taken.
✗ Branch 550 not taken.
✗ Branch 551 not taken.
✗ Branch 553 not taken.
✗ Branch 554 not taken.
✗ Branch 556 not taken.
✗ Branch 557 not taken.
✗ Branch 559 not taken.
✗ Branch 560 not taken.
✗ Branch 562 not taken.
✗ Branch 563 not taken.
✗ Branch 565 not taken.
✗ Branch 566 not taken.
✗ Branch 568 not taken.
✗ Branch 569 not taken.
✗ Branch 571 not taken.
✗ Branch 572 not taken.
✗ Branch 574 not taken.
✗ Branch 575 not taken.
✗ Branch 577 not taken.
✗ Branch 578 not taken.
✗ Branch 580 not taken.
✗ Branch 581 not taken.
✗ Branch 583 not taken.
✗ Branch 584 not taken.
✗ Branch 586 not taken.
✗ Branch 587 not taken.
✗ Branch 589 not taken.
✗ Branch 590 not taken.
✗ Branch 592 not taken.
✗ Branch 593 not taken.
✗ Branch 595 not taken.
✗ Branch 596 not taken.
✗ Branch 598 not taken.
✗ Branch 599 not taken.
✗ Branch 601 not taken.
✗ Branch 602 not taken.
✗ Branch 604 not taken.
✗ Branch 605 not taken.
✗ Branch 607 not taken.
✗ Branch 608 not taken.
✗ Branch 610 not taken.
✗ Branch 611 not taken.
✗ Branch 613 not taken.
✗ Branch 614 not taken.
✗ Branch 616 not taken.
✗ Branch 617 not taken.
✗ Branch 619 not taken.
✗ Branch 620 not taken.
✓ Branch 622 taken 1 times.
✗ Branch 623 not taken.
✗ Branch 625 not taken.
✗ Branch 626 not taken.
✗ Branch 628 not taken.
✗ Branch 629 not taken.
✗ Branch 631 not taken.
✗ Branch 632 not taken.
✗ Branch 634 not taken.
✗ Branch 635 not taken.
✗ Branch 637 not taken.
✗ Branch 638 not taken.
✗ Branch 640 not taken.
✗ Branch 641 not taken.
✗ Branch 643 not taken.
✗ Branch 644 not taken.
✗ Branch 646 not taken.
✗ Branch 647 not taken.
✗ Branch 649 not taken.
✗ Branch 650 not taken.
✗ Branch 652 not taken.
✗ Branch 653 not taken.
✗ Branch 655 not taken.
✗ Branch 656 not taken.
✗ Branch 658 not taken.
✗ Branch 659 not taken.
✗ Branch 661 not taken.
✗ Branch 662 not taken.
✗ Branch 664 not taken.
✗ Branch 665 not taken.
✗ Branch 667 not taken.
✗ Branch 668 not taken.
✗ Branch 670 not taken.
✗ Branch 671 not taken.
✗ Branch 673 not taken.
✗ Branch 674 not taken.
✗ Branch 676 not taken.
✗ Branch 677 not taken.
✗ Branch 679 not taken.
✗ Branch 680 not taken.
✗ Branch 682 not taken.
✗ Branch 683 not taken.
✗ Branch 685 not taken.
✗ Branch 686 not taken.
✗ Branch 688 not taken.
✗ Branch 689 not taken.
✗ Branch 691 not taken.
✗ Branch 692 not taken.
✗ Branch 694 not taken.
✗ Branch 695 not taken.
✗ Branch 697 not taken.
✗ Branch 698 not taken.
✗ Branch 700 not taken.
✗ Branch 701 not taken.
✗ Branch 703 not taken.
✗ Branch 704 not taken.
✗ Branch 706 not taken.
✗ Branch 707 not taken.
✗ Branch 709 not taken.
✗ Branch 710 not taken.
✗ Branch 712 not taken.
✗ Branch 713 not taken.
✗ Branch 715 not taken.
✗ Branch 716 not taken.
✓ Branch 718 taken 1 times.
✗ Branch 719 not taken.
✗ Branch 721 not taken.
✗ Branch 722 not taken.
✗ Branch 724 not taken.
✗ Branch 725 not taken.
✗ Branch 727 not taken.
✗ Branch 728 not taken.
✗ Branch 730 not taken.
✗ Branch 731 not taken.
✗ Branch 733 not taken.
✗ Branch 734 not taken.
✗ Branch 736 not taken.
✗ Branch 737 not taken.
✗ Branch 739 not taken.
✗ Branch 740 not taken.
✓ Branch 742 taken 4 times.
✗ Branch 743 not taken.
✗ Branch 745 not taken.
✗ Branch 746 not taken.
✗ Branch 748 not taken.
✗ Branch 749 not taken.
✗ Branch 751 not taken.
✗ Branch 752 not taken.
✗ Branch 754 not taken.
✗ Branch 755 not taken.
✗ Branch 757 not taken.
✗ Branch 758 not taken.
✗ Branch 760 not taken.
✗ Branch 761 not taken.
✗ Branch 763 not taken.
✗ Branch 764 not taken.
✓ Branch 766 taken 12 times.
✗ Branch 767 not taken.
✗ Branch 769 not taken.
✗ Branch 770 not taken.
✗ Branch 772 not taken.
✗ Branch 773 not taken.
✗ Branch 775 not taken.
✗ Branch 776 not taken.
✗ Branch 778 not taken.
✗ Branch 779 not taken.
✗ Branch 781 not taken.
✗ Branch 782 not taken.
✗ Branch 784 not taken.
✗ Branch 785 not taken.
✗ Branch 787 not taken.
✗ Branch 788 not taken.
✗ Branch 790 not taken.
✗ Branch 791 not taken.
✗ Branch 793 not taken.
✗ Branch 794 not taken.
✗ Branch 796 not taken.
✗ Branch 797 not taken.
✗ Branch 799 not taken.
✗ Branch 800 not taken.
✗ Branch 802 not taken.
✗ Branch 803 not taken.
✗ Branch 805 not taken.
✗ Branch 806 not taken.
✗ Branch 808 not taken.
✗ Branch 809 not taken.
✗ Branch 811 not taken.
✗ Branch 812 not taken.
✗ Branch 814 not taken.
✗ Branch 815 not taken.
✗ Branch 817 not taken.
✗ Branch 818 not taken.
✗ Branch 820 not taken.
✗ Branch 821 not taken.
✗ Branch 823 not taken.
✗ Branch 824 not taken.
✗ Branch 826 not taken.
✗ Branch 827 not taken.
✗ Branch 829 not taken.
✗ Branch 830 not taken.
✗ Branch 832 not taken.
✗ Branch 833 not taken.
✗ Branch 835 not taken.
✗ Branch 836 not taken.
✗ Branch 838 not taken.
✗ Branch 839 not taken.
✗ Branch 841 not taken.
✗ Branch 842 not taken.
✗ Branch 844 not taken.
✗ Branch 845 not taken.
✗ Branch 847 not taken.
✗ Branch 848 not taken.
✗ Branch 850 not taken.
✗ Branch 851 not taken.
✗ Branch 853 not taken.
✗ Branch 854 not taken.
✗ Branch 856 not taken.
✗ Branch 857 not taken.
✗ Branch 859 not taken.
✗ Branch 860 not taken.
✗ Branch 862 not taken.
✗ Branch 863 not taken.
✗ Branch 865 not taken.
✗ Branch 866 not taken.
✗ Branch 868 not taken.
✗ Branch 869 not taken.
✗ Branch 871 not taken.
✗ Branch 872 not taken.
✗ Branch 874 not taken.
✗ Branch 875 not taken.
✗ Branch 877 not taken.
✗ Branch 878 not taken.
✗ Branch 880 not taken.
✗ Branch 881 not taken.
✗ Branch 883 not taken.
✗ Branch 884 not taken.
✓ Branch 886 taken 2 times.
✗ Branch 887 not taken.
✗ Branch 889 not taken.
✗ Branch 890 not taken.
✗ Branch 892 not taken.
✗ Branch 893 not taken.
✗ Branch 895 not taken.
✗ Branch 896 not taken.
✗ Branch 898 not taken.
✗ Branch 899 not taken.
✗ Branch 901 not taken.
✗ Branch 902 not taken.
✗ Branch 904 not taken.
✗ Branch 905 not taken.
✗ Branch 907 not taken.
✗ Branch 908 not taken.
✗ Branch 910 not taken.
✗ Branch 911 not taken.
✗ Branch 913 not taken.
✗ Branch 914 not taken.
✗ Branch 916 not taken.
✗ Branch 917 not taken.
✗ Branch 919 not taken.
✗ Branch 920 not taken.
✗ Branch 922 not taken.
✗ Branch 923 not taken.
✗ Branch 925 not taken.
✗ Branch 926 not taken.
✗ Branch 928 not taken.
✗ Branch 929 not taken.
✗ Branch 931 not taken.
✗ Branch 932 not taken.
✗ Branch 934 not taken.
✗ Branch 935 not taken.
✗ Branch 937 not taken.
✗ Branch 938 not taken.
✗ Branch 940 not taken.
✗ Branch 941 not taken.
✗ Branch 943 not taken.
✗ Branch 944 not taken.
✗ Branch 946 not taken.
✗ Branch 947 not taken.
✗ Branch 949 not taken.
✗ Branch 950 not taken.
✗ Branch 952 not taken.
✗ Branch 953 not taken.
✗ Branch 955 not taken.
✗ Branch 956 not taken.
✗ Branch 958 not taken.
✗ Branch 959 not taken.
✗ Branch 961 not taken.
✗ Branch 962 not taken.
✗ Branch 964 not taken.
✗ Branch 965 not taken.
✗ Branch 967 not taken.
✗ Branch 968 not taken.
✗ Branch 970 not taken.
✗ Branch 971 not taken.
✗ Branch 973 not taken.
✗ Branch 974 not taken.
✗ Branch 976 not taken.
✗ Branch 977 not taken.
✗ Branch 979 not taken.
✗ Branch 980 not taken.
✗ Branch 982 not taken.
✗ Branch 983 not taken.
✗ Branch 985 not taken.
✗ Branch 986 not taken.
✗ Branch 988 not taken.
✗ Branch 989 not taken.
✗ Branch 991 not taken.
✗ Branch 992 not taken.
✗ Branch 994 not taken.
✗ Branch 995 not taken.
✗ Branch 997 not taken.
✗ Branch 998 not taken.
✗ Branch 1000 not taken.
✗ Branch 1001 not taken.
✗ Branch 1003 not taken.
✗ Branch 1004 not taken.
✗ Branch 1006 not taken.
✗ Branch 1007 not taken.
✗ Branch 1009 not taken.
✗ Branch 1010 not taken.
✗ Branch 1012 not taken.
✗ Branch 1013 not taken.
✗ Branch 1015 not taken.
✗ Branch 1016 not taken.
✗ Branch 1018 not taken.
✗ Branch 1019 not taken.
✗ Branch 1021 not taken.
✗ Branch 1022 not taken.
✗ Branch 1024 not taken.
✗ Branch 1025 not taken.
✗ Branch 1027 not taken.
✗ Branch 1028 not taken.
✓ Branch 1030 taken 1 times.
✗ Branch 1031 not taken.
✗ Branch 1033 not taken.
✗ Branch 1034 not taken.
✗ Branch 1036 not taken.
✗ Branch 1037 not taken.
✗ Branch 1039 not taken.
✗ Branch 1040 not taken.
✗ Branch 1042 not taken.
✗ Branch 1043 not taken.
✗ Branch 1045 not taken.
✗ Branch 1046 not taken.
✗ Branch 1048 not taken.
✗ Branch 1049 not taken.
✗ Branch 1051 not taken.
✗ Branch 1052 not taken.
✓ Branch 1054 taken 1 times.
✗ Branch 1055 not taken.
✗ Branch 1057 not taken.
✗ Branch 1058 not taken.
✗ Branch 1060 not taken.
✗ Branch 1061 not taken.
✗ Branch 1063 not taken.
✗ Branch 1064 not taken.
✗ Branch 1066 not taken.
✗ Branch 1067 not taken.
✗ Branch 1069 not taken.
✗ Branch 1070 not taken.
✗ Branch 1072 not taken.
✗ Branch 1073 not taken.
✗ Branch 1075 not taken.
✗ Branch 1076 not taken.
✗ Branch 1078 not taken.
✗ Branch 1079 not taken.
✗ Branch 1081 not taken.
✗ Branch 1082 not taken.
✗ Branch 1084 not taken.
✗ Branch 1085 not taken.
✗ Branch 1087 not taken.
✗ Branch 1088 not taken.
✗ Branch 1090 not taken.
✗ Branch 1091 not taken.
✗ Branch 1093 not taken.
✗ Branch 1094 not taken.
✗ Branch 1096 not taken.
✗ Branch 1097 not taken.
✗ Branch 1099 not taken.
✗ Branch 1100 not taken.
✗ Branch 1102 not taken.
✗ Branch 1103 not taken.
✗ Branch 1105 not taken.
✗ Branch 1106 not taken.
✗ Branch 1108 not taken.
✗ Branch 1109 not taken.
✗ Branch 1111 not taken.
✗ Branch 1112 not taken.
✗ Branch 1114 not taken.
✗ Branch 1115 not taken.
✗ Branch 1117 not taken.
✗ Branch 1118 not taken.
✗ Branch 1120 not taken.
✗ Branch 1121 not taken.
✗ Branch 1123 not taken.
✗ Branch 1124 not taken.
✓ Branch 1126 taken 1 times.
✗ Branch 1127 not taken.
✗ Branch 1129 not taken.
✗ Branch 1130 not taken.
✗ Branch 1132 not taken.
✗ Branch 1133 not taken.
✗ Branch 1135 not taken.
✗ Branch 1136 not taken.
✗ Branch 1138 not taken.
✗ Branch 1139 not taken.
✗ Branch 1141 not taken.
✗ Branch 1142 not taken.
✗ Branch 1144 not taken.
✗ Branch 1145 not taken.
✗ Branch 1147 not taken.
✗ Branch 1148 not taken.
✗ Branch 1150 not taken.
✗ Branch 1151 not taken.
✗ Branch 1153 not taken.
✗ Branch 1154 not taken.
✗ Branch 1156 not taken.
✗ Branch 1157 not taken.
✗ Branch 1159 not taken.
✗ Branch 1160 not taken.
✗ Branch 1162 not taken.
✗ Branch 1163 not taken.
✗ Branch 1165 not taken.
✗ Branch 1166 not taken.
✗ Branch 1168 not taken.
✗ Branch 1169 not taken.
✗ Branch 1171 not taken.
✗ Branch 1172 not taken.
✗ Branch 1174 not taken.
✗ Branch 1175 not taken.
✗ Branch 1177 not taken.
✗ Branch 1178 not taken.
✗ Branch 1180 not taken.
✗ Branch 1181 not taken.
✗ Branch 1183 not taken.
✗ Branch 1184 not taken.
✗ Branch 1186 not taken.
✗ Branch 1187 not taken.
✗ Branch 1189 not taken.
✗ Branch 1190 not taken.
✗ Branch 1192 not taken.
✗ Branch 1193 not taken.
✗ Branch 1195 not taken.
✗ Branch 1196 not taken.
✓ Branch 1198 taken 5 times.
✗ Branch 1199 not taken.
✗ Branch 1201 not taken.
✗ Branch 1202 not taken.
✗ Branch 1204 not taken.
✗ Branch 1205 not taken.
✗ Branch 1207 not taken.
✗ Branch 1208 not taken.
✗ Branch 1210 not taken.
✗ Branch 1211 not taken.
✗ Branch 1213 not taken.
✗ Branch 1214 not taken.
✗ Branch 1216 not taken.
✗ Branch 1217 not taken.
✗ Branch 1219 not taken.
✗ Branch 1220 not taken.
✗ Branch 1222 not taken.
✗ Branch 1223 not taken.
✗ Branch 1225 not taken.
✗ Branch 1226 not taken.
✗ Branch 1228 not taken.
✗ Branch 1229 not taken.
✗ Branch 1231 not taken.
✗ Branch 1232 not taken.
✗ Branch 1234 not taken.
✗ Branch 1235 not taken.
✗ Branch 1237 not taken.
✗ Branch 1238 not taken.
✗ Branch 1240 not taken.
✗ Branch 1241 not taken.
✗ Branch 1243 not taken.
✗ Branch 1244 not taken.
✗ Branch 1246 not taken.
✗ Branch 1247 not taken.
✗ Branch 1249 not taken.
✗ Branch 1250 not taken.
✗ Branch 1252 not taken.
✗ Branch 1253 not taken.
✗ Branch 1255 not taken.
✗ Branch 1256 not taken.
✗ Branch 1258 not taken.
✗ Branch 1259 not taken.
✗ Branch 1261 not taken.
✗ Branch 1262 not taken.
✗ Branch 1264 not taken.
✗ Branch 1265 not taken.
✗ Branch 1267 not taken.
✗ Branch 1268 not taken.
✗ Branch 1270 not taken.
✗ Branch 1271 not taken.
✗ Branch 1273 not taken.
✗ Branch 1274 not taken.
✗ Branch 1276 not taken.
✗ Branch 1277 not taken.
✗ Branch 1279 not taken.
✗ Branch 1280 not taken.
✗ Branch 1282 not taken.
✗ Branch 1283 not taken.
✗ Branch 1285 not taken.
✗ Branch 1286 not taken.
✗ Branch 1288 not taken.
✗ Branch 1289 not taken.
✗ Branch 1291 not taken.
✗ Branch 1292 not taken.
✗ Branch 1294 not taken.
✗ Branch 1295 not taken.
✗ Branch 1297 not taken.
✗ Branch 1298 not taken.
✗ Branch 1300 not taken.
✗ Branch 1301 not taken.
✗ Branch 1303 not taken.
✗ Branch 1304 not taken.
✗ Branch 1306 not taken.
✗ Branch 1307 not taken.
✗ Branch 1309 not taken.
✗ Branch 1310 not taken.
✗ Branch 1312 not taken.
✗ Branch 1313 not taken.
✗ Branch 1315 not taken.
✗ Branch 1316 not taken.
✗ Branch 1318 not taken.
✗ Branch 1319 not taken.
✗ Branch 1321 not taken.
✗ Branch 1322 not taken.
✗ Branch 1324 not taken.
✗ Branch 1325 not taken.
✗ Branch 1327 not taken.
✗ Branch 1328 not taken.
✗ Branch 1330 not taken.
✗ Branch 1331 not taken.
✗ Branch 1333 not taken.
✗ Branch 1334 not taken.
✗ Branch 1336 not taken.
✗ Branch 1337 not taken.
✗ Branch 1339 not taken.
✗ Branch 1340 not taken.
✗ Branch 1342 not taken.
✗ Branch 1343 not taken.
✗ Branch 1345 not taken.
✗ Branch 1346 not taken.
✗ Branch 1348 not taken.
✗ Branch 1349 not taken.
✗ Branch 1351 not taken.
✗ Branch 1352 not taken.
✗ Branch 1354 not taken.
✗ Branch 1355 not taken.
✗ Branch 1357 not taken.
✗ Branch 1358 not taken.
✗ Branch 1360 not taken.
✗ Branch 1361 not taken.
✗ Branch 1363 not taken.
✗ Branch 1364 not taken.
✗ Branch 1366 not taken.
✗ Branch 1367 not taken.
✗ Branch 1369 not taken.
✗ Branch 1370 not taken.
✗ Branch 1372 not taken.
✗ Branch 1373 not taken.
✗ Branch 1375 not taken.
✗ Branch 1376 not taken.
✗ Branch 1378 not taken.
✗ Branch 1379 not taken.
✗ Branch 1381 not taken.
✗ Branch 1382 not taken.
✗ Branch 1384 not taken.
✗ Branch 1385 not taken.
✗ Branch 1387 not taken.
✗ Branch 1388 not taken.
✗ Branch 1390 not taken.
✗ Branch 1391 not taken.
984 this->clearAllAccessors();
1665
39/958
✓ Branch 1 taken 41 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 45 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 2 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 1 times.
✓ Branch 22 taken 3 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 2 times.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 16 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 4 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 9 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✓ Branch 77 taken 13 times.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✓ Branch 85 taken 1 times.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 99 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 111 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 114 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 120 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✗ Branch 123 not taken.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 132 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✓ Branch 135 taken 14 times.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 144 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✓ Branch 147 taken 2 times.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 157 not taken.
✗ Branch 158 not taken.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✗ Branch 175 not taken.
✗ Branch 176 not taken.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✗ Branch 229 not taken.
✗ Branch 230 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 235 not taken.
✗ Branch 236 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 241 not taken.
✗ Branch 242 not taken.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✗ Branch 253 not taken.
✗ Branch 254 not taken.
✗ Branch 256 not taken.
✗ Branch 257 not taken.
✗ Branch 259 not taken.
✗ Branch 260 not taken.
✗ Branch 262 not taken.
✗ Branch 263 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 271 not taken.
✗ Branch 272 not taken.
✗ Branch 274 not taken.
✗ Branch 275 not taken.
✗ Branch 277 not taken.
✗ Branch 278 not taken.
✗ Branch 280 not taken.
✗ Branch 281 not taken.
✗ Branch 283 not taken.
✗ Branch 284 not taken.
✗ Branch 286 not taken.
✗ Branch 287 not taken.
✗ Branch 289 not taken.
✗ Branch 290 not taken.
✗ Branch 292 not taken.
✗ Branch 293 not taken.
✗ Branch 295 not taken.
✗ Branch 296 not taken.
✗ Branch 298 not taken.
✗ Branch 299 not taken.
✗ Branch 301 not taken.
✗ Branch 302 not taken.
✗ Branch 304 not taken.
✗ Branch 305 not taken.
✗ Branch 307 not taken.
✗ Branch 308 not taken.
✗ Branch 310 not taken.
✗ Branch 311 not taken.
✗ Branch 313 not taken.
✗ Branch 314 not taken.
✗ Branch 316 not taken.
✗ Branch 317 not taken.
✗ Branch 319 not taken.
✗ Branch 320 not taken.
✗ Branch 322 not taken.
✗ Branch 323 not taken.
✗ Branch 325 not taken.
✗ Branch 326 not taken.
✗ Branch 328 not taken.
✗ Branch 329 not taken.
✗ Branch 331 not taken.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✗ Branch 337 not taken.
✗ Branch 338 not taken.
✗ Branch 340 not taken.
✗ Branch 341 not taken.
✗ Branch 343 not taken.
✗ Branch 344 not taken.
✗ Branch 346 not taken.
✗ Branch 347 not taken.
✗ Branch 349 not taken.
✗ Branch 350 not taken.
✗ Branch 352 not taken.
✗ Branch 353 not taken.
✗ Branch 355 not taken.
✗ Branch 356 not taken.
✗ Branch 358 not taken.
✗ Branch 359 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 364 not taken.
✗ Branch 365 not taken.
✗ Branch 367 not taken.
✗ Branch 368 not taken.
✗ Branch 370 not taken.
✗ Branch 371 not taken.
✗ Branch 373 not taken.
✗ Branch 374 not taken.
✗ Branch 376 not taken.
✗ Branch 377 not taken.
✗ Branch 379 not taken.
✗ Branch 380 not taken.
✗ Branch 382 not taken.
✗ Branch 383 not taken.
✗ Branch 385 not taken.
✗ Branch 386 not taken.
✗ Branch 388 not taken.
✗ Branch 389 not taken.
✗ Branch 391 not taken.
✗ Branch 392 not taken.
✗ Branch 394 not taken.
✗ Branch 395 not taken.
✗ Branch 397 not taken.
✗ Branch 398 not taken.
✗ Branch 400 not taken.
✗ Branch 401 not taken.
✗ Branch 403 not taken.
✗ Branch 404 not taken.
✗ Branch 406 not taken.
✗ Branch 407 not taken.
✗ Branch 409 not taken.
✗ Branch 410 not taken.
✗ Branch 412 not taken.
✗ Branch 413 not taken.
✗ Branch 415 not taken.
✗ Branch 416 not taken.
✗ Branch 418 not taken.
✗ Branch 419 not taken.
✗ Branch 421 not taken.
✗ Branch 422 not taken.
✗ Branch 424 not taken.
✗ Branch 425 not taken.
✗ Branch 427 not taken.
✗ Branch 428 not taken.
✓ Branch 430 taken 1 times.
✗ Branch 431 not taken.
✗ Branch 433 not taken.
✗ Branch 434 not taken.
✗ Branch 436 not taken.
✗ Branch 437 not taken.
✗ Branch 439 not taken.
✗ Branch 440 not taken.
✗ Branch 442 not taken.
✗ Branch 443 not taken.
✗ Branch 445 not taken.
✗ Branch 446 not taken.
✗ Branch 448 not taken.
✗ Branch 449 not taken.
✗ Branch 451 not taken.
✗ Branch 452 not taken.
✗ Branch 454 not taken.
✗ Branch 455 not taken.
✗ Branch 457 not taken.
✗ Branch 458 not taken.
✗ Branch 460 not taken.
✗ Branch 461 not taken.
✗ Branch 463 not taken.
✗ Branch 464 not taken.
✗ Branch 466 not taken.
✗ Branch 467 not taken.
✗ Branch 469 not taken.
✗ Branch 470 not taken.
✗ Branch 472 not taken.
✗ Branch 473 not taken.
✗ Branch 475 not taken.
✗ Branch 476 not taken.
✗ Branch 478 not taken.
✗ Branch 479 not taken.
✗ Branch 481 not taken.
✗ Branch 482 not taken.
✗ Branch 484 not taken.
✗ Branch 485 not taken.
✗ Branch 487 not taken.
✗ Branch 488 not taken.
✗ Branch 490 not taken.
✗ Branch 491 not taken.
✗ Branch 493 not taken.
✗ Branch 494 not taken.
✗ Branch 496 not taken.
✗ Branch 497 not taken.
✗ Branch 499 not taken.
✗ Branch 500 not taken.
✓ Branch 502 taken 1 times.
✗ Branch 503 not taken.
✗ Branch 505 not taken.
✗ Branch 506 not taken.
✗ Branch 508 not taken.
✗ Branch 509 not taken.
✗ Branch 511 not taken.
✗ Branch 512 not taken.
✗ Branch 514 not taken.
✗ Branch 515 not taken.
✗ Branch 517 not taken.
✗ Branch 518 not taken.
✗ Branch 520 not taken.
✗ Branch 521 not taken.
✗ Branch 523 not taken.
✗ Branch 524 not taken.
✓ Branch 526 taken 2 times.
✗ Branch 527 not taken.
✗ Branch 529 not taken.
✗ Branch 530 not taken.
✗ Branch 532 not taken.
✗ Branch 533 not taken.
✗ Branch 535 not taken.
✗ Branch 536 not taken.
✗ Branch 538 not taken.
✗ Branch 539 not taken.
✗ Branch 541 not taken.
✗ Branch 542 not taken.
✗ Branch 544 not taken.
✗ Branch 545 not taken.
✗ Branch 547 not taken.
✗ Branch 548 not taken.
✗ Branch 550 not taken.
✗ Branch 551 not taken.
✗ Branch 553 not taken.
✗ Branch 554 not taken.
✗ Branch 556 not taken.
✗ Branch 557 not taken.
✗ Branch 559 not taken.
✗ Branch 560 not taken.
✗ Branch 562 not taken.
✗ Branch 563 not taken.
✗ Branch 565 not taken.
✗ Branch 566 not taken.
✗ Branch 568 not taken.
✗ Branch 569 not taken.
✗ Branch 571 not taken.
✗ Branch 572 not taken.
✗ Branch 574 not taken.
✗ Branch 575 not taken.
✗ Branch 577 not taken.
✗ Branch 578 not taken.
✗ Branch 580 not taken.
✗ Branch 581 not taken.
✗ Branch 583 not taken.
✗ Branch 584 not taken.
✗ Branch 586 not taken.
✗ Branch 587 not taken.
✗ Branch 589 not taken.
✗ Branch 590 not taken.
✗ Branch 592 not taken.
✗ Branch 593 not taken.
✗ Branch 595 not taken.
✗ Branch 596 not taken.
✗ Branch 598 not taken.
✗ Branch 599 not taken.
✗ Branch 601 not taken.
✗ Branch 602 not taken.
✗ Branch 604 not taken.
✗ Branch 605 not taken.
✗ Branch 607 not taken.
✗ Branch 608 not taken.
✗ Branch 610 not taken.
✗ Branch 611 not taken.
✗ Branch 613 not taken.
✗ Branch 614 not taken.
✗ Branch 616 not taken.
✗ Branch 617 not taken.
✗ Branch 619 not taken.
✗ Branch 620 not taken.
✓ Branch 622 taken 1 times.
✗ Branch 623 not taken.
✗ Branch 625 not taken.
✗ Branch 626 not taken.
✗ Branch 628 not taken.
✗ Branch 629 not taken.
✗ Branch 631 not taken.
✗ Branch 632 not taken.
✗ Branch 634 not taken.
✗ Branch 635 not taken.
✗ Branch 637 not taken.
✗ Branch 638 not taken.
✗ Branch 640 not taken.
✗ Branch 641 not taken.
✗ Branch 643 not taken.
✗ Branch 644 not taken.
✗ Branch 646 not taken.
✗ Branch 647 not taken.
✗ Branch 649 not taken.
✗ Branch 650 not taken.
✗ Branch 652 not taken.
✗ Branch 653 not taken.
✗ Branch 655 not taken.
✗ Branch 656 not taken.
✗ Branch 658 not taken.
✗ Branch 659 not taken.
✗ Branch 661 not taken.
✗ Branch 662 not taken.
✗ Branch 664 not taken.
✗ Branch 665 not taken.
✗ Branch 667 not taken.
✗ Branch 668 not taken.
✗ Branch 670 not taken.
✗ Branch 671 not taken.
✗ Branch 673 not taken.
✗ Branch 674 not taken.
✗ Branch 676 not taken.
✗ Branch 677 not taken.
✗ Branch 679 not taken.
✗ Branch 680 not taken.
✗ Branch 682 not taken.
✗ Branch 683 not taken.
✗ Branch 685 not taken.
✗ Branch 686 not taken.
✗ Branch 688 not taken.
✗ Branch 689 not taken.
✗ Branch 691 not taken.
✗ Branch 692 not taken.
✗ Branch 694 not taken.
✗ Branch 695 not taken.
✗ Branch 697 not taken.
✗ Branch 698 not taken.
✗ Branch 700 not taken.
✗ Branch 701 not taken.
✗ Branch 703 not taken.
✗ Branch 704 not taken.
✗ Branch 706 not taken.
✗ Branch 707 not taken.
✗ Branch 709 not taken.
✗ Branch 710 not taken.
✗ Branch 712 not taken.
✗ Branch 713 not taken.
✗ Branch 715 not taken.
✗ Branch 716 not taken.
✓ Branch 718 taken 1 times.
✗ Branch 719 not taken.
✗ Branch 721 not taken.
✗ Branch 722 not taken.
✗ Branch 724 not taken.
✗ Branch 725 not taken.
✗ Branch 727 not taken.
✗ Branch 728 not taken.
✗ Branch 730 not taken.
✗ Branch 731 not taken.
✗ Branch 733 not taken.
✗ Branch 734 not taken.
✗ Branch 736 not taken.
✗ Branch 737 not taken.
✗ Branch 739 not taken.
✗ Branch 740 not taken.
✓ Branch 742 taken 4 times.
✗ Branch 743 not taken.
✗ Branch 745 not taken.
✗ Branch 746 not taken.
✗ Branch 748 not taken.
✗ Branch 749 not taken.
✗ Branch 751 not taken.
✗ Branch 752 not taken.
✗ Branch 754 not taken.
✗ Branch 755 not taken.
✗ Branch 757 not taken.
✗ Branch 758 not taken.
✗ Branch 760 not taken.
✗ Branch 761 not taken.
✗ Branch 763 not taken.
✗ Branch 764 not taken.
✓ Branch 766 taken 12 times.
✗ Branch 767 not taken.
✗ Branch 769 not taken.
✗ Branch 770 not taken.
✗ Branch 772 not taken.
✗ Branch 773 not taken.
✗ Branch 775 not taken.
✗ Branch 776 not taken.
✗ Branch 778 not taken.
✗ Branch 779 not taken.
✗ Branch 781 not taken.
✗ Branch 782 not taken.
✗ Branch 784 not taken.
✗ Branch 785 not taken.
✗ Branch 787 not taken.
✗ Branch 788 not taken.
✗ Branch 790 not taken.
✗ Branch 791 not taken.
✗ Branch 793 not taken.
✗ Branch 794 not taken.
✗ Branch 796 not taken.
✗ Branch 797 not taken.
✗ Branch 799 not taken.
✗ Branch 800 not taken.
✗ Branch 802 not taken.
✗ Branch 803 not taken.
✗ Branch 805 not taken.
✗ Branch 806 not taken.
✗ Branch 808 not taken.
✗ Branch 809 not taken.
✗ Branch 811 not taken.
✗ Branch 812 not taken.
✗ Branch 814 not taken.
✗ Branch 815 not taken.
✗ Branch 817 not taken.
✗ Branch 818 not taken.
✗ Branch 820 not taken.
✗ Branch 821 not taken.
✗ Branch 823 not taken.
✗ Branch 824 not taken.
✗ Branch 826 not taken.
✗ Branch 827 not taken.
✗ Branch 829 not taken.
✗ Branch 830 not taken.
✗ Branch 832 not taken.
✗ Branch 833 not taken.
✗ Branch 835 not taken.
✗ Branch 836 not taken.
✗ Branch 838 not taken.
✗ Branch 839 not taken.
✗ Branch 841 not taken.
✗ Branch 842 not taken.
✗ Branch 844 not taken.
✗ Branch 845 not taken.
✗ Branch 847 not taken.
✗ Branch 848 not taken.
✗ Branch 850 not taken.
✗ Branch 851 not taken.
✗ Branch 853 not taken.
✗ Branch 854 not taken.
✗ Branch 856 not taken.
✗ Branch 857 not taken.
✗ Branch 859 not taken.
✗ Branch 860 not taken.
✗ Branch 862 not taken.
✗ Branch 863 not taken.
✗ Branch 865 not taken.
✗ Branch 866 not taken.
✗ Branch 868 not taken.
✗ Branch 869 not taken.
✗ Branch 871 not taken.
✗ Branch 872 not taken.
✗ Branch 874 not taken.
✗ Branch 875 not taken.
✗ Branch 877 not taken.
✗ Branch 878 not taken.
✗ Branch 880 not taken.
✗ Branch 881 not taken.
✗ Branch 883 not taken.
✗ Branch 884 not taken.
✓ Branch 886 taken 2 times.
✗ Branch 887 not taken.
✗ Branch 889 not taken.
✗ Branch 890 not taken.
✗ Branch 892 not taken.
✗ Branch 893 not taken.
✗ Branch 895 not taken.
✗ Branch 896 not taken.
✗ Branch 898 not taken.
✗ Branch 899 not taken.
✗ Branch 901 not taken.
✗ Branch 902 not taken.
✗ Branch 904 not taken.
✗ Branch 905 not taken.
✗ Branch 907 not taken.
✗ Branch 908 not taken.
✗ Branch 910 not taken.
✗ Branch 911 not taken.
✗ Branch 913 not taken.
✗ Branch 914 not taken.
✗ Branch 916 not taken.
✗ Branch 917 not taken.
✗ Branch 919 not taken.
✗ Branch 920 not taken.
✗ Branch 922 not taken.
✗ Branch 923 not taken.
✗ Branch 925 not taken.
✗ Branch 926 not taken.
✗ Branch 928 not taken.
✗ Branch 929 not taken.
✗ Branch 931 not taken.
✗ Branch 932 not taken.
✗ Branch 934 not taken.
✗ Branch 935 not taken.
✗ Branch 937 not taken.
✗ Branch 938 not taken.
✗ Branch 940 not taken.
✗ Branch 941 not taken.
✗ Branch 943 not taken.
✗ Branch 944 not taken.
✗ Branch 946 not taken.
✗ Branch 947 not taken.
✗ Branch 949 not taken.
✗ Branch 950 not taken.
✗ Branch 952 not taken.
✗ Branch 953 not taken.
✗ Branch 955 not taken.
✗ Branch 956 not taken.
✗ Branch 958 not taken.
✗ Branch 959 not taken.
✗ Branch 961 not taken.
✗ Branch 962 not taken.
✗ Branch 964 not taken.
✗ Branch 965 not taken.
✗ Branch 967 not taken.
✗ Branch 968 not taken.
✗ Branch 970 not taken.
✗ Branch 971 not taken.
✗ Branch 973 not taken.
✗ Branch 974 not taken.
✗ Branch 976 not taken.
✗ Branch 977 not taken.
✗ Branch 979 not taken.
✗ Branch 980 not taken.
✗ Branch 982 not taken.
✗ Branch 983 not taken.
✗ Branch 985 not taken.
✗ Branch 986 not taken.
✗ Branch 988 not taken.
✗ Branch 989 not taken.
✗ Branch 991 not taken.
✗ Branch 992 not taken.
✗ Branch 994 not taken.
✗ Branch 995 not taken.
✗ Branch 997 not taken.
✗ Branch 998 not taken.
✗ Branch 1000 not taken.
✗ Branch 1001 not taken.
✗ Branch 1003 not taken.
✗ Branch 1004 not taken.
✗ Branch 1006 not taken.
✗ Branch 1007 not taken.
✗ Branch 1009 not taken.
✗ Branch 1010 not taken.
✗ Branch 1012 not taken.
✗ Branch 1013 not taken.
✗ Branch 1015 not taken.
✗ Branch 1016 not taken.
✗ Branch 1018 not taken.
✗ Branch 1019 not taken.
✗ Branch 1021 not taken.
✗ Branch 1022 not taken.
✗ Branch 1024 not taken.
✗ Branch 1025 not taken.
✗ Branch 1027 not taken.
✗ Branch 1028 not taken.
✓ Branch 1030 taken 1 times.
✗ Branch 1031 not taken.
✗ Branch 1033 not taken.
✗ Branch 1034 not taken.
✗ Branch 1036 not taken.
✗ Branch 1037 not taken.
✗ Branch 1039 not taken.
✗ Branch 1040 not taken.
✗ Branch 1042 not taken.
✗ Branch 1043 not taken.
✗ Branch 1045 not taken.
✗ Branch 1046 not taken.
✗ Branch 1048 not taken.
✗ Branch 1049 not taken.
✗ Branch 1051 not taken.
✗ Branch 1052 not taken.
✓ Branch 1054 taken 1 times.
✗ Branch 1055 not taken.
✗ Branch 1057 not taken.
✗ Branch 1058 not taken.
✗ Branch 1060 not taken.
✗ Branch 1061 not taken.
✗ Branch 1063 not taken.
✗ Branch 1064 not taken.
✗ Branch 1066 not taken.
✗ Branch 1067 not taken.
✗ Branch 1069 not taken.
✗ Branch 1070 not taken.
✗ Branch 1072 not taken.
✗ Branch 1073 not taken.
✗ Branch 1075 not taken.
✗ Branch 1076 not taken.
✗ Branch 1078 not taken.
✗ Branch 1079 not taken.
✗ Branch 1081 not taken.
✗ Branch 1082 not taken.
✗ Branch 1084 not taken.
✗ Branch 1085 not taken.
✗ Branch 1087 not taken.
✗ Branch 1088 not taken.
✗ Branch 1090 not taken.
✗ Branch 1091 not taken.
✗ Branch 1093 not taken.
✗ Branch 1094 not taken.
✗ Branch 1096 not taken.
✗ Branch 1097 not taken.
✗ Branch 1099 not taken.
✗ Branch 1100 not taken.
✗ Branch 1102 not taken.
✗ Branch 1103 not taken.
✗ Branch 1105 not taken.
✗ Branch 1106 not taken.
✗ Branch 1108 not taken.
✗ Branch 1109 not taken.
✗ Branch 1111 not taken.
✗ Branch 1112 not taken.
✗ Branch 1114 not taken.
✗ Branch 1115 not taken.
✗ Branch 1117 not taken.
✗ Branch 1118 not taken.
✗ Branch 1120 not taken.
✗ Branch 1121 not taken.
✗ Branch 1123 not taken.
✗ Branch 1124 not taken.
✓ Branch 1126 taken 1 times.
✗ Branch 1127 not taken.
✗ Branch 1129 not taken.
✗ Branch 1130 not taken.
✗ Branch 1132 not taken.
✗ Branch 1133 not taken.
✗ Branch 1135 not taken.
✗ Branch 1136 not taken.
✗ Branch 1138 not taken.
✗ Branch 1139 not taken.
✗ Branch 1141 not taken.
✗ Branch 1142 not taken.
✗ Branch 1144 not taken.
✗ Branch 1145 not taken.
✗ Branch 1147 not taken.
✗ Branch 1148 not taken.
✗ Branch 1150 not taken.
✗ Branch 1151 not taken.
✗ Branch 1153 not taken.
✗ Branch 1154 not taken.
✗ Branch 1156 not taken.
✗ Branch 1157 not taken.
✗ Branch 1159 not taken.
✗ Branch 1160 not taken.
✗ Branch 1162 not taken.
✗ Branch 1163 not taken.
✗ Branch 1165 not taken.
✗ Branch 1166 not taken.
✗ Branch 1168 not taken.
✗ Branch 1169 not taken.
✗ Branch 1171 not taken.
✗ Branch 1172 not taken.
✗ Branch 1174 not taken.
✗ Branch 1175 not taken.
✗ Branch 1177 not taken.
✗ Branch 1178 not taken.
✗ Branch 1180 not taken.
✗ Branch 1181 not taken.
✗ Branch 1183 not taken.
✗ Branch 1184 not taken.
✗ Branch 1186 not taken.
✗ Branch 1187 not taken.
✗ Branch 1189 not taken.
✗ Branch 1190 not taken.
✗ Branch 1192 not taken.
✗ Branch 1193 not taken.
✗ Branch 1195 not taken.
✗ Branch 1196 not taken.
✓ Branch 1198 taken 5 times.
✗ Branch 1199 not taken.
✗ Branch 1201 not taken.
✗ Branch 1202 not taken.
✗ Branch 1204 not taken.
✗ Branch 1205 not taken.
✗ Branch 1207 not taken.
✗ Branch 1208 not taken.
✗ Branch 1210 not taken.
✗ Branch 1211 not taken.
✗ Branch 1213 not taken.
✗ Branch 1214 not taken.
✗ Branch 1216 not taken.
✗ Branch 1217 not taken.
✗ Branch 1219 not taken.
✗ Branch 1220 not taken.
✗ Branch 1222 not taken.
✗ Branch 1223 not taken.
✗ Branch 1225 not taken.
✗ Branch 1226 not taken.
✗ Branch 1228 not taken.
✗ Branch 1229 not taken.
✗ Branch 1231 not taken.
✗ Branch 1232 not taken.
✗ Branch 1234 not taken.
✗ Branch 1235 not taken.
✗ Branch 1237 not taken.
✗ Branch 1238 not taken.
✗ Branch 1240 not taken.
✗ Branch 1241 not taken.
✗ Branch 1243 not taken.
✗ Branch 1244 not taken.
✗ Branch 1246 not taken.
✗ Branch 1247 not taken.
✗ Branch 1249 not taken.
✗ Branch 1250 not taken.
✗ Branch 1252 not taken.
✗ Branch 1253 not taken.
✗ Branch 1255 not taken.
✗ Branch 1256 not taken.
✗ Branch 1258 not taken.
✗ Branch 1259 not taken.
✗ Branch 1261 not taken.
✗ Branch 1262 not taken.
✗ Branch 1264 not taken.
✗ Branch 1265 not taken.
✗ Branch 1267 not taken.
✗ Branch 1268 not taken.
✗ Branch 1270 not taken.
✗ Branch 1271 not taken.
✗ Branch 1273 not taken.
✗ Branch 1274 not taken.
✗ Branch 1276 not taken.
✗ Branch 1277 not taken.
✗ Branch 1279 not taken.
✗ Branch 1280 not taken.
✗ Branch 1282 not taken.
✗ Branch 1283 not taken.
✗ Branch 1285 not taken.
✗ Branch 1286 not taken.
✗ Branch 1288 not taken.
✗ Branch 1289 not taken.
✗ Branch 1291 not taken.
✗ Branch 1292 not taken.
✗ Branch 1294 not taken.
✗ Branch 1295 not taken.
✗ Branch 1297 not taken.
✗ Branch 1298 not taken.
✗ Branch 1300 not taken.
✗ Branch 1301 not taken.
✗ Branch 1303 not taken.
✗ Branch 1304 not taken.
✗ Branch 1306 not taken.
✗ Branch 1307 not taken.
✗ Branch 1309 not taken.
✗ Branch 1310 not taken.
✗ Branch 1312 not taken.
✗ Branch 1313 not taken.
✗ Branch 1315 not taken.
✗ Branch 1316 not taken.
✗ Branch 1318 not taken.
✗ Branch 1319 not taken.
✗ Branch 1321 not taken.
✗ Branch 1322 not taken.
✗ Branch 1324 not taken.
✗ Branch 1325 not taken.
✗ Branch 1327 not taken.
✗ Branch 1328 not taken.
✗ Branch 1330 not taken.
✗ Branch 1331 not taken.
✗ Branch 1333 not taken.
✗ Branch 1334 not taken.
✗ Branch 1336 not taken.
✗ Branch 1337 not taken.
✗ Branch 1339 not taken.
✗ Branch 1340 not taken.
✗ Branch 1342 not taken.
✗ Branch 1343 not taken.
✗ Branch 1345 not taken.
✗ Branch 1346 not taken.
✗ Branch 1348 not taken.
✗ Branch 1349 not taken.
✗ Branch 1351 not taken.
✗ Branch 1352 not taken.
✗ Branch 1354 not taken.
✗ Branch 1355 not taken.
✗ Branch 1357 not taken.
✗ Branch 1358 not taken.
✗ Branch 1360 not taken.
✗ Branch 1361 not taken.
✗ Branch 1363 not taken.
✗ Branch 1364 not taken.
✗ Branch 1366 not taken.
✗ Branch 1367 not taken.
✗ Branch 1369 not taken.
✗ Branch 1370 not taken.
✗ Branch 1372 not taken.
✗ Branch 1373 not taken.
✗ Branch 1375 not taken.
✗ Branch 1376 not taken.
✗ Branch 1378 not taken.
✗ Branch 1379 not taken.
✗ Branch 1381 not taken.
✗ Branch 1382 not taken.
✗ Branch 1384 not taken.
✗ Branch 1385 not taken.
✗ Branch 1387 not taken.
✗ Branch 1388 not taken.
✗ Branch 1390 not taken.
✗ Branch 1391 not taken.
984 mRoot.voxelizeActiveTiles(threaded);
1666 219 }
1667
1668
1669 template<typename RootNodeType>
1670 Metadata::Ptr
1671 Tree<RootNodeType>::getBackgroundValue() const
1672 {
1673 Metadata::Ptr result;
1674 if (Metadata::isRegisteredType(valueType())) {
1675 using MetadataT = TypedMetadata<ValueType>;
1676 result = Metadata::createMetadata(valueType());
1677 if (result->typeName() == MetadataT::staticTypeName()) {
1678 MetadataT* m = static_cast<MetadataT*>(result.get());
1679 m->value() = mRoot.background();
1680 }
1681 }
1682 return result;
1683 }
1684
1685
1686 ////////////////////////////////////////
1687
1688
1689 template<typename RootNodeType>
1690 inline void
1691 17999 Tree<RootNodeType>::merge(Tree& other, MergePolicy policy)
1692 {
1693 17999 this->clearAllAccessors();
1694 17999 other.clearAllAccessors();
1695
3/4
✓ Branch 0 taken 17147 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
17999 switch (policy) {
1696 17985 case MERGE_ACTIVE_STATES:
1697 17985 mRoot.template merge<MERGE_ACTIVE_STATES>(other.mRoot); break;
1698 4 case MERGE_NODES:
1699 4 mRoot.template merge<MERGE_NODES>(other.mRoot); break;
1700 10 case MERGE_ACTIVE_STATES_AND_NODES:
1701 10 mRoot.template merge<MERGE_ACTIVE_STATES_AND_NODES>(other.mRoot); break;
1702 }
1703 17999 }
1704
1705
1706 template<typename RootNodeType>
1707 template<typename OtherRootNodeType>
1708 inline void
1709 Tree<RootNodeType>::topologyUnion(const Tree<OtherRootNodeType>& other, const bool preserveTiles)
1710 {
1711
71/174
✓ Branch 1 taken 2708 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 2507 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✓ Branch 10 taken 14 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 77 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 71 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 6 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 72 times.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 73 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 23 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 62 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 63 times.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✓ Branch 38 taken 4 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 69 times.
✓ Branch 41 taken 19 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 71 times.
✓ Branch 44 taken 1 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 3 times.
✓ Branch 47 taken 1 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 65 times.
✓ Branch 50 taken 1 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 65 times.
✓ Branch 53 taken 1 times.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✓ Branch 56 taken 1 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 67 times.
✓ Branch 59 taken 1 times.
✗ Branch 60 not taken.
✓ Branch 61 taken 66 times.
✓ Branch 62 taken 7 times.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 65 taken 27 times.
✗ Branch 66 not taken.
✓ Branch 67 taken 69 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 70 times.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✓ Branch 76 taken 75 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 75 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 116 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 116 times.
✗ Branch 89 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✓ Branch 94 taken 131 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 131 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 59 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 49 times.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✓ Branch 112 taken 49 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 49 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 13 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 49 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 49 times.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✓ Branch 130 taken 449 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 449 times.
✗ Branch 134 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✓ Branch 139 taken 34 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 34 times.
✗ Branch 143 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✓ Branch 148 taken 283 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 283 times.
✗ Branch 152 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✓ Branch 157 taken 99 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 99 times.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✓ Branch 166 taken 273 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 273 times.
✗ Branch 170 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✓ Branch 175 taken 398 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 398 times.
✗ Branch 179 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✓ Branch 184 taken 720 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 720 times.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✓ Branch 199 taken 14 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 14 times.
✗ Branch 203 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✓ Branch 217 taken 2 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 2 times.
✗ Branch 221 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
12224 this->clearAllAccessors();
1712
71/174
✓ Branch 1 taken 2708 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 2507 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 59 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
✓ Branch 10 taken 14 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 77 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 71 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 6 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 72 times.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 73 times.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 23 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 62 times.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 63 times.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✓ Branch 38 taken 4 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 69 times.
✓ Branch 41 taken 19 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 71 times.
✓ Branch 44 taken 1 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 3 times.
✓ Branch 47 taken 1 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 65 times.
✓ Branch 50 taken 1 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 65 times.
✓ Branch 53 taken 1 times.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✓ Branch 56 taken 1 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 67 times.
✓ Branch 59 taken 1 times.
✗ Branch 60 not taken.
✓ Branch 61 taken 66 times.
✓ Branch 62 taken 7 times.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 65 taken 27 times.
✗ Branch 66 not taken.
✓ Branch 67 taken 69 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 70 times.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✓ Branch 76 taken 75 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 75 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 116 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 116 times.
✗ Branch 89 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✓ Branch 94 taken 131 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 131 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 59 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 49 times.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✓ Branch 112 taken 49 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 49 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 13 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 49 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 49 times.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✓ Branch 130 taken 449 times.
✗ Branch 131 not taken.
✓ Branch 133 taken 449 times.
✗ Branch 134 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✓ Branch 139 taken 34 times.
✗ Branch 140 not taken.
✓ Branch 142 taken 34 times.
✗ Branch 143 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✓ Branch 148 taken 283 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 283 times.
✗ Branch 152 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✓ Branch 157 taken 99 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 99 times.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✓ Branch 166 taken 273 times.
✗ Branch 167 not taken.
✓ Branch 169 taken 273 times.
✗ Branch 170 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✓ Branch 175 taken 398 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 398 times.
✗ Branch 179 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✓ Branch 184 taken 720 times.
✗ Branch 185 not taken.
✓ Branch 187 taken 720 times.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✓ Branch 199 taken 14 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 14 times.
✗ Branch 203 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✓ Branch 217 taken 2 times.
✗ Branch 218 not taken.
✓ Branch 220 taken 2 times.
✗ Branch 221 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
12224 mRoot.topologyUnion(other.root(), preserveTiles);
1713 5094 }
1714
1715 template<typename RootNodeType>
1716 template<typename OtherRootNodeType>
1717 inline void
1718 Tree<RootNodeType>::topologyIntersection(const Tree<OtherRootNodeType>& other)
1719 {
1720
21/928
✓ Branch 1 taken 244 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 5 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 4 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✓ Branch 43 taken 10 times.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 58 taken 13 times.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 157 not taken.
✗ Branch 158 not taken.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✗ Branch 175 not taken.
✗ Branch 176 not taken.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✓ Branch 214 taken 2 times.
✗ Branch 215 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✗ Branch 229 not taken.
✗ Branch 230 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 235 not taken.
✗ Branch 236 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 241 not taken.
✗ Branch 242 not taken.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✗ Branch 253 not taken.
✗ Branch 254 not taken.
✗ Branch 256 not taken.
✗ Branch 257 not taken.
✗ Branch 259 not taken.
✗ Branch 260 not taken.
✗ Branch 262 not taken.
✗ Branch 263 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 271 not taken.
✗ Branch 272 not taken.
✗ Branch 274 not taken.
✗ Branch 275 not taken.
✗ Branch 277 not taken.
✗ Branch 278 not taken.
✗ Branch 280 not taken.
✗ Branch 281 not taken.
✗ Branch 283 not taken.
✗ Branch 284 not taken.
✗ Branch 286 not taken.
✗ Branch 287 not taken.
✗ Branch 289 not taken.
✗ Branch 290 not taken.
✗ Branch 292 not taken.
✗ Branch 293 not taken.
✗ Branch 295 not taken.
✗ Branch 296 not taken.
✗ Branch 298 not taken.
✗ Branch 299 not taken.
✗ Branch 301 not taken.
✗ Branch 302 not taken.
✗ Branch 304 not taken.
✗ Branch 305 not taken.
✗ Branch 307 not taken.
✗ Branch 308 not taken.
✗ Branch 310 not taken.
✗ Branch 311 not taken.
✗ Branch 313 not taken.
✗ Branch 314 not taken.
✗ Branch 316 not taken.
✗ Branch 317 not taken.
✗ Branch 319 not taken.
✗ Branch 320 not taken.
✗ Branch 322 not taken.
✗ Branch 323 not taken.
✗ Branch 325 not taken.
✗ Branch 326 not taken.
✗ Branch 328 not taken.
✗ Branch 329 not taken.
✗ Branch 331 not taken.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✗ Branch 337 not taken.
✗ Branch 338 not taken.
✗ Branch 340 not taken.
✗ Branch 341 not taken.
✗ Branch 343 not taken.
✗ Branch 344 not taken.
✗ Branch 346 not taken.
✗ Branch 347 not taken.
✗ Branch 349 not taken.
✗ Branch 350 not taken.
✗ Branch 352 not taken.
✗ Branch 353 not taken.
✗ Branch 355 not taken.
✗ Branch 356 not taken.
✗ Branch 358 not taken.
✗ Branch 359 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 364 not taken.
✗ Branch 365 not taken.
✗ Branch 367 not taken.
✗ Branch 368 not taken.
✗ Branch 370 not taken.
✗ Branch 371 not taken.
✗ Branch 373 not taken.
✗ Branch 374 not taken.
✗ Branch 376 not taken.
✗ Branch 377 not taken.
✗ Branch 379 not taken.
✗ Branch 380 not taken.
✗ Branch 382 not taken.
✗ Branch 383 not taken.
✗ Branch 385 not taken.
✗ Branch 386 not taken.
✗ Branch 388 not taken.
✗ Branch 389 not taken.
✗ Branch 391 not taken.
✗ Branch 392 not taken.
✗ Branch 394 not taken.
✗ Branch 395 not taken.
✗ Branch 397 not taken.
✗ Branch 398 not taken.
✗ Branch 400 not taken.
✗ Branch 401 not taken.
✗ Branch 403 not taken.
✗ Branch 404 not taken.
✗ Branch 406 not taken.
✗ Branch 407 not taken.
✗ Branch 409 not taken.
✗ Branch 410 not taken.
✗ Branch 412 not taken.
✗ Branch 413 not taken.
✗ Branch 415 not taken.
✗ Branch 416 not taken.
✗ Branch 418 not taken.
✗ Branch 419 not taken.
✗ Branch 421 not taken.
✗ Branch 422 not taken.
✗ Branch 424 not taken.
✗ Branch 425 not taken.
✗ Branch 427 not taken.
✗ Branch 428 not taken.
✗ Branch 430 not taken.
✗ Branch 431 not taken.
✗ Branch 433 not taken.
✗ Branch 434 not taken.
✗ Branch 436 not taken.
✗ Branch 437 not taken.
✗ Branch 439 not taken.
✗ Branch 440 not taken.
✗ Branch 442 not taken.
✗ Branch 443 not taken.
✗ Branch 445 not taken.
✗ Branch 446 not taken.
✗ Branch 448 not taken.
✗ Branch 449 not taken.
✗ Branch 451 not taken.
✗ Branch 452 not taken.
✗ Branch 454 not taken.
✗ Branch 455 not taken.
✗ Branch 457 not taken.
✗ Branch 458 not taken.
✗ Branch 460 not taken.
✗ Branch 461 not taken.
✗ Branch 463 not taken.
✗ Branch 464 not taken.
✗ Branch 466 not taken.
✗ Branch 467 not taken.
✗ Branch 469 not taken.
✗ Branch 470 not taken.
✗ Branch 472 not taken.
✗ Branch 473 not taken.
✗ Branch 475 not taken.
✗ Branch 476 not taken.
✗ Branch 478 not taken.
✗ Branch 479 not taken.
✗ Branch 481 not taken.
✗ Branch 482 not taken.
✗ Branch 484 not taken.
✗ Branch 485 not taken.
✗ Branch 487 not taken.
✗ Branch 488 not taken.
✗ Branch 490 not taken.
✗ Branch 491 not taken.
✗ Branch 493 not taken.
✗ Branch 494 not taken.
✗ Branch 496 not taken.
✗ Branch 497 not taken.
✗ Branch 499 not taken.
✗ Branch 500 not taken.
✓ Branch 502 taken 1 times.
✗ Branch 503 not taken.
✗ Branch 505 not taken.
✗ Branch 506 not taken.
✗ Branch 508 not taken.
✗ Branch 509 not taken.
✗ Branch 511 not taken.
✗ Branch 512 not taken.
✗ Branch 514 not taken.
✗ Branch 515 not taken.
✗ Branch 517 not taken.
✗ Branch 518 not taken.
✗ Branch 520 not taken.
✗ Branch 521 not taken.
✗ Branch 523 not taken.
✗ Branch 524 not taken.
✓ Branch 526 taken 2 times.
✗ Branch 527 not taken.
✗ Branch 529 not taken.
✗ Branch 530 not taken.
✗ Branch 532 not taken.
✗ Branch 533 not taken.
✗ Branch 535 not taken.
✗ Branch 536 not taken.
✗ Branch 538 not taken.
✗ Branch 539 not taken.
✗ Branch 541 not taken.
✗ Branch 542 not taken.
✗ Branch 544 not taken.
✗ Branch 545 not taken.
✗ Branch 547 not taken.
✗ Branch 548 not taken.
✗ Branch 550 not taken.
✗ Branch 551 not taken.
✗ Branch 553 not taken.
✗ Branch 554 not taken.
✗ Branch 556 not taken.
✗ Branch 557 not taken.
✗ Branch 559 not taken.
✗ Branch 560 not taken.
✗ Branch 562 not taken.
✗ Branch 563 not taken.
✗ Branch 565 not taken.
✗ Branch 566 not taken.
✗ Branch 568 not taken.
✗ Branch 569 not taken.
✗ Branch 571 not taken.
✗ Branch 572 not taken.
✗ Branch 574 not taken.
✗ Branch 575 not taken.
✗ Branch 577 not taken.
✗ Branch 578 not taken.
✗ Branch 580 not taken.
✗ Branch 581 not taken.
✗ Branch 583 not taken.
✗ Branch 584 not taken.
✗ Branch 586 not taken.
✗ Branch 587 not taken.
✗ Branch 589 not taken.
✗ Branch 590 not taken.
✗ Branch 592 not taken.
✗ Branch 593 not taken.
✗ Branch 595 not taken.
✗ Branch 596 not taken.
✗ Branch 598 not taken.
✗ Branch 599 not taken.
✗ Branch 601 not taken.
✗ Branch 602 not taken.
✗ Branch 604 not taken.
✗ Branch 605 not taken.
✗ Branch 607 not taken.
✗ Branch 608 not taken.
✗ Branch 610 not taken.
✗ Branch 611 not taken.
✗ Branch 613 not taken.
✗ Branch 614 not taken.
✗ Branch 616 not taken.
✗ Branch 617 not taken.
✗ Branch 619 not taken.
✗ Branch 620 not taken.
✗ Branch 622 not taken.
✗ Branch 623 not taken.
✗ Branch 625 not taken.
✗ Branch 626 not taken.
✗ Branch 628 not taken.
✗ Branch 629 not taken.
✗ Branch 631 not taken.
✗ Branch 632 not taken.
✗ Branch 634 not taken.
✗ Branch 635 not taken.
✗ Branch 637 not taken.
✗ Branch 638 not taken.
✗ Branch 640 not taken.
✗ Branch 641 not taken.
✗ Branch 643 not taken.
✗ Branch 644 not taken.
✗ Branch 646 not taken.
✗ Branch 647 not taken.
✗ Branch 649 not taken.
✗ Branch 650 not taken.
✗ Branch 652 not taken.
✗ Branch 653 not taken.
✗ Branch 655 not taken.
✗ Branch 656 not taken.
✗ Branch 658 not taken.
✗ Branch 659 not taken.
✗ Branch 661 not taken.
✗ Branch 662 not taken.
✗ Branch 664 not taken.
✗ Branch 665 not taken.
✗ Branch 667 not taken.
✗ Branch 668 not taken.
✗ Branch 670 not taken.
✗ Branch 671 not taken.
✗ Branch 673 not taken.
✗ Branch 674 not taken.
✗ Branch 676 not taken.
✗ Branch 677 not taken.
✗ Branch 679 not taken.
✗ Branch 680 not taken.
✗ Branch 682 not taken.
✗ Branch 683 not taken.
✗ Branch 685 not taken.
✗ Branch 686 not taken.
✗ Branch 688 not taken.
✗ Branch 689 not taken.
✗ Branch 691 not taken.
✗ Branch 692 not taken.
✗ Branch 694 not taken.
✗ Branch 695 not taken.
✗ Branch 697 not taken.
✗ Branch 698 not taken.
✗ Branch 700 not taken.
✗ Branch 701 not taken.
✗ Branch 703 not taken.
✗ Branch 704 not taken.
✗ Branch 706 not taken.
✗ Branch 707 not taken.
✗ Branch 709 not taken.
✗ Branch 710 not taken.
✗ Branch 712 not taken.
✗ Branch 713 not taken.
✗ Branch 715 not taken.
✗ Branch 716 not taken.
✓ Branch 718 taken 1 times.
✗ Branch 719 not taken.
✗ Branch 721 not taken.
✗ Branch 722 not taken.
✗ Branch 724 not taken.
✗ Branch 725 not taken.
✗ Branch 727 not taken.
✗ Branch 728 not taken.
✗ Branch 730 not taken.
✗ Branch 731 not taken.
✗ Branch 733 not taken.
✗ Branch 734 not taken.
✗ Branch 736 not taken.
✗ Branch 737 not taken.
✗ Branch 739 not taken.
✗ Branch 740 not taken.
✗ Branch 742 not taken.
✗ Branch 743 not taken.
✗ Branch 745 not taken.
✗ Branch 746 not taken.
✗ Branch 748 not taken.
✗ Branch 749 not taken.
✗ Branch 751 not taken.
✗ Branch 752 not taken.
✗ Branch 754 not taken.
✗ Branch 755 not taken.
✗ Branch 757 not taken.
✗ Branch 758 not taken.
✗ Branch 760 not taken.
✗ Branch 761 not taken.
✗ Branch 763 not taken.
✗ Branch 764 not taken.
✗ Branch 766 not taken.
✗ Branch 767 not taken.
✗ Branch 769 not taken.
✗ Branch 770 not taken.
✗ Branch 772 not taken.
✗ Branch 773 not taken.
✗ Branch 775 not taken.
✗ Branch 776 not taken.
✗ Branch 778 not taken.
✗ Branch 779 not taken.
✗ Branch 781 not taken.
✗ Branch 782 not taken.
✗ Branch 784 not taken.
✗ Branch 785 not taken.
✗ Branch 787 not taken.
✗ Branch 788 not taken.
✗ Branch 790 not taken.
✗ Branch 791 not taken.
✗ Branch 793 not taken.
✗ Branch 794 not taken.
✗ Branch 796 not taken.
✗ Branch 797 not taken.
✗ Branch 799 not taken.
✗ Branch 800 not taken.
✗ Branch 802 not taken.
✗ Branch 803 not taken.
✗ Branch 805 not taken.
✗ Branch 806 not taken.
✗ Branch 808 not taken.
✗ Branch 809 not taken.
✗ Branch 811 not taken.
✗ Branch 812 not taken.
✗ Branch 814 not taken.
✗ Branch 815 not taken.
✗ Branch 817 not taken.
✗ Branch 818 not taken.
✗ Branch 820 not taken.
✗ Branch 821 not taken.
✗ Branch 823 not taken.
✗ Branch 824 not taken.
✗ Branch 826 not taken.
✗ Branch 827 not taken.
✗ Branch 829 not taken.
✗ Branch 830 not taken.
✗ Branch 832 not taken.
✗ Branch 833 not taken.
✗ Branch 835 not taken.
✗ Branch 836 not taken.
✗ Branch 838 not taken.
✗ Branch 839 not taken.
✗ Branch 841 not taken.
✗ Branch 842 not taken.
✗ Branch 844 not taken.
✗ Branch 845 not taken.
✗ Branch 847 not taken.
✗ Branch 848 not taken.
✗ Branch 850 not taken.
✗ Branch 851 not taken.
✗ Branch 853 not taken.
✗ Branch 854 not taken.
✗ Branch 856 not taken.
✗ Branch 857 not taken.
✗ Branch 859 not taken.
✗ Branch 860 not taken.
✗ Branch 862 not taken.
✗ Branch 863 not taken.
✗ Branch 865 not taken.
✗ Branch 866 not taken.
✗ Branch 868 not taken.
✗ Branch 869 not taken.
✗ Branch 871 not taken.
✗ Branch 872 not taken.
✗ Branch 874 not taken.
✗ Branch 875 not taken.
✗ Branch 877 not taken.
✗ Branch 878 not taken.
✗ Branch 880 not taken.
✗ Branch 881 not taken.
✗ Branch 883 not taken.
✗ Branch 884 not taken.
✓ Branch 886 taken 2 times.
✗ Branch 887 not taken.
✗ Branch 889 not taken.
✗ Branch 890 not taken.
✗ Branch 892 not taken.
✗ Branch 893 not taken.
✗ Branch 895 not taken.
✗ Branch 896 not taken.
✗ Branch 898 not taken.
✗ Branch 899 not taken.
✗ Branch 901 not taken.
✗ Branch 902 not taken.
✗ Branch 904 not taken.
✗ Branch 905 not taken.
✗ Branch 907 not taken.
✗ Branch 908 not taken.
✗ Branch 910 not taken.
✗ Branch 911 not taken.
✗ Branch 913 not taken.
✗ Branch 914 not taken.
✗ Branch 916 not taken.
✗ Branch 917 not taken.
✗ Branch 919 not taken.
✗ Branch 920 not taken.
✗ Branch 922 not taken.
✗ Branch 923 not taken.
✗ Branch 925 not taken.
✗ Branch 926 not taken.
✗ Branch 928 not taken.
✗ Branch 929 not taken.
✗ Branch 931 not taken.
✗ Branch 932 not taken.
✗ Branch 934 not taken.
✗ Branch 935 not taken.
✗ Branch 937 not taken.
✗ Branch 938 not taken.
✗ Branch 940 not taken.
✗ Branch 941 not taken.
✗ Branch 943 not taken.
✗ Branch 944 not taken.
✗ Branch 946 not taken.
✗ Branch 947 not taken.
✗ Branch 949 not taken.
✗ Branch 950 not taken.
✗ Branch 952 not taken.
✗ Branch 953 not taken.
✗ Branch 955 not taken.
✗ Branch 956 not taken.
✗ Branch 958 not taken.
✗ Branch 959 not taken.
✗ Branch 961 not taken.
✗ Branch 962 not taken.
✗ Branch 964 not taken.
✗ Branch 965 not taken.
✗ Branch 967 not taken.
✗ Branch 968 not taken.
✗ Branch 970 not taken.
✗ Branch 971 not taken.
✗ Branch 973 not taken.
✗ Branch 974 not taken.
✗ Branch 976 not taken.
✗ Branch 977 not taken.
✗ Branch 979 not taken.
✗ Branch 980 not taken.
✗ Branch 982 not taken.
✗ Branch 983 not taken.
✗ Branch 985 not taken.
✗ Branch 986 not taken.
✗ Branch 988 not taken.
✗ Branch 989 not taken.
✗ Branch 991 not taken.
✗ Branch 992 not taken.
✗ Branch 994 not taken.
✗ Branch 995 not taken.
✗ Branch 997 not taken.
✗ Branch 998 not taken.
✗ Branch 1000 not taken.
✗ Branch 1001 not taken.
✗ Branch 1003 not taken.
✗ Branch 1004 not taken.
✗ Branch 1006 not taken.
✗ Branch 1007 not taken.
✗ Branch 1009 not taken.
✗ Branch 1010 not taken.
✗ Branch 1012 not taken.
✗ Branch 1013 not taken.
✗ Branch 1015 not taken.
✗ Branch 1016 not taken.
✗ Branch 1018 not taken.
✗ Branch 1019 not taken.
✗ Branch 1021 not taken.
✗ Branch 1022 not taken.
✗ Branch 1024 not taken.
✗ Branch 1025 not taken.
✗ Branch 1027 not taken.
✗ Branch 1028 not taken.
✗ Branch 1030 not taken.
✗ Branch 1031 not taken.
✗ Branch 1033 not taken.
✗ Branch 1034 not taken.
✗ Branch 1036 not taken.
✗ Branch 1037 not taken.
✗ Branch 1039 not taken.
✗ Branch 1040 not taken.
✗ Branch 1042 not taken.
✗ Branch 1043 not taken.
✗ Branch 1045 not taken.
✗ Branch 1046 not taken.
✗ Branch 1048 not taken.
✗ Branch 1049 not taken.
✗ Branch 1051 not taken.
✗ Branch 1052 not taken.
✗ Branch 1054 not taken.
✗ Branch 1055 not taken.
✗ Branch 1057 not taken.
✗ Branch 1058 not taken.
✗ Branch 1060 not taken.
✗ Branch 1061 not taken.
✗ Branch 1063 not taken.
✗ Branch 1064 not taken.
✗ Branch 1066 not taken.
✗ Branch 1067 not taken.
✗ Branch 1069 not taken.
✗ Branch 1070 not taken.
✗ Branch 1072 not taken.
✗ Branch 1073 not taken.
✗ Branch 1075 not taken.
✗ Branch 1076 not taken.
✗ Branch 1078 not taken.
✗ Branch 1079 not taken.
✗ Branch 1081 not taken.
✗ Branch 1082 not taken.
✗ Branch 1084 not taken.
✗ Branch 1085 not taken.
✗ Branch 1087 not taken.
✗ Branch 1088 not taken.
✗ Branch 1090 not taken.
✗ Branch 1091 not taken.
✗ Branch 1093 not taken.
✗ Branch 1094 not taken.
✗ Branch 1096 not taken.
✗ Branch 1097 not taken.
✗ Branch 1099 not taken.
✗ Branch 1100 not taken.
✗ Branch 1102 not taken.
✗ Branch 1103 not taken.
✗ Branch 1105 not taken.
✗ Branch 1106 not taken.
✗ Branch 1108 not taken.
✗ Branch 1109 not taken.
✗ Branch 1111 not taken.
✗ Branch 1112 not taken.
✗ Branch 1114 not taken.
✗ Branch 1115 not taken.
✗ Branch 1117 not taken.
✗ Branch 1118 not taken.
✗ Branch 1120 not taken.
✗ Branch 1121 not taken.
✗ Branch 1123 not taken.
✗ Branch 1124 not taken.
✓ Branch 1126 taken 1 times.
✗ Branch 1127 not taken.
✗ Branch 1129 not taken.
✗ Branch 1130 not taken.
✗ Branch 1132 not taken.
✗ Branch 1133 not taken.
✗ Branch 1135 not taken.
✗ Branch 1136 not taken.
✗ Branch 1138 not taken.
✗ Branch 1139 not taken.
✗ Branch 1141 not taken.
✗ Branch 1142 not taken.
✗ Branch 1144 not taken.
✗ Branch 1145 not taken.
✗ Branch 1147 not taken.
✗ Branch 1148 not taken.
✗ Branch 1150 not taken.
✗ Branch 1151 not taken.
✗ Branch 1153 not taken.
✗ Branch 1154 not taken.
✗ Branch 1156 not taken.
✗ Branch 1157 not taken.
✗ Branch 1159 not taken.
✗ Branch 1160 not taken.
✗ Branch 1162 not taken.
✗ Branch 1163 not taken.
✗ Branch 1165 not taken.
✗ Branch 1166 not taken.
✗ Branch 1168 not taken.
✗ Branch 1169 not taken.
✗ Branch 1171 not taken.
✗ Branch 1172 not taken.
✗ Branch 1174 not taken.
✗ Branch 1175 not taken.
✗ Branch 1177 not taken.
✗ Branch 1178 not taken.
✗ Branch 1180 not taken.
✗ Branch 1181 not taken.
✗ Branch 1183 not taken.
✗ Branch 1184 not taken.
✗ Branch 1186 not taken.
✗ Branch 1187 not taken.
✗ Branch 1189 not taken.
✗ Branch 1190 not taken.
✗ Branch 1192 not taken.
✗ Branch 1193 not taken.
✗ Branch 1195 not taken.
✗ Branch 1196 not taken.
✗ Branch 1198 not taken.
✗ Branch 1199 not taken.
✗ Branch 1201 not taken.
✗ Branch 1202 not taken.
✗ Branch 1204 not taken.
✗ Branch 1205 not taken.
✗ Branch 1207 not taken.
✗ Branch 1208 not taken.
✗ Branch 1210 not taken.
✗ Branch 1211 not taken.
✗ Branch 1213 not taken.
✗ Branch 1214 not taken.
✗ Branch 1216 not taken.
✗ Branch 1217 not taken.
✗ Branch 1219 not taken.
✗ Branch 1220 not taken.
✗ Branch 1222 not taken.
✗ Branch 1223 not taken.
✗ Branch 1225 not taken.
✗ Branch 1226 not taken.
✗ Branch 1228 not taken.
✗ Branch 1229 not taken.
✗ Branch 1231 not taken.
✗ Branch 1232 not taken.
✗ Branch 1234 not taken.
✗ Branch 1235 not taken.
✗ Branch 1237 not taken.
✗ Branch 1238 not taken.
✗ Branch 1240 not taken.
✗ Branch 1241 not taken.
✗ Branch 1243 not taken.
✗ Branch 1244 not taken.
✗ Branch 1246 not taken.
✗ Branch 1247 not taken.
✗ Branch 1249 not taken.
✗ Branch 1250 not taken.
✗ Branch 1252 not taken.
✗ Branch 1253 not taken.
✗ Branch 1255 not taken.
✗ Branch 1256 not taken.
✗ Branch 1258 not taken.
✗ Branch 1259 not taken.
✗ Branch 1261 not taken.
✗ Branch 1262 not taken.
✗ Branch 1264 not taken.
✗ Branch 1265 not taken.
✗ Branch 1267 not taken.
✗ Branch 1268 not taken.
✗ Branch 1270 not taken.
✗ Branch 1271 not taken.
✗ Branch 1273 not taken.
✗ Branch 1274 not taken.
✗ Branch 1276 not taken.
✗ Branch 1277 not taken.
✗ Branch 1279 not taken.
✗ Branch 1280 not taken.
✗ Branch 1282 not taken.
✗ Branch 1283 not taken.
✗ Branch 1285 not taken.
✗ Branch 1286 not taken.
✗ Branch 1288 not taken.
✗ Branch 1289 not taken.
✗ Branch 1291 not taken.
✗ Branch 1292 not taken.
✗ Branch 1294 not taken.
✗ Branch 1295 not taken.
✗ Branch 1297 not taken.
✗ Branch 1298 not taken.
✗ Branch 1300 not taken.
✗ Branch 1301 not taken.
✗ Branch 1303 not taken.
✗ Branch 1304 not taken.
✗ Branch 1306 not taken.
✗ Branch 1307 not taken.
✗ Branch 1309 not taken.
✗ Branch 1310 not taken.
✗ Branch 1312 not taken.
✗ Branch 1313 not taken.
✗ Branch 1315 not taken.
✗ Branch 1316 not taken.
✗ Branch 1318 not taken.
✗ Branch 1319 not taken.
✗ Branch 1321 not taken.
✗ Branch 1322 not taken.
✗ Branch 1324 not taken.
✗ Branch 1325 not taken.
✗ Branch 1327 not taken.
✗ Branch 1328 not taken.
✗ Branch 1330 not taken.
✗ Branch 1331 not taken.
✗ Branch 1333 not taken.
✗ Branch 1334 not taken.
✗ Branch 1336 not taken.
✗ Branch 1337 not taken.
✗ Branch 1339 not taken.
✗ Branch 1340 not taken.
✗ Branch 1342 not taken.
✗ Branch 1343 not taken.
✗ Branch 1345 not taken.
✗ Branch 1346 not taken.
✗ Branch 1348 not taken.
✗ Branch 1349 not taken.
✗ Branch 1351 not taken.
✗ Branch 1352 not taken.
✗ Branch 1354 not taken.
✗ Branch 1355 not taken.
✗ Branch 1357 not taken.
✗ Branch 1358 not taken.
✗ Branch 1360 not taken.
✗ Branch 1361 not taken.
✗ Branch 1363 not taken.
✗ Branch 1364 not taken.
✗ Branch 1366 not taken.
✗ Branch 1367 not taken.
✗ Branch 1369 not taken.
✗ Branch 1370 not taken.
✗ Branch 1372 not taken.
✗ Branch 1373 not taken.
✗ Branch 1375 not taken.
✗ Branch 1376 not taken.
✗ Branch 1378 not taken.
✗ Branch 1379 not taken.
✗ Branch 1381 not taken.
✗ Branch 1382 not taken.
✗ Branch 1384 not taken.
✗ Branch 1385 not taken.
✗ Branch 1387 not taken.
✗ Branch 1388 not taken.
✗ Branch 1390 not taken.
✗ Branch 1391 not taken.
295 this->clearAllAccessors();
1721
21/928
✓ Branch 1 taken 244 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 5 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 4 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✓ Branch 43 taken 10 times.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 58 taken 13 times.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 157 not taken.
✗ Branch 158 not taken.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✗ Branch 175 not taken.
✗ Branch 176 not taken.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✓ Branch 214 taken 2 times.
✗ Branch 215 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✗ Branch 229 not taken.
✗ Branch 230 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 235 not taken.
✗ Branch 236 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 241 not taken.
✗ Branch 242 not taken.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✗ Branch 253 not taken.
✗ Branch 254 not taken.
✗ Branch 256 not taken.
✗ Branch 257 not taken.
✗ Branch 259 not taken.
✗ Branch 260 not taken.
✗ Branch 262 not taken.
✗ Branch 263 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 271 not taken.
✗ Branch 272 not taken.
✗ Branch 274 not taken.
✗ Branch 275 not taken.
✗ Branch 277 not taken.
✗ Branch 278 not taken.
✗ Branch 280 not taken.
✗ Branch 281 not taken.
✗ Branch 283 not taken.
✗ Branch 284 not taken.
✗ Branch 286 not taken.
✗ Branch 287 not taken.
✗ Branch 289 not taken.
✗ Branch 290 not taken.
✗ Branch 292 not taken.
✗ Branch 293 not taken.
✗ Branch 295 not taken.
✗ Branch 296 not taken.
✗ Branch 298 not taken.
✗ Branch 299 not taken.
✗ Branch 301 not taken.
✗ Branch 302 not taken.
✗ Branch 304 not taken.
✗ Branch 305 not taken.
✗ Branch 307 not taken.
✗ Branch 308 not taken.
✗ Branch 310 not taken.
✗ Branch 311 not taken.
✗ Branch 313 not taken.
✗ Branch 314 not taken.
✗ Branch 316 not taken.
✗ Branch 317 not taken.
✗ Branch 319 not taken.
✗ Branch 320 not taken.
✗ Branch 322 not taken.
✗ Branch 323 not taken.
✗ Branch 325 not taken.
✗ Branch 326 not taken.
✗ Branch 328 not taken.
✗ Branch 329 not taken.
✗ Branch 331 not taken.
✗ Branch 332 not taken.
✓ Branch 334 taken 1 times.
✗ Branch 335 not taken.
✗ Branch 337 not taken.
✗ Branch 338 not taken.
✗ Branch 340 not taken.
✗ Branch 341 not taken.
✗ Branch 343 not taken.
✗ Branch 344 not taken.
✗ Branch 346 not taken.
✗ Branch 347 not taken.
✗ Branch 349 not taken.
✗ Branch 350 not taken.
✗ Branch 352 not taken.
✗ Branch 353 not taken.
✗ Branch 355 not taken.
✗ Branch 356 not taken.
✗ Branch 358 not taken.
✗ Branch 359 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 364 not taken.
✗ Branch 365 not taken.
✗ Branch 367 not taken.
✗ Branch 368 not taken.
✗ Branch 370 not taken.
✗ Branch 371 not taken.
✗ Branch 373 not taken.
✗ Branch 374 not taken.
✗ Branch 376 not taken.
✗ Branch 377 not taken.
✗ Branch 379 not taken.
✗ Branch 380 not taken.
✗ Branch 382 not taken.
✗ Branch 383 not taken.
✗ Branch 385 not taken.
✗ Branch 386 not taken.
✗ Branch 388 not taken.
✗ Branch 389 not taken.
✗ Branch 391 not taken.
✗ Branch 392 not taken.
✗ Branch 394 not taken.
✗ Branch 395 not taken.
✗ Branch 397 not taken.
✗ Branch 398 not taken.
✗ Branch 400 not taken.
✗ Branch 401 not taken.
✗ Branch 403 not taken.
✗ Branch 404 not taken.
✗ Branch 406 not taken.
✗ Branch 407 not taken.
✗ Branch 409 not taken.
✗ Branch 410 not taken.
✗ Branch 412 not taken.
✗ Branch 413 not taken.
✗ Branch 415 not taken.
✗ Branch 416 not taken.
✗ Branch 418 not taken.
✗ Branch 419 not taken.
✗ Branch 421 not taken.
✗ Branch 422 not taken.
✗ Branch 424 not taken.
✗ Branch 425 not taken.
✗ Branch 427 not taken.
✗ Branch 428 not taken.
✗ Branch 430 not taken.
✗ Branch 431 not taken.
✗ Branch 433 not taken.
✗ Branch 434 not taken.
✗ Branch 436 not taken.
✗ Branch 437 not taken.
✗ Branch 439 not taken.
✗ Branch 440 not taken.
✗ Branch 442 not taken.
✗ Branch 443 not taken.
✗ Branch 445 not taken.
✗ Branch 446 not taken.
✗ Branch 448 not taken.
✗ Branch 449 not taken.
✗ Branch 451 not taken.
✗ Branch 452 not taken.
✗ Branch 454 not taken.
✗ Branch 455 not taken.
✗ Branch 457 not taken.
✗ Branch 458 not taken.
✗ Branch 460 not taken.
✗ Branch 461 not taken.
✗ Branch 463 not taken.
✗ Branch 464 not taken.
✗ Branch 466 not taken.
✗ Branch 467 not taken.
✗ Branch 469 not taken.
✗ Branch 470 not taken.
✗ Branch 472 not taken.
✗ Branch 473 not taken.
✗ Branch 475 not taken.
✗ Branch 476 not taken.
✗ Branch 478 not taken.
✗ Branch 479 not taken.
✗ Branch 481 not taken.
✗ Branch 482 not taken.
✗ Branch 484 not taken.
✗ Branch 485 not taken.
✗ Branch 487 not taken.
✗ Branch 488 not taken.
✗ Branch 490 not taken.
✗ Branch 491 not taken.
✗ Branch 493 not taken.
✗ Branch 494 not taken.
✗ Branch 496 not taken.
✗ Branch 497 not taken.
✗ Branch 499 not taken.
✗ Branch 500 not taken.
✓ Branch 502 taken 1 times.
✗ Branch 503 not taken.
✗ Branch 505 not taken.
✗ Branch 506 not taken.
✗ Branch 508 not taken.
✗ Branch 509 not taken.
✗ Branch 511 not taken.
✗ Branch 512 not taken.
✗ Branch 514 not taken.
✗ Branch 515 not taken.
✗ Branch 517 not taken.
✗ Branch 518 not taken.
✗ Branch 520 not taken.
✗ Branch 521 not taken.
✗ Branch 523 not taken.
✗ Branch 524 not taken.
✓ Branch 526 taken 2 times.
✗ Branch 527 not taken.
✗ Branch 529 not taken.
✗ Branch 530 not taken.
✗ Branch 532 not taken.
✗ Branch 533 not taken.
✗ Branch 535 not taken.
✗ Branch 536 not taken.
✗ Branch 538 not taken.
✗ Branch 539 not taken.
✗ Branch 541 not taken.
✗ Branch 542 not taken.
✗ Branch 544 not taken.
✗ Branch 545 not taken.
✗ Branch 547 not taken.
✗ Branch 548 not taken.
✗ Branch 550 not taken.
✗ Branch 551 not taken.
✗ Branch 553 not taken.
✗ Branch 554 not taken.
✗ Branch 556 not taken.
✗ Branch 557 not taken.
✗ Branch 559 not taken.
✗ Branch 560 not taken.
✗ Branch 562 not taken.
✗ Branch 563 not taken.
✗ Branch 565 not taken.
✗ Branch 566 not taken.
✗ Branch 568 not taken.
✗ Branch 569 not taken.
✗ Branch 571 not taken.
✗ Branch 572 not taken.
✗ Branch 574 not taken.
✗ Branch 575 not taken.
✗ Branch 577 not taken.
✗ Branch 578 not taken.
✗ Branch 580 not taken.
✗ Branch 581 not taken.
✗ Branch 583 not taken.
✗ Branch 584 not taken.
✗ Branch 586 not taken.
✗ Branch 587 not taken.
✗ Branch 589 not taken.
✗ Branch 590 not taken.
✗ Branch 592 not taken.
✗ Branch 593 not taken.
✗ Branch 595 not taken.
✗ Branch 596 not taken.
✗ Branch 598 not taken.
✗ Branch 599 not taken.
✗ Branch 601 not taken.
✗ Branch 602 not taken.
✗ Branch 604 not taken.
✗ Branch 605 not taken.
✗ Branch 607 not taken.
✗ Branch 608 not taken.
✗ Branch 610 not taken.
✗ Branch 611 not taken.
✗ Branch 613 not taken.
✗ Branch 614 not taken.
✗ Branch 616 not taken.
✗ Branch 617 not taken.
✗ Branch 619 not taken.
✗ Branch 620 not taken.
✗ Branch 622 not taken.
✗ Branch 623 not taken.
✗ Branch 625 not taken.
✗ Branch 626 not taken.
✗ Branch 628 not taken.
✗ Branch 629 not taken.
✗ Branch 631 not taken.
✗ Branch 632 not taken.
✗ Branch 634 not taken.
✗ Branch 635 not taken.
✗ Branch 637 not taken.
✗ Branch 638 not taken.
✗ Branch 640 not taken.
✗ Branch 641 not taken.
✗ Branch 643 not taken.
✗ Branch 644 not taken.
✗ Branch 646 not taken.
✗ Branch 647 not taken.
✗ Branch 649 not taken.
✗ Branch 650 not taken.
✗ Branch 652 not taken.
✗ Branch 653 not taken.
✗ Branch 655 not taken.
✗ Branch 656 not taken.
✗ Branch 658 not taken.
✗ Branch 659 not taken.
✗ Branch 661 not taken.
✗ Branch 662 not taken.
✗ Branch 664 not taken.
✗ Branch 665 not taken.
✗ Branch 667 not taken.
✗ Branch 668 not taken.
✗ Branch 670 not taken.
✗ Branch 671 not taken.
✗ Branch 673 not taken.
✗ Branch 674 not taken.
✗ Branch 676 not taken.
✗ Branch 677 not taken.
✗ Branch 679 not taken.
✗ Branch 680 not taken.
✗ Branch 682 not taken.
✗ Branch 683 not taken.
✗ Branch 685 not taken.
✗ Branch 686 not taken.
✗ Branch 688 not taken.
✗ Branch 689 not taken.
✗ Branch 691 not taken.
✗ Branch 692 not taken.
✗ Branch 694 not taken.
✗ Branch 695 not taken.
✗ Branch 697 not taken.
✗ Branch 698 not taken.
✗ Branch 700 not taken.
✗ Branch 701 not taken.
✗ Branch 703 not taken.
✗ Branch 704 not taken.
✗ Branch 706 not taken.
✗ Branch 707 not taken.
✗ Branch 709 not taken.
✗ Branch 710 not taken.
✗ Branch 712 not taken.
✗ Branch 713 not taken.
✗ Branch 715 not taken.
✗ Branch 716 not taken.
✓ Branch 718 taken 1 times.
✗ Branch 719 not taken.
✗ Branch 721 not taken.
✗ Branch 722 not taken.
✗ Branch 724 not taken.
✗ Branch 725 not taken.
✗ Branch 727 not taken.
✗ Branch 728 not taken.
✗ Branch 730 not taken.
✗ Branch 731 not taken.
✗ Branch 733 not taken.
✗ Branch 734 not taken.
✗ Branch 736 not taken.
✗ Branch 737 not taken.
✗ Branch 739 not taken.
✗ Branch 740 not taken.
✗ Branch 742 not taken.
✗ Branch 743 not taken.
✗ Branch 745 not taken.
✗ Branch 746 not taken.
✗ Branch 748 not taken.
✗ Branch 749 not taken.
✗ Branch 751 not taken.
✗ Branch 752 not taken.
✗ Branch 754 not taken.
✗ Branch 755 not taken.
✗ Branch 757 not taken.
✗ Branch 758 not taken.
✗ Branch 760 not taken.
✗ Branch 761 not taken.
✗ Branch 763 not taken.
✗ Branch 764 not taken.
✗ Branch 766 not taken.
✗ Branch 767 not taken.
✗ Branch 769 not taken.
✗ Branch 770 not taken.
✗ Branch 772 not taken.
✗ Branch 773 not taken.
✗ Branch 775 not taken.
✗ Branch 776 not taken.
✗ Branch 778 not taken.
✗ Branch 779 not taken.
✗ Branch 781 not taken.
✗ Branch 782 not taken.
✗ Branch 784 not taken.
✗ Branch 785 not taken.
✗ Branch 787 not taken.
✗ Branch 788 not taken.
✗ Branch 790 not taken.
✗ Branch 791 not taken.
✗ Branch 793 not taken.
✗ Branch 794 not taken.
✗ Branch 796 not taken.
✗ Branch 797 not taken.
✗ Branch 799 not taken.
✗ Branch 800 not taken.
✗ Branch 802 not taken.
✗ Branch 803 not taken.
✗ Branch 805 not taken.
✗ Branch 806 not taken.
✗ Branch 808 not taken.
✗ Branch 809 not taken.
✗ Branch 811 not taken.
✗ Branch 812 not taken.
✗ Branch 814 not taken.
✗ Branch 815 not taken.
✗ Branch 817 not taken.
✗ Branch 818 not taken.
✗ Branch 820 not taken.
✗ Branch 821 not taken.
✗ Branch 823 not taken.
✗ Branch 824 not taken.
✗ Branch 826 not taken.
✗ Branch 827 not taken.
✗ Branch 829 not taken.
✗ Branch 830 not taken.
✗ Branch 832 not taken.
✗ Branch 833 not taken.
✗ Branch 835 not taken.
✗ Branch 836 not taken.
✗ Branch 838 not taken.
✗ Branch 839 not taken.
✗ Branch 841 not taken.
✗ Branch 842 not taken.
✗ Branch 844 not taken.
✗ Branch 845 not taken.
✗ Branch 847 not taken.
✗ Branch 848 not taken.
✗ Branch 850 not taken.
✗ Branch 851 not taken.
✗ Branch 853 not taken.
✗ Branch 854 not taken.
✗ Branch 856 not taken.
✗ Branch 857 not taken.
✗ Branch 859 not taken.
✗ Branch 860 not taken.
✗ Branch 862 not taken.
✗ Branch 863 not taken.
✗ Branch 865 not taken.
✗ Branch 866 not taken.
✗ Branch 868 not taken.
✗ Branch 869 not taken.
✗ Branch 871 not taken.
✗ Branch 872 not taken.
✗ Branch 874 not taken.
✗ Branch 875 not taken.
✗ Branch 877 not taken.
✗ Branch 878 not taken.
✗ Branch 880 not taken.
✗ Branch 881 not taken.
✗ Branch 883 not taken.
✗ Branch 884 not taken.
✓ Branch 886 taken 2 times.
✗ Branch 887 not taken.
✗ Branch 889 not taken.
✗ Branch 890 not taken.
✗ Branch 892 not taken.
✗ Branch 893 not taken.
✗ Branch 895 not taken.
✗ Branch 896 not taken.
✗ Branch 898 not taken.
✗ Branch 899 not taken.
✗ Branch 901 not taken.
✗ Branch 902 not taken.
✗ Branch 904 not taken.
✗ Branch 905 not taken.
✗ Branch 907 not taken.
✗ Branch 908 not taken.
✗ Branch 910 not taken.
✗ Branch 911 not taken.
✗ Branch 913 not taken.
✗ Branch 914 not taken.
✗ Branch 916 not taken.
✗ Branch 917 not taken.
✗ Branch 919 not taken.
✗ Branch 920 not taken.
✗ Branch 922 not taken.
✗ Branch 923 not taken.
✗ Branch 925 not taken.
✗ Branch 926 not taken.
✗ Branch 928 not taken.
✗ Branch 929 not taken.
✗ Branch 931 not taken.
✗ Branch 932 not taken.
✗ Branch 934 not taken.
✗ Branch 935 not taken.
✗ Branch 937 not taken.
✗ Branch 938 not taken.
✗ Branch 940 not taken.
✗ Branch 941 not taken.
✗ Branch 943 not taken.
✗ Branch 944 not taken.
✗ Branch 946 not taken.
✗ Branch 947 not taken.
✗ Branch 949 not taken.
✗ Branch 950 not taken.
✗ Branch 952 not taken.
✗ Branch 953 not taken.
✗ Branch 955 not taken.
✗ Branch 956 not taken.
✗ Branch 958 not taken.
✗ Branch 959 not taken.
✗ Branch 961 not taken.
✗ Branch 962 not taken.
✗ Branch 964 not taken.
✗ Branch 965 not taken.
✗ Branch 967 not taken.
✗ Branch 968 not taken.
✗ Branch 970 not taken.
✗ Branch 971 not taken.
✗ Branch 973 not taken.
✗ Branch 974 not taken.
✗ Branch 976 not taken.
✗ Branch 977 not taken.
✗ Branch 979 not taken.
✗ Branch 980 not taken.
✗ Branch 982 not taken.
✗ Branch 983 not taken.
✗ Branch 985 not taken.
✗ Branch 986 not taken.
✗ Branch 988 not taken.
✗ Branch 989 not taken.
✗ Branch 991 not taken.
✗ Branch 992 not taken.
✗ Branch 994 not taken.
✗ Branch 995 not taken.
✗ Branch 997 not taken.
✗ Branch 998 not taken.
✗ Branch 1000 not taken.
✗ Branch 1001 not taken.
✗ Branch 1003 not taken.
✗ Branch 1004 not taken.
✗ Branch 1006 not taken.
✗ Branch 1007 not taken.
✗ Branch 1009 not taken.
✗ Branch 1010 not taken.
✗ Branch 1012 not taken.
✗ Branch 1013 not taken.
✗ Branch 1015 not taken.
✗ Branch 1016 not taken.
✗ Branch 1018 not taken.
✗ Branch 1019 not taken.
✗ Branch 1021 not taken.
✗ Branch 1022 not taken.
✗ Branch 1024 not taken.
✗ Branch 1025 not taken.
✗ Branch 1027 not taken.
✗ Branch 1028 not taken.
✗ Branch 1030 not taken.
✗ Branch 1031 not taken.
✗ Branch 1033 not taken.
✗ Branch 1034 not taken.
✗ Branch 1036 not taken.
✗ Branch 1037 not taken.
✗ Branch 1039 not taken.
✗ Branch 1040 not taken.
✗ Branch 1042 not taken.
✗ Branch 1043 not taken.
✗ Branch 1045 not taken.
✗ Branch 1046 not taken.
✗ Branch 1048 not taken.
✗ Branch 1049 not taken.
✗ Branch 1051 not taken.
✗ Branch 1052 not taken.
✗ Branch 1054 not taken.
✗ Branch 1055 not taken.
✗ Branch 1057 not taken.
✗ Branch 1058 not taken.
✗ Branch 1060 not taken.
✗ Branch 1061 not taken.
✗ Branch 1063 not taken.
✗ Branch 1064 not taken.
✗ Branch 1066 not taken.
✗ Branch 1067 not taken.
✗ Branch 1069 not taken.
✗ Branch 1070 not taken.
✗ Branch 1072 not taken.
✗ Branch 1073 not taken.
✗ Branch 1075 not taken.
✗ Branch 1076 not taken.
✗ Branch 1078 not taken.
✗ Branch 1079 not taken.
✗ Branch 1081 not taken.
✗ Branch 1082 not taken.
✗ Branch 1084 not taken.
✗ Branch 1085 not taken.
✗ Branch 1087 not taken.
✗ Branch 1088 not taken.
✗ Branch 1090 not taken.
✗ Branch 1091 not taken.
✗ Branch 1093 not taken.
✗ Branch 1094 not taken.
✗ Branch 1096 not taken.
✗ Branch 1097 not taken.
✗ Branch 1099 not taken.
✗ Branch 1100 not taken.
✗ Branch 1102 not taken.
✗ Branch 1103 not taken.
✗ Branch 1105 not taken.
✗ Branch 1106 not taken.
✗ Branch 1108 not taken.
✗ Branch 1109 not taken.
✗ Branch 1111 not taken.
✗ Branch 1112 not taken.
✗ Branch 1114 not taken.
✗ Branch 1115 not taken.
✗ Branch 1117 not taken.
✗ Branch 1118 not taken.
✗ Branch 1120 not taken.
✗ Branch 1121 not taken.
✗ Branch 1123 not taken.
✗ Branch 1124 not taken.
✓ Branch 1126 taken 1 times.
✗ Branch 1127 not taken.
✗ Branch 1129 not taken.
✗ Branch 1130 not taken.
✗ Branch 1132 not taken.
✗ Branch 1133 not taken.
✗ Branch 1135 not taken.
✗ Branch 1136 not taken.
✗ Branch 1138 not taken.
✗ Branch 1139 not taken.
✗ Branch 1141 not taken.
✗ Branch 1142 not taken.
✗ Branch 1144 not taken.
✗ Branch 1145 not taken.
✗ Branch 1147 not taken.
✗ Branch 1148 not taken.
✗ Branch 1150 not taken.
✗ Branch 1151 not taken.
✗ Branch 1153 not taken.
✗ Branch 1154 not taken.
✗ Branch 1156 not taken.
✗ Branch 1157 not taken.
✗ Branch 1159 not taken.
✗ Branch 1160 not taken.
✗ Branch 1162 not taken.
✗ Branch 1163 not taken.
✗ Branch 1165 not taken.
✗ Branch 1166 not taken.
✗ Branch 1168 not taken.
✗ Branch 1169 not taken.
✗ Branch 1171 not taken.
✗ Branch 1172 not taken.
✗ Branch 1174 not taken.
✗ Branch 1175 not taken.
✗ Branch 1177 not taken.
✗ Branch 1178 not taken.
✗ Branch 1180 not taken.
✗ Branch 1181 not taken.
✗ Branch 1183 not taken.
✗ Branch 1184 not taken.
✗ Branch 1186 not taken.
✗ Branch 1187 not taken.
✗ Branch 1189 not taken.
✗ Branch 1190 not taken.
✗ Branch 1192 not taken.
✗ Branch 1193 not taken.
✗ Branch 1195 not taken.
✗ Branch 1196 not taken.
✗ Branch 1198 not taken.
✗ Branch 1199 not taken.
✗ Branch 1201 not taken.
✗ Branch 1202 not taken.
✗ Branch 1204 not taken.
✗ Branch 1205 not taken.
✗ Branch 1207 not taken.
✗ Branch 1208 not taken.
✗ Branch 1210 not taken.
✗ Branch 1211 not taken.
✗ Branch 1213 not taken.
✗ Branch 1214 not taken.
✗ Branch 1216 not taken.
✗ Branch 1217 not taken.
✗ Branch 1219 not taken.
✗ Branch 1220 not taken.
✗ Branch 1222 not taken.
✗ Branch 1223 not taken.
✗ Branch 1225 not taken.
✗ Branch 1226 not taken.
✗ Branch 1228 not taken.
✗ Branch 1229 not taken.
✗ Branch 1231 not taken.
✗ Branch 1232 not taken.
✗ Branch 1234 not taken.
✗ Branch 1235 not taken.
✗ Branch 1237 not taken.
✗ Branch 1238 not taken.
✗ Branch 1240 not taken.
✗ Branch 1241 not taken.
✗ Branch 1243 not taken.
✗ Branch 1244 not taken.
✗ Branch 1246 not taken.
✗ Branch 1247 not taken.
✗ Branch 1249 not taken.
✗ Branch 1250 not taken.
✗ Branch 1252 not taken.
✗ Branch 1253 not taken.
✗ Branch 1255 not taken.
✗ Branch 1256 not taken.
✗ Branch 1258 not taken.
✗ Branch 1259 not taken.
✗ Branch 1261 not taken.
✗ Branch 1262 not taken.
✗ Branch 1264 not taken.
✗ Branch 1265 not taken.
✗ Branch 1267 not taken.
✗ Branch 1268 not taken.
✗ Branch 1270 not taken.
✗ Branch 1271 not taken.
✗ Branch 1273 not taken.
✗ Branch 1274 not taken.
✗ Branch 1276 not taken.
✗ Branch 1277 not taken.
✗ Branch 1279 not taken.
✗ Branch 1280 not taken.
✗ Branch 1282 not taken.
✗ Branch 1283 not taken.
✗ Branch 1285 not taken.
✗ Branch 1286 not taken.
✗ Branch 1288 not taken.
✗ Branch 1289 not taken.
✗ Branch 1291 not taken.
✗ Branch 1292 not taken.
✗ Branch 1294 not taken.
✗ Branch 1295 not taken.
✗ Branch 1297 not taken.
✗ Branch 1298 not taken.
✗ Branch 1300 not taken.
✗ Branch 1301 not taken.
✗ Branch 1303 not taken.
✗ Branch 1304 not taken.
✗ Branch 1306 not taken.
✗ Branch 1307 not taken.
✗ Branch 1309 not taken.
✗ Branch 1310 not taken.
✗ Branch 1312 not taken.
✗ Branch 1313 not taken.
✗ Branch 1315 not taken.
✗ Branch 1316 not taken.
✗ Branch 1318 not taken.
✗ Branch 1319 not taken.
✗ Branch 1321 not taken.
✗ Branch 1322 not taken.
✗ Branch 1324 not taken.
✗ Branch 1325 not taken.
✗ Branch 1327 not taken.
✗ Branch 1328 not taken.
✗ Branch 1330 not taken.
✗ Branch 1331 not taken.
✗ Branch 1333 not taken.
✗ Branch 1334 not taken.
✗ Branch 1336 not taken.
✗ Branch 1337 not taken.
✗ Branch 1339 not taken.
✗ Branch 1340 not taken.
✗ Branch 1342 not taken.
✗ Branch 1343 not taken.
✗ Branch 1345 not taken.
✗ Branch 1346 not taken.
✗ Branch 1348 not taken.
✗ Branch 1349 not taken.
✗ Branch 1351 not taken.
✗ Branch 1352 not taken.
✗ Branch 1354 not taken.
✗ Branch 1355 not taken.
✗ Branch 1357 not taken.
✗ Branch 1358 not taken.
✗ Branch 1360 not taken.
✗ Branch 1361 not taken.
✗ Branch 1363 not taken.
✗ Branch 1364 not taken.
✗ Branch 1366 not taken.
✗ Branch 1367 not taken.
✗ Branch 1369 not taken.
✗ Branch 1370 not taken.
✗ Branch 1372 not taken.
✗ Branch 1373 not taken.
✗ Branch 1375 not taken.
✗ Branch 1376 not taken.
✗ Branch 1378 not taken.
✗ Branch 1379 not taken.
✗ Branch 1381 not taken.
✗ Branch 1382 not taken.
✗ Branch 1384 not taken.
✗ Branch 1385 not taken.
✗ Branch 1387 not taken.
✗ Branch 1388 not taken.
✗ Branch 1390 not taken.
✗ Branch 1391 not taken.
295 mRoot.topologyIntersection(other.root());
1722 41 }
1723
1724 template<typename RootNodeType>
1725 template<typename OtherRootNodeType>
1726 inline void
1727 Tree<RootNodeType>::topologyDifference(const Tree<OtherRootNodeType>& other)
1728 {
1729
9/20
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 13 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 5 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
42 this->clearAllAccessors();
1730
9/20
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 13 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 5 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
42 mRoot.topologyDifference(other.root());
1731 36 }
1732
1733 ////////////////////////////////////////
1734
1735
1736 /// @brief Helper class to adapt a three-argument (a, b, result) CombineOp functor
1737 /// into a single-argument functor that accepts a CombineArgs struct
1738 template<typename AValueT, typename CombineOp, typename BValueT = AValueT>
1739 struct CombineOpAdapter
1740 {
1741 8 CombineOpAdapter(CombineOp& _op): op(_op) {}
1742
1743 void operator()(CombineArgs<AValueT, BValueT>& args) const {
1744
4/16
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✓ Branch 51 taken 1 times.
✗ Branch 52 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✓ Branch 57 taken 1 times.
✗ Branch 58 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✓ Branch 63 taken 1 times.
✗ Branch 64 not taken.
224250 op(args.a(), args.b(), args.result());
1745 4 }
1746
1747 CombineOp& op;
1748 };
1749
1750
1751 template<typename RootNodeType>
1752 template<typename CombineOp>
1753 inline void
1754 Tree<RootNodeType>::combine(Tree& other, CombineOp& op, bool prune)
1755 {
1756 CombineOpAdapter<ValueType, CombineOp> extendedOp(op);
1757 this->combineExtended(other, extendedOp, prune);
1758 }
1759
1760
1761 /// @internal This overload is needed (for ICC and GCC, but not for VC) to disambiguate
1762 /// code like this: <tt>aTree.combine(bTree, MyCombineOp(...))</tt>.
1763 #ifndef _WIN32
1764 template<typename RootNodeType>
1765 template<typename CombineOp>
1766 inline void
1767 Tree<RootNodeType>::combine(Tree& other, const CombineOp& op, bool prune)
1768 {
1769 CombineOpAdapter<ValueType, const CombineOp> extendedOp(op);
1770 this->combineExtended(other, extendedOp, prune);
1771 }
1772 #endif
1773
1774
1775 template<typename RootNodeType>
1776 template<typename ExtendedCombineOp>
1777 inline void
1778 Tree<RootNodeType>::combineExtended(Tree& other, ExtendedCombineOp& op, bool prune)
1779 {
1780 4 this->clearAllAccessors();
1781 4 mRoot.combine(other.root(), op, prune);
1782 }
1783
1784
1785 /// @internal This overload is needed (for ICC and GCC, but not for VC) to disambiguate
1786 /// code like this: <tt>aTree.combineExtended(bTree, MyCombineOp(...))</tt>.
1787 #ifndef _WIN32
1788 template<typename RootNodeType>
1789 template<typename ExtendedCombineOp>
1790 inline void
1791 Tree<RootNodeType>::combineExtended(Tree& other, const ExtendedCombineOp& op, bool prune)
1792 {
1793 33 this->clearAllAccessors();
1794 33 mRoot.template combine<const ExtendedCombineOp>(other.mRoot, op, prune);
1795 }
1796 #endif
1797
1798
1799 template<typename RootNodeType>
1800 template<typename CombineOp, typename OtherTreeType>
1801 inline void
1802 Tree<RootNodeType>::combine2(const Tree& a, const OtherTreeType& b, CombineOp& op, bool prune)
1803 {
1804 CombineOpAdapter<ValueType, CombineOp, typename OtherTreeType::ValueType> extendedOp(op);
1805 this->combine2Extended(a, b, extendedOp, prune);
1806 }
1807
1808
1809 /// @internal This overload is needed (for ICC and GCC, but not for VC) to disambiguate
1810 /// code like this: <tt>tree.combine2(aTree, bTree, MyCombineOp(...))</tt>.
1811 #ifndef _WIN32
1812 template<typename RootNodeType>
1813 template<typename CombineOp, typename OtherTreeType>
1814 inline void
1815 Tree<RootNodeType>::combine2(const Tree& a, const OtherTreeType& b, const CombineOp& op, bool prune)
1816 {
1817 CombineOpAdapter<ValueType, const CombineOp, typename OtherTreeType::ValueType> extendedOp(op);
1818 this->combine2Extended(a, b, extendedOp, prune);
1819 }
1820 #endif
1821
1822
1823 template<typename RootNodeType>
1824 template<typename ExtendedCombineOp, typename OtherTreeType>
1825 inline void
1826 Tree<RootNodeType>::combine2Extended(const Tree& a, const OtherTreeType& b,
1827 ExtendedCombineOp& op, bool prune)
1828 {
1829
5/10
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
5 this->clearAllAccessors();
1830 mRoot.combine2(a.root(), b.root(), op, prune);
1831 }
1832
1833
1834 /// @internal This overload is needed (for ICC and GCC, but not for VC) to disambiguate
1835 /// code like the following, where the functor argument is a temporary:
1836 /// <tt>tree.combine2Extended(aTree, bTree, MyCombineOp(...))</tt>.
1837 #ifndef _WIN32
1838 template<typename RootNodeType>
1839 template<typename ExtendedCombineOp, typename OtherTreeType>
1840 inline void
1841 Tree<RootNodeType>::combine2Extended(const Tree& a, const OtherTreeType& b,
1842 const ExtendedCombineOp& op, bool prune)
1843 {
1844 this->clearAllAccessors();
1845 mRoot.template combine2<const ExtendedCombineOp>(a.root(), b.root(), op, prune);
1846 }
1847 #endif
1848
1849
1850 ////////////////////////////////////////
1851
1852
1853 template<typename RootNodeType>
1854 template<typename VisitorOp>
1855 inline void
1856 Tree<RootNodeType>::visit(VisitorOp& op)
1857 {
1858
5/10
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
5 this->clearAllAccessors();
1859 mRoot.template visit<VisitorOp>(op);
1860 5 }
1861
1862
1863 template<typename RootNodeType>
1864 template<typename VisitorOp>
1865 inline void
1866 Tree<RootNodeType>::visit(VisitorOp& op) const
1867 {
1868 mRoot.template visit<VisitorOp>(op);
1869 10 }
1870
1871
1872 /// @internal This overload is needed (for ICC and GCC, but not for VC) to disambiguate
1873 /// code like this: <tt>tree.visit(MyVisitorOp(...))</tt>.
1874 template<typename RootNodeType>
1875 template<typename VisitorOp>
1876 inline void
1877 Tree<RootNodeType>::visit(const VisitorOp& op)
1878 {
1879 this->clearAllAccessors();
1880 mRoot.template visit<const VisitorOp>(op);
1881 }
1882
1883
1884 /// @internal This overload is needed (for ICC and GCC, but not for VC) to disambiguate
1885 /// code like this: <tt>tree.visit(MyVisitorOp(...))</tt>.
1886 template<typename RootNodeType>
1887 template<typename VisitorOp>
1888 inline void
1889 Tree<RootNodeType>::visit(const VisitorOp& op) const
1890 {
1891 mRoot.template visit<const VisitorOp>(op);
1892 }
1893
1894
1895 ////////////////////////////////////////
1896
1897
1898 template<typename RootNodeType>
1899 template<typename OtherTreeType, typename VisitorOp>
1900 inline void
1901 Tree<RootNodeType>::visit2(OtherTreeType& other, VisitorOp& op)
1902 {
1903
5/10
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
5 this->clearAllAccessors();
1904 using OtherRootNodeType = typename OtherTreeType::RootNodeType;
1905 mRoot.template visit2<OtherRootNodeType, VisitorOp>(other.root(), op);
1906 5 }
1907
1908
1909 template<typename RootNodeType>
1910 template<typename OtherTreeType, typename VisitorOp>
1911 inline void
1912 Tree<RootNodeType>::visit2(OtherTreeType& other, VisitorOp& op) const
1913 {
1914 using OtherRootNodeType = typename OtherTreeType::RootNodeType;
1915 mRoot.template visit2<OtherRootNodeType, VisitorOp>(other.root(), op);
1916 }
1917
1918
1919 /// @internal This overload is needed (for ICC and GCC, but not for VC) to disambiguate
1920 /// code like this: <tt>aTree.visit2(bTree, MyVisitorOp(...))</tt>.
1921 template<typename RootNodeType>
1922 template<typename OtherTreeType, typename VisitorOp>
1923 inline void
1924 Tree<RootNodeType>::visit2(OtherTreeType& other, const VisitorOp& op)
1925 {
1926 this->clearAllAccessors();
1927 using OtherRootNodeType = typename OtherTreeType::RootNodeType;
1928 mRoot.template visit2<OtherRootNodeType, const VisitorOp>(other.root(), op);
1929 }
1930
1931
1932 /// @internal This overload is needed (for ICC and GCC, but not for VC) to disambiguate
1933 /// code like this: <tt>aTree.visit2(bTree, MyVisitorOp(...))</tt>.
1934 template<typename RootNodeType>
1935 template<typename OtherTreeType, typename VisitorOp>
1936 inline void
1937 Tree<RootNodeType>::visit2(OtherTreeType& other, const VisitorOp& op) const
1938 {
1939 using OtherRootNodeType = typename OtherTreeType::RootNodeType;
1940 mRoot.template visit2<OtherRootNodeType, const VisitorOp>(other.root(), op);
1941 }
1942
1943
1944 ////////////////////////////////////////
1945
1946
1947 template<typename RootNodeType>
1948 inline const Name&
1949 Tree<RootNodeType>::treeType()
1950 {
1951 static std::once_flag once;
1952
7/33
✓ Branch 1 taken 41 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✓ Branch 35 taken 1 times.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✓ Branch 38 taken 1 times.
✗ Branch 39 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
294596 std::call_once(once, []()
1953 {
1954 std::vector<Index> dims;
1955
19/46
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 3 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
41 Tree::getNodeLog2Dims(dims);
1956
19/46
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 6 taken 5 times.
✗ Branch 7 not taken.
✓ Branch 11 taken 6 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 31 taken 3 times.
✗ Branch 32 not taken.
✓ Branch 36 taken 3 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 51 taken 1 times.
✗ Branch 52 not taken.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 71 taken 1 times.
✗ Branch 72 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✓ Branch 81 taken 1 times.
✗ Branch 82 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✗ Branch 96 not taken.
✗ Branch 97 not taken.
✓ Branch 101 taken 1 times.
✗ Branch 102 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 111 not taken.
✗ Branch 112 not taken.
82 std::ostringstream ostr;
1957
19/46
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 3 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
41 ostr << "Tree_" << typeNameAsString<BuildType>();
1958
38/46
✓ Branch 0 taken 15 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 15 times.
✓ Branch 3 taken 5 times.
✓ Branch 4 taken 18 times.
✓ Branch 5 taken 6 times.
✓ Branch 6 taken 13 times.
✓ Branch 7 taken 4 times.
✓ Branch 8 taken 6 times.
✓ Branch 9 taken 2 times.
✓ Branch 10 taken 3 times.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 8 times.
✓ Branch 13 taken 3 times.
✓ Branch 14 taken 9 times.
✓ Branch 15 taken 3 times.
✓ Branch 16 taken 3 times.
✓ Branch 17 taken 1 times.
✓ Branch 18 taken 3 times.
✓ Branch 19 taken 1 times.
✓ Branch 20 taken 3 times.
✓ Branch 21 taken 1 times.
✓ Branch 22 taken 6 times.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 3 times.
✓ Branch 25 taken 1 times.
✓ Branch 26 taken 3 times.
✓ Branch 27 taken 1 times.
✓ Branch 28 taken 3 times.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 3 times.
✓ Branch 33 taken 1 times.
✓ Branch 34 taken 3 times.
✓ Branch 35 taken 1 times.
✓ Branch 36 taken 3 times.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 3 times.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
164 for (size_t i = 1, N = dims.size(); i < N; ++i) { // start from 1 to skip the RootNode
1959
19/46
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 15 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 18 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 13 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 6 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 8 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 9 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 3 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 3 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 3 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 6 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 3 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 3 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 3 times.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✓ Branch 49 taken 3 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 3 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 3 times.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 61 taken 3 times.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
123 ostr << "_" << dims[i];
1960 }
1961
19/46
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 6 times.
✗ Branch 10 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 14 not taken.
✓ Branch 17 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 25 taken 3 times.
✗ Branch 26 not taken.
✓ Branch 29 taken 3 times.
✗ Branch 30 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 2 times.
✗ Branch 46 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 53 taken 1 times.
✗ Branch 54 not taken.
✓ Branch 57 taken 1 times.
✗ Branch 58 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 65 taken 1 times.
✗ Branch 66 not taken.
✓ Branch 69 taken 1 times.
✗ Branch 70 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✓ Branch 81 taken 1 times.
✗ Branch 82 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
41 sTreeTypeName.reset(new Name(ostr.str()));
1962 });
1963 return *sTreeTypeName;
1964 }
1965
1966
1967 template<typename RootNodeType>
1968 template<typename OtherRootNodeType>
1969 inline bool
1970 Tree<RootNodeType>::hasSameTopology(const Tree<OtherRootNodeType>& other) const
1971 {
1972
44/88
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 30 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 7 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 5 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 5 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 4 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 4 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 4 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 4 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 3 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 3 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 3 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 3 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 2 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 2 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 2 times.
✗ Branch 62 not taken.
✓ Branch 64 taken 2 times.
✗ Branch 65 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✓ Branch 70 taken 2 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 2 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 2 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 2 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 2 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 2 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 2 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 2 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 2 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 2 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 2 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 2 times.
✗ Branch 104 not taken.
✓ Branch 106 taken 2 times.
✗ Branch 107 not taken.
✓ Branch 109 taken 1 times.
✗ Branch 110 not taken.
✓ Branch 112 taken 1 times.
✗ Branch 113 not taken.
✓ Branch 115 taken 1 times.
✗ Branch 116 not taken.
✓ Branch 118 taken 1 times.
✗ Branch 119 not taken.
✓ Branch 121 taken 1 times.
✗ Branch 122 not taken.
✓ Branch 124 taken 1 times.
✗ Branch 125 not taken.
✓ Branch 127 taken 1 times.
✗ Branch 128 not taken.
✓ Branch 130 taken 1 times.
✗ Branch 131 not taken.
3384 return mRoot.hasSameTopology(other.root());
1973 }
1974
1975
1976 template<typename RootNodeType>
1977 inline bool
1978 80 Tree<RootNodeType>::evalLeafBoundingBox(CoordBBox& bbox) const
1979 {
1980 80 bbox.reset(); // default invalid bbox
1981
1982
2/2
✓ Branch 0 taken 39 times.
✓ Branch 1 taken 1 times.
80 if (this->empty()) return false; // empty
1983
1984 78 mRoot.evalActiveBoundingBox(bbox, false);
1985
1986 78 return !bbox.empty();
1987 }
1988
1989 template<typename RootNodeType>
1990 inline bool
1991 748 Tree<RootNodeType>::evalActiveVoxelBoundingBox(CoordBBox& bbox) const
1992 {
1993 748 bbox.reset(); // default invalid bbox
1994
1995
2/2
✓ Branch 0 taken 373 times.
✓ Branch 1 taken 1 times.
748 if (this->empty()) return false; // empty
1996
1997 746 mRoot.evalActiveBoundingBox(bbox, true);
1998
1999 746 return !bbox.empty();
2000 }
2001
2002
2003 template<typename RootNodeType>
2004 inline bool
2005 2 Tree<RootNodeType>::evalActiveVoxelDim(Coord& dim) const
2006 {
2007 2 CoordBBox bbox;
2008 2 bool notEmpty = this->evalActiveVoxelBoundingBox(bbox);
2009 2 dim = bbox.extents();
2010 2 return notEmpty;
2011 }
2012
2013
2014 template<typename RootNodeType>
2015 inline bool
2016 Tree<RootNodeType>::evalLeafDim(Coord& dim) const
2017 {
2018 CoordBBox bbox;
2019 bool notEmpty = this->evalLeafBoundingBox(bbox);
2020 dim = bbox.extents();
2021 return notEmpty;
2022 }
2023
2024
2025 template<typename RootNodeType>
2026 inline void
2027 Tree<RootNodeType>::evalMinMax(ValueType& minVal, ValueType& maxVal) const
2028 {
2029 minVal = maxVal = zeroVal<ValueType>();
2030 if (ValueOnCIter iter = this->cbeginValueOn()) {
2031 minVal = maxVal = *iter;
2032 for (++iter; iter; ++iter) {
2033 const ValueType& val = *iter;
2034 if (math::cwiseLessThan(val, minVal)) minVal = val;
2035 if (math::cwiseGreaterThan(val, maxVal)) maxVal = val;
2036 }
2037 }
2038 }
2039
2040
2041 template<typename RootNodeType>
2042 inline void
2043
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 47 times.
94 Tree<RootNodeType>::getNodeLog2Dims(std::vector<Index>& dims)
2044 {
2045 dims.clear();
2046 RootNodeType::getNodeLog2Dims(dims);
2047 94 }
2048
2049
2050 template<typename RootNodeType>
2051 inline void
2052 Tree<RootNodeType>::print(std::ostream& os, int verboseLevel) const
2053 {
2054 if (verboseLevel <= 0) return;
2055
2056 /// @todo Consider using boost::io::ios_precision_saver instead.
2057 struct OnExit {
2058 std::ostream& os;
2059 std::streamsize savedPrecision;
2060 OnExit(std::ostream& _os): os(_os), savedPrecision(os.precision()) {}
2061 ~OnExit() { os.precision(savedPrecision); }
2062 };
2063 OnExit restorePrecision(os);
2064
2065 std::vector<Index> dims;
2066 Tree::getNodeLog2Dims(dims);// leaf is the last element
2067
2068 os << "Information about Tree:\n"
2069 << " Type: " << this->type() << "\n";
2070
2071 os << " Configuration:\n";
2072
2073 if (verboseLevel <= 1) {
2074 // Print node types and sizes.
2075 os << " Root(" << mRoot.getTableSize() << ")";
2076 if (dims.size() > 1) {
2077 for (size_t i = 1, N = dims.size() - 1; i < N; ++i) {
2078 os << ", Internal(" << (1 << dims[i]) << "^3)";
2079 }
2080 os << ", Leaf(" << (1 << dims.back()) << "^3)\n";
2081 }
2082 os << " Background value: " << mRoot.background() << "\n";
2083 return;
2084 }
2085
2086 // The following is tree information that is expensive to extract.
2087
2088 ValueType minVal = zeroVal<ValueType>(), maxVal = zeroVal<ValueType>();
2089 if (verboseLevel > 3) {
2090 // This forces loading of all non-resident nodes.
2091 const math::MinMax<ValueType> extrema = tools::minMax(*this);
2092 minVal = extrema.min();
2093 maxVal = extrema.max();
2094 }
2095
2096 const auto nodeCount = this->nodeCount();//fast
2097 const Index32 leafCount = nodeCount.front();// leaf is the first element
2098 assert(dims.size() == nodeCount.size());
2099
2100 Index64 totalNodeCount = 0;
2101 for (size_t i = 0; i < nodeCount.size(); ++i) totalNodeCount += nodeCount[i];
2102
2103 // Print node types, counts and sizes.
2104 os << " Root(1 x " << mRoot.getTableSize() << ")";
2105 if (dims.size() >= 2) {
2106 for (size_t i = 1, N = dims.size() - 1; i < N; ++i) {
2107 os << ", Internal(" << util::formattedInt(nodeCount[N - i]);
2108 os << " x " << (1 << dims[i]) << "^3)";
2109 }
2110 os << ", Leaf(" << util::formattedInt(leafCount);
2111 os << " x " << (1 << dims.back()) << "^3)\n";
2112 }
2113 os << " Background value: " << mRoot.background() << "\n";
2114
2115 // Statistics of topology and values
2116
2117 if (verboseLevel > 3) {
2118 os << " Min value: " << minVal << "\n";
2119 os << " Max value: " << maxVal << "\n";
2120 }
2121
2122 const Index64
2123 numActiveVoxels = this->activeVoxelCount(),
2124 numActiveLeafVoxels = this->activeLeafVoxelCount(),
2125 numActiveTiles = this->activeTileCount();
2126
2127 os << " Number of active voxels: " << util::formattedInt(numActiveVoxels) << "\n";
2128 os << " Number of active tiles: " << util::formattedInt(numActiveTiles) << "\n";
2129
2130 Coord dim(0, 0, 0);
2131 Index64 totalVoxels = 0;
2132 if (numActiveVoxels) { // nonempty
2133 CoordBBox bbox;
2134 this->evalActiveVoxelBoundingBox(bbox);
2135 dim = bbox.extents();
2136 totalVoxels = dim.x() * uint64_t(dim.y()) * dim.z();
2137
2138 os << " Bounding box of active voxels: " << bbox << "\n";
2139 os << " Dimensions of active voxels: "
2140 << dim[0] << " x " << dim[1] << " x " << dim[2] << "\n";
2141
2142 const double activeRatio = (100.0 * double(numActiveVoxels)) / double(totalVoxels);
2143 os << " Percentage of active voxels: " << std::setprecision(3) << activeRatio << "%\n";
2144
2145 if (leafCount > 0) {
2146 const double fillRatio = (100.0 * double(numActiveLeafVoxels))
2147 / (double(leafCount) * double(LeafNodeType::NUM_VOXELS));
2148 os << " Average leaf node fill ratio: " << fillRatio << "%\n";
2149 }
2150
2151 if (verboseLevel > 2) {
2152 Index64 sum = 0;// count the number of unallocated leaf nodes
2153 for (auto it = this->cbeginLeaf(); it; ++it) if (!it->isAllocated()) ++sum;
2154 os << " Number of unallocated nodes: "
2155 << util::formattedInt(sum) << " ("
2156 << (100.0 * double(sum) / double(totalNodeCount)) << "%)\n";
2157 }
2158 } else {
2159 os << " Tree is empty!\n";
2160 }
2161 os << std::flush;
2162
2163 if (verboseLevel == 2) return;
2164
2165 // Memory footprint in bytes
2166 const Index64
2167 actualMem = this->memUsage(),
2168 denseMem = sizeof(ValueType) * totalVoxels,
2169 voxelsMem = sizeof(ValueType) * numActiveLeafVoxels;
2170 ///< @todo not accurate for BoolTree (and probably should count tile values)
2171
2172 os << "Memory footprint:\n";
2173 util::printBytes(os, actualMem, " Actual: ");
2174 util::printBytes(os, voxelsMem, " Active leaf voxels: ");
2175
2176 if (numActiveVoxels) {
2177 util::printBytes(os, denseMem, " Dense equivalent: ");
2178 os << " Actual footprint is " << (100.0 * double(actualMem) / double(denseMem))
2179 << "% of an equivalent dense volume\n";
2180 os << " Leaf voxel footprint is " << (100.0 * double(voxelsMem) / double(actualMem))
2181 << "% of actual footprint\n";
2182 }
2183 }
2184
2185 } // namespace tree
2186 } // namespace OPENVDB_VERSION_NAME
2187 } // namespace openvdb
2188
2189 #endif // OPENVDB_TREE_TREE_HAS_BEEN_INCLUDED
2190