| Line | Branch | Exec | Source | 
|---|---|---|---|
| 1 | // Copyright Contributors to the OpenVDB Project | ||
| 2 | // SPDX-License-Identifier: MPL-2.0 | ||
| 3 | // | ||
| 4 | /// @file tree/Iterator.h | ||
| 5 | /// | ||
| 6 | /// @author Peter Cucka and Ken Museth | ||
| 7 | |||
| 8 | #ifndef OPENVDB_TREE_ITERATOR_HAS_BEEN_INCLUDED | ||
| 9 | #define OPENVDB_TREE_ITERATOR_HAS_BEEN_INCLUDED | ||
| 10 | |||
| 11 | #include <sstream> | ||
| 12 | #include <type_traits> | ||
| 13 | #include <openvdb/util/NodeMasks.h> | ||
| 14 | #include <openvdb/Exceptions.h> | ||
| 15 | |||
| 16 | namespace openvdb { | ||
| 17 | OPENVDB_USE_VERSION_NAMESPACE | ||
| 18 | namespace OPENVDB_VERSION_NAME { | ||
| 19 | namespace tree { | ||
| 20 | |||
| 21 | /// @brief Base class for iterators over internal and leaf nodes | ||
| 22 | /// | ||
| 23 | /// This class is typically not instantiated directly, since it doesn't provide methods | ||
| 24 | /// to dereference the iterator. Those methods (@vdblink::tree::SparseIteratorBase::operator*() | ||
| 25 | /// operator*()@endlink, @vdblink::tree::SparseIteratorBase::setValue() setValue()@endlink, etc.) | ||
| 26 | /// are implemented in the @vdblink::tree::SparseIteratorBase sparse@endlink and | ||
| 27 | /// @vdblink::tree::DenseIteratorBase dense@endlink iterator subclasses. | ||
| 28 | template<typename MaskIterT, typename NodeT> | ||
| 29 | 28/57✗ Branch 0 not taken. ✓ Branch 1 taken 4 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 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 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. | 6244296 | class IteratorBase | 
| 30 | { | ||
| 31 | public: | ||
| 32 | 424676 | IteratorBase(): mParentNode(nullptr) {} | |
| 33 | 165/1593✗ Branch 0 not taken. ✓ Branch 1 taken 19 times. ✗ Branch 2 not taken. ✓ Branch 3 taken 18 times. ✓ Branch 4 taken 2 times. ✓ Branch 5 taken 12 times. ✗ Branch 6 not taken. ✓ Branch 7 taken 2002 times. ✗ Branch 8 not taken. ✓ Branch 9 taken 16 times. ✓ Branch 10 taken 1 times. ✓ Branch 11 taken 16 times. ✗ Branch 12 not taken. ✓ Branch 13 taken 12 times. ✗ Branch 14 not taken. ✓ Branch 15 taken 54 times. ✗ Branch 16 not taken. ✓ Branch 17 taken 29 times. ✗ Branch 18 not taken. ✓ Branch 19 taken 18904 times. ✗ Branch 20 not taken. ✓ Branch 21 taken 12 times. ✗ Branch 22 not taken. ✓ Branch 23 taken 522 times. ✗ Branch 24 not taken. ✓ Branch 25 taken 11761 times. ✗ Branch 26 not taken. ✓ Branch 27 taken 2694 times. ✓ Branch 28 taken 3 times. ✓ Branch 29 taken 564 times. ✗ Branch 30 not taken. ✗ Branch 31 not taken. ✗ Branch 32 not taken. ✓ Branch 33 taken 514 times. ✓ Branch 34 taken 3 times. ✓ Branch 35 taken 2822 times. ✓ Branch 36 taken 6 times. ✓ Branch 37 taken 8 times. ✗ Branch 38 not taken. ✓ Branch 39 taken 8 times. ✓ Branch 40 taken 8 times. ✓ Branch 41 taken 652 times. ✓ Branch 42 taken 9 times. ✓ Branch 43 taken 1214 times. ✗ Branch 44 not taken. ✓ Branch 45 taken 103 times. ✓ Branch 46 taken 6 times. ✓ Branch 47 taken 540 times. ✗ Branch 48 not taken. ✓ Branch 49 taken 570 times. ✗ Branch 50 not taken. ✗ Branch 51 not taken. ✓ Branch 52 taken 4 times. ✓ Branch 53 taken 24 times. ✗ Branch 54 not taken. ✓ Branch 55 taken 12 times. ✓ Branch 56 taken 45 times. ✓ Branch 57 taken 24 times. ✓ Branch 58 taken 62 times. ✗ Branch 59 not taken. ✓ Branch 60 taken 56 times. ✓ Branch 61 taken 10 times. ✗ Branch 62 not taken. ✓ Branch 63 taken 5 times. ✓ Branch 64 taken 649 times. ✗ Branch 65 not taken. ✓ Branch 66 taken 1 times. ✗ Branch 67 not taken. ✓ Branch 68 taken 1 times. ✗ Branch 69 not taken. ✓ Branch 70 taken 3 times. ✓ Branch 71 taken 1 times. ✗ Branch 72 not taken. ✓ Branch 73 taken 3 times. ✓ Branch 74 taken 1 times. ✗ Branch 75 not taken. ✓ Branch 76 taken 2353 times. ✓ Branch 77 taken 1 times. ✗ Branch 78 not taken. ✓ Branch 79 taken 3 times. ✓ Branch 80 taken 1 times. ✗ 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 taken 9 times. ✗ Branch 90 not taken. ✗ Branch 91 not taken. ✓ Branch 92 taken 4 times. ✓ Branch 93 taken 1 times. ✗ Branch 94 not taken. ✗ Branch 95 not taken. ✓ Branch 96 taken 1 times. ✗ Branch 97 not taken. ✓ Branch 98 taken 2 times. ✓ Branch 99 taken 1 times. ✗ Branch 100 not taken. ✗ Branch 101 not taken. ✓ Branch 102 taken 1 times. ✓ Branch 103 taken 3 times. ✗ Branch 104 not taken. ✓ Branch 105 taken 1 times. ✗ Branch 106 not taken. ✗ Branch 107 not taken. ✗ Branch 108 not taken. ✗ Branch 109 not taken. ✗ Branch 110 not taken. ✗ Branch 111 not taken. ✗ Branch 112 not taken. ✓ Branch 113 taken 4 times. ✗ Branch 114 not taken. ✗ Branch 115 not taken. ✓ Branch 116 taken 2 times. ✗ Branch 117 not taken. ✗ Branch 118 not taken. ✓ Branch 119 taken 8360 times. ✗ Branch 120 not taken. ✗ Branch 121 not taken. ✓ Branch 122 taken 2 times. ✗ Branch 123 not taken. ✗ Branch 124 not taken. ✓ Branch 125 taken 2 times. ✗ Branch 126 not taken. ✓ Branch 127 taken 2350 times. ✓ Branch 128 taken 14916 times. ✗ Branch 129 not taken. ✓ Branch 130 taken 9 times. ✓ Branch 131 taken 1 times. ✗ Branch 132 not taken. ✓ Branch 133 taken 2303 times. ✓ Branch 134 taken 1 times. ✗ Branch 135 not taken. ✓ Branch 136 taken 3 times. ✓ Branch 137 taken 1 times. ✗ Branch 138 not taken. ✓ Branch 139 taken 3 times. ✓ Branch 140 taken 1 times. ✗ Branch 141 not taken. ✓ Branch 142 taken 3 times. ✓ Branch 143 taken 1 times. ✗ Branch 144 not taken. ✗ Branch 145 not taken. ✓ Branch 146 taken 1 times. ✗ Branch 147 not taken. ✗ Branch 148 not taken. ✓ Branch 149 taken 1 times. ✗ Branch 150 not taken. ✗ Branch 151 not taken. ✓ Branch 152 taken 1 times. ✗ Branch 153 not taken. ✗ Branch 154 not taken. ✓ Branch 155 taken 1 times. ✗ Branch 156 not taken. ✗ 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 169 not taken. ✓ Branch 170 taken 1 times. ✗ Branch 171 not taken. ✗ Branch 172 not taken. ✓ Branch 173 taken 103 times. ✗ Branch 174 not taken. ✓ Branch 175 taken 68 times. ✓ Branch 176 taken 1 times. ✗ Branch 177 not taken. ✗ Branch 178 not taken. ✓ Branch 179 taken 1 times. ✗ Branch 180 not taken. ✗ Branch 181 not taken. ✓ Branch 182 taken 1 times. ✗ Branch 183 not taken. ✗ Branch 184 not taken. ✓ Branch 185 taken 1 times. ✗ Branch 186 not taken. ✗ Branch 187 not taken. ✓ Branch 188 taken 1 times. ✓ Branch 189 taken 156 times. ✗ Branch 190 not taken. ✓ Branch 191 taken 105 times. ✗ Branch 192 not taken. ✗ Branch 193 not taken. ✓ Branch 194 taken 1 times. ✗ Branch 195 not taken. ✗ Branch 196 not taken. ✓ Branch 197 taken 1 times. ✗ Branch 198 not taken. ✗ Branch 199 not taken. ✓ Branch 200 taken 1 times. ✗ Branch 201 not taken. ✗ Branch 202 not taken. ✓ Branch 203 taken 1 times. ✗ Branch 204 not taken. ✓ Branch 205 taken 171 times. ✓ Branch 206 taken 1 times. ✓ Branch 207 taken 114 times. ✗ Branch 208 not taken. ✓ Branch 209 taken 1 times. ✗ Branch 210 not taken. ✗ Branch 211 not taken. ✓ Branch 212 taken 1 times. ✗ Branch 213 not taken. ✗ Branch 214 not taken. ✓ Branch 215 taken 1 times. ✗ Branch 216 not taken. ✗ Branch 217 not taken. ✓ Branch 218 taken 1 times. ✗ Branch 219 not taken. ✗ Branch 220 not taken. ✓ Branch 221 taken 151 times. ✗ Branch 222 not taken. ✓ Branch 223 taken 100 times. ✓ Branch 224 taken 1 times. ✗ Branch 225 not taken. ✗ Branch 226 not taken. ✓ Branch 227 taken 1 times. ✗ 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 taken 153 times. ✗ Branch 238 not taken. ✓ Branch 239 taken 102 times. ✗ 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 taken 162 times. ✗ Branch 254 not taken. ✓ Branch 255 taken 108 times. ✗ 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 taken 165 times. ✗ Branch 270 not taken. ✓ Branch 271 taken 110 times. ✗ 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 taken 174 times. ✗ Branch 286 not taken. ✓ Branch 287 taken 116 times. ✗ 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 taken 186 times. ✗ Branch 302 not taken. ✓ Branch 303 taken 124 times. ✗ 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 taken 306 times. ✗ Branch 318 not taken. ✓ Branch 319 taken 204 times. ✗ Branch 320 not taken. ✗ Branch 321 not taken. ✗ Branch 322 not taken. ✗ Branch 323 not taken. ✗ Branch 324 not taken. ✗ Branch 325 not taken. ✗ Branch 326 not taken. ✗ Branch 327 not taken. ✗ Branch 328 not taken. ✗ Branch 329 not taken. ✗ Branch 330 not taken. ✗ Branch 331 not taken. ✗ Branch 332 not taken. ✓ Branch 333 taken 357 times. ✗ Branch 334 not taken. ✓ Branch 335 taken 238 times. ✗ Branch 336 not taken. ✗ Branch 337 not taken. ✗ Branch 338 not taken. ✗ Branch 339 not taken. ✗ Branch 340 not taken. ✗ Branch 341 not taken. ✗ Branch 342 not taken. ✗ Branch 343 not taken. ✗ Branch 344 not taken. ✗ Branch 345 not taken. ✗ Branch 346 not taken. ✗ Branch 347 not taken. ✗ Branch 348 not taken. ✓ Branch 349 taken 105 times. ✗ Branch 350 not taken. ✓ Branch 351 taken 70 times. ✗ Branch 352 not taken. ✗ Branch 353 not taken. ✗ Branch 354 not taken. ✗ Branch 355 not taken. ✗ Branch 356 not taken. ✗ Branch 357 not taken. ✗ Branch 358 not taken. ✗ Branch 359 not taken. ✗ Branch 360 not taken. ✗ Branch 361 not taken. ✗ Branch 362 not taken. ✗ Branch 363 not taken. ✗ Branch 364 not taken. ✓ Branch 365 taken 105 times. ✗ Branch 366 not taken. ✓ Branch 367 taken 70 times. ✗ Branch 368 not taken. ✗ Branch 369 not taken. ✗ Branch 370 not taken. ✗ Branch 371 not taken. ✗ Branch 372 not taken. ✗ Branch 373 not taken. ✗ Branch 374 not taken. ✗ Branch 375 not taken. ✗ Branch 376 not taken. ✗ Branch 377 not taken. ✗ Branch 378 not taken. ✗ Branch 379 not taken. ✗ Branch 380 not taken. ✓ Branch 381 taken 105 times. ✗ Branch 382 not taken. ✓ Branch 383 taken 70 times. ✗ Branch 384 not taken. ✗ Branch 385 not taken. ✗ Branch 386 not taken. ✗ Branch 387 not taken. ✗ Branch 388 not taken. ✗ Branch 389 not taken. ✗ Branch 390 not taken. ✗ Branch 391 not taken. ✗ Branch 392 not taken. ✗ Branch 393 not taken. ✗ Branch 394 not taken. ✗ Branch 395 not taken. ✗ Branch 396 not taken. ✓ Branch 397 taken 1302 times. ✗ Branch 398 not taken. ✓ Branch 399 taken 868 times. ✗ Branch 400 not taken. ✗ Branch 401 not taken. ✗ Branch 402 not taken. ✗ Branch 403 not taken. ✗ Branch 404 not taken. ✗ Branch 405 not taken. ✗ Branch 406 not taken. ✗ Branch 407 not taken. ✗ Branch 408 not taken. ✗ Branch 409 not taken. ✗ Branch 410 not taken. ✗ Branch 411 not taken. ✗ Branch 412 not taken. ✓ Branch 413 taken 78 times. ✗ Branch 414 not taken. ✓ Branch 415 taken 52 times. ✗ Branch 416 not taken. ✗ Branch 417 not taken. ✗ Branch 418 not taken. ✗ Branch 419 not taken. ✗ Branch 420 not taken. ✗ Branch 421 not taken. ✗ Branch 422 not taken. ✗ Branch 423 not taken. ✗ Branch 424 not taken. ✗ Branch 425 not taken. ✗ Branch 426 not taken. ✗ Branch 427 not taken. ✗ Branch 428 not taken. ✓ Branch 429 taken 765 times. ✗ Branch 430 not taken. ✓ Branch 431 taken 511 times. ✗ Branch 432 not taken. ✗ Branch 433 not taken. ✗ Branch 434 not taken. ✗ Branch 435 not taken. ✗ Branch 436 not taken. ✗ Branch 437 not taken. ✗ Branch 438 not taken. ✗ Branch 439 not taken. ✗ Branch 440 not taken. ✗ Branch 441 not taken. ✗ Branch 442 not taken. ✗ Branch 443 not taken. ✗ Branch 444 not taken. ✓ Branch 445 taken 231 times. ✗ Branch 446 not taken. ✓ Branch 447 taken 154 times. ✗ Branch 448 not taken. ✓ Branch 449 taken 1 times. ✗ Branch 450 not taken. ✗ Branch 451 not taken. ✗ Branch 452 not taken. ✓ Branch 453 taken 1 times. ✗ Branch 454 not taken. ✗ Branch 455 not taken. ✗ Branch 456 not taken. ✓ Branch 457 taken 1 times. ✗ Branch 458 not taken. ✓ Branch 459 taken 1 times. ✗ Branch 460 not taken. ✓ Branch 461 taken 757 times. ✗ Branch 462 not taken. ✓ Branch 463 taken 510 times. ✗ Branch 464 not taken. ✗ Branch 465 not taken. ✗ Branch 466 not taken. ✗ Branch 467 not taken. ✗ Branch 468 not taken. ✗ Branch 469 not taken. ✗ Branch 470 not taken. ✗ Branch 471 not taken. ✗ Branch 472 not taken. ✗ Branch 473 not taken. ✗ Branch 474 not taken. ✗ Branch 475 not taken. ✗ Branch 476 not taken. ✓ Branch 477 taken 1092 times. ✗ Branch 478 not taken. ✓ Branch 479 taken 728 times. ✗ 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 not taken. ✗ 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 not taken. ✗ 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 not taken. ✗ 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 not taken. ✗ 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 not taken. ✗ 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 not taken. ✗ 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 taken 1 times. ✗ 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 not taken. ✗ 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 taken 1 times. ✗ 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 not taken. ✗ 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 not taken. ✗ 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 not taken. ✗ 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 taken 1 times. ✗ 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 not taken. ✗ 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 taken 1 times. ✗ 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. ✗ Branch 1400 not taken. ✗ Branch 1401 not taken. ✗ Branch 1403 not taken. ✗ Branch 1404 not taken. ✗ Branch 1406 not taken. ✗ Branch 1407 not taken. ✓ Branch 1409 taken 1 times. ✗ Branch 1410 not taken. ✗ Branch 1412 not taken. ✗ Branch 1413 not taken. ✗ Branch 1415 not taken. ✗ Branch 1416 not taken. ✗ Branch 1418 not taken. ✗ Branch 1419 not taken. ✗ Branch 1421 not taken. ✗ Branch 1422 not taken. ✗ Branch 1424 not taken. ✗ Branch 1425 not taken. ✗ Branch 1427 not taken. ✗ Branch 1428 not taken. ✗ Branch 1430 not taken. ✗ Branch 1431 not taken. ✗ Branch 1433 not taken. ✗ Branch 1434 not taken. ✗ Branch 1436 not taken. ✗ Branch 1437 not taken. ✗ Branch 1439 not taken. ✗ Branch 1440 not taken. ✗ Branch 1442 not taken. ✗ Branch 1443 not taken. ✗ Branch 1445 not taken. ✗ Branch 1446 not taken. ✗ Branch 1448 not taken. ✗ Branch 1449 not taken. ✗ Branch 1451 not taken. ✗ Branch 1452 not taken. ✗ Branch 1454 not taken. ✗ Branch 1455 not taken. ✗ Branch 1457 not taken. ✗ Branch 1458 not taken. ✗ Branch 1460 not taken. ✗ Branch 1461 not taken. ✗ Branch 1463 not taken. ✗ Branch 1464 not taken. ✗ Branch 1466 not taken. ✗ Branch 1467 not taken. ✗ Branch 1469 not taken. ✗ Branch 1470 not taken. ✗ Branch 1472 not taken. ✗ Branch 1473 not taken. ✗ Branch 1475 not taken. ✗ Branch 1476 not taken. ✗ Branch 1478 not taken. ✗ Branch 1479 not taken. ✗ Branch 1481 not taken. ✗ Branch 1482 not taken. ✗ Branch 1484 not taken. ✗ Branch 1485 not taken. ✗ Branch 1487 not taken. ✗ Branch 1488 not taken. ✗ Branch 1490 not taken. ✗ Branch 1491 not taken. ✗ Branch 1493 not taken. ✗ Branch 1494 not taken. ✗ Branch 1496 not taken. ✗ Branch 1497 not taken. ✗ Branch 1499 not taken. ✗ Branch 1500 not taken. ✗ Branch 1502 not taken. ✗ Branch 1503 not taken. ✗ Branch 1505 not taken. ✗ Branch 1506 not taken. ✗ Branch 1508 not taken. ✗ Branch 1509 not taken. ✗ Branch 1511 not taken. ✗ Branch 1512 not taken. ✗ Branch 1514 not taken. ✗ Branch 1515 not taken. ✗ Branch 1517 not taken. ✗ Branch 1518 not taken. ✗ Branch 1520 not taken. ✗ Branch 1521 not taken. ✗ Branch 1523 not taken. ✗ Branch 1524 not taken. ✗ Branch 1526 not taken. ✗ Branch 1527 not taken. ✗ Branch 1529 not taken. ✗ Branch 1530 not taken. ✗ Branch 1532 not taken. ✗ Branch 1533 not taken. ✗ Branch 1535 not taken. ✗ Branch 1536 not taken. ✗ Branch 1538 not taken. ✗ Branch 1539 not taken. ✗ Branch 1541 not taken. ✗ Branch 1542 not taken. ✗ Branch 1544 not taken. ✗ Branch 1545 not taken. ✗ Branch 1547 not taken. ✗ Branch 1548 not taken. ✗ Branch 1550 not taken. ✗ Branch 1551 not taken. ✗ Branch 1553 not taken. ✗ Branch 1554 not taken. ✗ Branch 1556 not taken. ✗ Branch 1557 not taken. ✗ Branch 1559 not taken. ✗ Branch 1560 not taken. ✗ Branch 1562 not taken. ✗ Branch 1563 not taken. ✗ Branch 1565 not taken. ✗ Branch 1566 not taken. ✗ Branch 1568 not taken. ✗ Branch 1569 not taken. ✗ Branch 1571 not taken. ✗ Branch 1572 not taken. ✗ Branch 1574 not taken. ✗ Branch 1575 not taken. ✗ Branch 1577 not taken. ✗ Branch 1578 not taken. ✗ Branch 1580 not taken. ✗ Branch 1581 not taken. ✗ Branch 1583 not taken. ✗ Branch 1584 not taken. ✗ Branch 1586 not taken. ✗ Branch 1587 not taken. ✗ Branch 1589 not taken. ✗ Branch 1590 not taken. ✗ Branch 1592 not taken. ✗ Branch 1593 not taken. ✗ Branch 1595 not taken. ✗ Branch 1596 not taken. ✗ Branch 1598 not taken. ✗ Branch 1599 not taken. ✓ Branch 1601 taken 1 times. ✗ Branch 1602 not taken. ✗ Branch 1604 not taken. ✗ Branch 1605 not taken. ✗ Branch 1607 not taken. ✗ Branch 1608 not taken. ✗ Branch 1610 not taken. ✗ Branch 1611 not taken. ✗ Branch 1613 not taken. ✗ Branch 1614 not taken. ✗ Branch 1616 not taken. ✗ Branch 1617 not taken. ✗ Branch 1619 not taken. ✗ Branch 1620 not taken. ✗ Branch 1622 not taken. ✗ Branch 1623 not taken. ✗ Branch 1625 not taken. ✗ Branch 1626 not taken. ✗ Branch 1628 not taken. ✗ Branch 1629 not taken. ✗ Branch 1631 not taken. ✗ Branch 1632 not taken. ✗ Branch 1634 not taken. ✗ Branch 1635 not taken. ✗ Branch 1637 not taken. ✗ Branch 1638 not taken. ✗ Branch 1640 not taken. ✗ Branch 1641 not taken. ✗ Branch 1643 not taken. ✗ Branch 1644 not taken. ✗ Branch 1646 not taken. ✗ Branch 1647 not taken. ✗ Branch 1649 not taken. ✗ Branch 1650 not taken. ✗ Branch 1652 not taken. ✗ Branch 1653 not taken. ✗ Branch 1655 not taken. ✗ Branch 1656 not taken. ✗ Branch 1658 not taken. ✗ Branch 1659 not taken. ✗ Branch 1661 not taken. ✗ Branch 1662 not taken. ✗ Branch 1664 not taken. ✗ Branch 1665 not taken. ✗ Branch 1667 not taken. ✗ Branch 1668 not taken. ✗ Branch 1670 not taken. ✗ Branch 1671 not taken. ✓ Branch 1673 taken 1 times. ✗ Branch 1674 not taken. ✗ Branch 1676 not taken. ✗ Branch 1677 not taken. ✗ Branch 1679 not taken. ✗ Branch 1680 not taken. ✗ Branch 1682 not taken. ✗ Branch 1683 not taken. ✗ Branch 1685 not taken. ✗ Branch 1686 not taken. ✗ Branch 1688 not taken. ✗ Branch 1689 not taken. ✗ Branch 1691 not taken. ✗ Branch 1692 not taken. ✗ Branch 1694 not taken. ✗ Branch 1695 not taken. ✗ Branch 1697 not taken. ✗ Branch 1698 not taken. ✗ Branch 1700 not taken. ✗ Branch 1701 not taken. ✗ Branch 1703 not taken. ✗ Branch 1704 not taken. ✗ Branch 1706 not taken. ✗ Branch 1707 not taken. ✗ Branch 1709 not taken. ✗ Branch 1710 not taken. ✗ Branch 1712 not taken. ✗ Branch 1713 not taken. ✗ Branch 1715 not taken. ✗ Branch 1716 not taken. ✗ Branch 1718 not taken. ✗ Branch 1719 not taken. ✗ Branch 1721 not taken. ✗ Branch 1722 not taken. ✗ Branch 1724 not taken. ✗ Branch 1725 not taken. ✗ Branch 1727 not taken. ✗ Branch 1728 not taken. ✗ Branch 1730 not taken. ✗ Branch 1731 not taken. ✗ Branch 1733 not taken. ✗ Branch 1734 not taken. ✗ Branch 1736 not taken. ✗ Branch 1737 not taken. ✗ Branch 1739 not taken. ✗ Branch 1740 not taken. ✗ Branch 1742 not taken. ✗ Branch 1743 not taken. ✗ Branch 1745 not taken. ✗ Branch 1746 not taken. ✗ Branch 1748 not taken. ✗ Branch 1749 not taken. ✗ Branch 1751 not taken. ✗ Branch 1752 not taken. ✗ Branch 1754 not taken. ✗ Branch 1755 not taken. ✗ Branch 1757 not taken. ✗ Branch 1758 not taken. ✗ Branch 1760 not taken. ✗ Branch 1761 not taken. ✗ Branch 1763 not taken. ✗ Branch 1764 not taken. ✗ Branch 1766 not taken. ✗ Branch 1767 not taken. ✗ Branch 1769 not taken. ✗ Branch 1770 not taken. ✗ Branch 1772 not taken. ✗ Branch 1773 not taken. ✓ Branch 1775 taken 1 times. ✗ Branch 1776 not taken. ✓ Branch 1778 taken 1 times. ✗ Branch 1779 not taken. ✓ Branch 1781 taken 1 times. ✗ Branch 1782 not taken. ✗ Branch 1784 not taken. ✗ Branch 1785 not taken. ✓ Branch 1787 taken 1 times. ✗ Branch 1788 not taken. ✗ Branch 1790 not taken. ✗ Branch 1791 not taken. ✗ Branch 1793 not taken. ✗ Branch 1794 not taken. ✗ Branch 1796 not taken. ✗ Branch 1797 not taken. ✗ Branch 1799 not taken. ✗ Branch 1800 not taken. ✗ Branch 1802 not taken. ✗ Branch 1803 not taken. ✗ Branch 1805 not taken. ✗ Branch 1806 not taken. ✗ Branch 1808 not taken. ✗ Branch 1809 not taken. ✗ Branch 1811 not taken. ✗ Branch 1812 not taken. ✗ Branch 1814 not taken. ✗ Branch 1815 not taken. ✗ Branch 1817 not taken. ✗ Branch 1818 not taken. ✗ Branch 1820 not taken. ✗ Branch 1821 not taken. ✗ Branch 1823 not taken. ✗ Branch 1824 not taken. ✗ Branch 1826 not taken. ✗ Branch 1827 not taken. ✗ Branch 1829 not taken. ✗ Branch 1830 not taken. ✗ Branch 1832 not taken. ✗ Branch 1833 not taken. ✗ Branch 1835 not taken. ✗ Branch 1836 not taken. ✗ Branch 1838 not taken. ✗ Branch 1839 not taken. ✗ Branch 1841 not taken. ✗ Branch 1842 not taken. ✗ Branch 1844 not taken. ✗ Branch 1845 not taken. ✗ Branch 1847 not taken. ✗ Branch 1848 not taken. ✗ Branch 1850 not taken. ✗ Branch 1851 not taken. ✗ Branch 1853 not taken. ✗ Branch 1854 not taken. ✗ Branch 1856 not taken. ✗ Branch 1857 not taken. ✗ Branch 1859 not taken. ✗ Branch 1860 not taken. ✗ Branch 1862 not taken. ✗ Branch 1863 not taken. ✗ Branch 1865 not taken. ✗ Branch 1866 not taken. ✗ Branch 1868 not taken. ✗ Branch 1869 not taken. ✗ Branch 1871 not taken. ✗ Branch 1872 not taken. ✗ Branch 1874 not taken. ✗ Branch 1875 not taken. ✓ Branch 1877 taken 1 times. ✗ Branch 1878 not taken. ✗ Branch 1880 not taken. ✗ Branch 1881 not taken. ✗ Branch 1883 not taken. ✗ Branch 1884 not taken. ✗ Branch 1886 not taken. ✗ Branch 1887 not taken. ✗ Branch 1889 not taken. ✗ Branch 1890 not taken. ✗ Branch 1892 not taken. ✗ Branch 1893 not taken. ✗ Branch 1895 not taken. ✗ Branch 1896 not taken. ✗ Branch 1898 not taken. ✗ Branch 1899 not taken. ✗ Branch 1901 not taken. ✗ Branch 1902 not taken. ✗ Branch 1904 not taken. ✗ Branch 1905 not taken. ✗ Branch 1907 not taken. ✗ Branch 1908 not taken. ✗ Branch 1910 not taken. ✗ Branch 1911 not taken. ✗ Branch 1913 not taken. ✗ Branch 1914 not taken. ✗ Branch 1916 not taken. ✗ Branch 1917 not taken. ✗ Branch 1919 not taken. ✗ Branch 1920 not taken. ✗ Branch 1922 not taken. ✗ Branch 1923 not taken. ✗ Branch 1925 not taken. ✗ Branch 1926 not taken. ✗ Branch 1928 not taken. ✗ Branch 1929 not taken. ✗ Branch 1931 not taken. ✗ Branch 1932 not taken. ✗ Branch 1934 not taken. ✗ Branch 1935 not taken. ✗ Branch 1937 not taken. ✗ Branch 1938 not taken. ✗ Branch 1940 not taken. ✗ Branch 1941 not taken. ✗ Branch 1943 not taken. ✗ Branch 1944 not taken. ✗ Branch 1946 not taken. ✗ Branch 1947 not taken. ✗ Branch 1949 not taken. ✗ Branch 1950 not taken. ✗ Branch 1952 not taken. ✗ Branch 1953 not taken. ✗ Branch 1955 not taken. ✗ Branch 1956 not taken. ✗ Branch 1958 not taken. ✗ Branch 1959 not taken. ✗ Branch 1961 not taken. ✗ Branch 1962 not taken. ✗ Branch 1964 not taken. ✗ Branch 1965 not taken. ✗ Branch 1967 not taken. ✗ Branch 1968 not taken. ✗ Branch 1970 not taken. ✗ Branch 1971 not taken. ✗ Branch 1973 not taken. ✗ Branch 1974 not taken. ✗ Branch 1976 not taken. ✗ Branch 1977 not taken. ✗ Branch 1979 not taken. ✗ Branch 1980 not taken. ✗ Branch 1982 not taken. ✗ Branch 1983 not taken. ✗ Branch 1985 not taken. ✗ Branch 1986 not taken. ✗ Branch 1988 not taken. ✗ Branch 1989 not taken. ✗ Branch 1991 not taken. ✗ Branch 1992 not taken. ✗ Branch 1994 not taken. ✗ Branch 1995 not taken. ✗ Branch 1997 not taken. ✗ Branch 1998 not taken. ✗ Branch 2000 not taken. ✗ Branch 2001 not taken. ✗ Branch 2003 not taken. ✗ Branch 2004 not taken. ✗ Branch 2006 not taken. ✗ Branch 2007 not taken. ✗ Branch 2009 not taken. ✗ Branch 2010 not taken. ✗ Branch 2012 not taken. ✗ Branch 2013 not taken. ✗ Branch 2015 not taken. ✗ Branch 2016 not taken. ✗ Branch 2018 not taken. ✗ Branch 2019 not taken. ✗ Branch 2021 not taken. ✗ Branch 2022 not taken. ✗ Branch 2024 not taken. ✗ Branch 2025 not taken. ✗ Branch 2027 not taken. ✗ Branch 2028 not taken. ✗ Branch 2030 not taken. ✗ Branch 2031 not taken. ✗ Branch 2033 not taken. ✗ Branch 2034 not taken. ✗ Branch 2036 not taken. ✗ Branch 2037 not taken. ✗ Branch 2039 not taken. ✗ Branch 2040 not taken. ✗ Branch 2042 not taken. ✗ Branch 2043 not taken. ✗ Branch 2045 not taken. ✗ Branch 2046 not taken. ✗ Branch 2048 not taken. ✗ Branch 2049 not taken. ✗ Branch 2051 not taken. ✗ Branch 2052 not taken. ✗ Branch 2054 not taken. ✗ Branch 2055 not taken. ✗ Branch 2057 not taken. ✗ Branch 2058 not taken. ✗ Branch 2060 not taken. ✗ Branch 2061 not taken. ✗ Branch 2063 not taken. ✗ Branch 2064 not taken. ✗ Branch 2066 not taken. ✗ Branch 2067 not taken. ✗ Branch 2069 not taken. ✗ Branch 2070 not taken. ✗ Branch 2072 not taken. ✗ Branch 2073 not taken. ✗ Branch 2075 not taken. ✗ Branch 2076 not taken. ✗ Branch 2078 not taken. ✗ Branch 2079 not taken. ✗ Branch 2081 not taken. ✗ Branch 2082 not taken. ✗ Branch 2084 not taken. ✗ Branch 2085 not taken. ✗ Branch 2087 not taken. ✗ Branch 2088 not taken. ✗ Branch 2090 not taken. ✗ Branch 2091 not taken. ✓ Branch 2093 taken 3 times. ✗ Branch 2094 not taken. ✗ Branch 2096 not taken. ✗ Branch 2097 not taken. ✗ Branch 2099 not taken. ✗ Branch 2100 not taken. ✗ Branch 2102 not taken. ✗ Branch 2103 not taken. ✗ Branch 2105 not taken. ✗ Branch 2106 not taken. ✗ Branch 2108 not taken. ✗ Branch 2109 not taken. ✗ Branch 2111 not taken. ✗ Branch 2112 not taken. ✗ Branch 2114 not taken. ✗ Branch 2115 not taken. ✗ Branch 2117 not taken. ✗ Branch 2118 not taken. ✓ Branch 2120 taken 1 times. ✗ Branch 2121 not taken. ✗ Branch 2123 not taken. ✗ Branch 2124 not taken. ✓ Branch 2126 taken 1 times. ✗ Branch 2127 not taken. ✓ Branch 2129 taken 1 times. ✗ Branch 2130 not taken. ✓ Branch 2132 taken 1 times. ✗ Branch 2133 not taken. ✗ Branch 2135 not taken. ✗ Branch 2136 not taken. ✗ Branch 2138 not taken. ✗ Branch 2139 not taken. ✗ Branch 2141 not taken. ✗ Branch 2142 not taken. ✓ Branch 2144 taken 1 times. ✗ Branch 2145 not taken. ✗ Branch 2147 not taken. ✗ Branch 2148 not taken. | 6572240 | IteratorBase(const MaskIterT& iter, NodeT* parent): mParentNode(parent), mMaskIter(iter) {} | 
| 34 | IteratorBase(const IteratorBase&) = default; | ||
| 35 | IteratorBase& operator=(const IteratorBase&) = default; | ||
| 36 | |||
| 37 | bool operator==(const IteratorBase& other) const | ||
| 38 | { | ||
| 39 | return (mParentNode == other.mParentNode) && (mMaskIter == other.mMaskIter); | ||
| 40 | } | ||
| 41 | bool operator!=(const IteratorBase& other) const | ||
| 42 | { | ||
| 43 | return !(*this == other); | ||
| 44 | } | ||
| 45 | |||
| 46 | /// Return a pointer to the node (if any) over which this iterator is iterating. | ||
| 47 | 250/315✗ Branch 0 not taken. ✓ Branch 1 taken 1 times. ✗ Branch 2 not taken. ✗ Branch 3 not taken. ✓ Branch 4 taken 1 times. ✓ Branch 5 taken 5 times. ✓ Branch 6 taken 529 times. ✓ Branch 7 taken 4 times. ✓ Branch 8 taken 1 times. ✓ Branch 9 taken 208 times. ✓ Branch 10 taken 629 times. ✓ Branch 11 taken 652 times. ✓ Branch 12 taken 29044 times. ✓ Branch 13 taken 12 times. ✓ Branch 14 taken 93311 times. ✓ Branch 15 taken 6396 times. ✓ Branch 16 taken 9662 times. ✓ Branch 17 taken 241680 times. ✓ Branch 18 taken 4102 times. ✓ Branch 19 taken 18 times. ✓ Branch 20 taken 4225 times. ✓ Branch 21 taken 22 times. ✓ Branch 22 taken 4426 times. ✓ Branch 23 taken 10 times. ✓ Branch 24 taken 4130 times. ✓ Branch 25 taken 98 times. ✓ Branch 26 taken 4539 times. ✓ Branch 27 taken 25828 times. ✓ Branch 28 taken 10197 times. ✓ Branch 29 taken 354043 times. ✓ Branch 30 taken 33887 times. ✓ Branch 31 taken 102 times. ✓ Branch 32 taken 4280 times. ✓ Branch 33 taken 8 times. ✓ Branch 34 taken 5714 times. ✓ Branch 35 taken 1029 times. ✓ Branch 36 taken 6456 times. ✓ Branch 37 taken 6643 times. ✓ Branch 38 taken 1468955 times. ✓ Branch 39 taken 6 times. ✓ Branch 40 taken 23461 times. ✓ Branch 41 taken 2 times. ✓ Branch 42 taken 12 times. ✓ Branch 43 taken 1265 times. ✓ Branch 44 taken 9 times. ✓ Branch 45 taken 4262 times. ✓ Branch 46 taken 532 times. ✓ Branch 47 taken 114690 times. ✓ Branch 48 taken 6326 times. ✓ Branch 49 taken 5 times. ✓ Branch 50 taken 514 times. ✓ Branch 51 taken 120 times. ✓ Branch 52 taken 14 times. ✓ Branch 53 taken 4100 times. ✓ Branch 54 taken 31266 times. ✓ Branch 55 taken 144 times. ✓ Branch 56 taken 172571 times. ✓ Branch 57 taken 5 times. ✓ Branch 58 taken 20 times. ✓ Branch 59 taken 4 times. ✓ Branch 60 taken 19 times. ✓ Branch 61 taken 4636 times. ✓ Branch 62 taken 11 times. ✓ Branch 63 taken 6 times. ✓ Branch 64 taken 46 times. ✓ Branch 65 taken 3 times. ✓ Branch 66 taken 35361 times. ✓ Branch 67 taken 6 times. ✓ Branch 68 taken 176674 times. ✓ Branch 69 taken 8590 times. ✓ Branch 70 taken 7 times. ✓ Branch 71 taken 3 times. ✓ Branch 72 taken 13 times. ✓ Branch 73 taken 8 times. ✓ Branch 74 taken 66 times. ✓ Branch 75 taken 5 times. ✓ Branch 76 taken 73 times. ✓ Branch 77 taken 4098 times. ✓ Branch 78 taken 4165 times. ✓ Branch 79 taken 8 times. ✓ Branch 80 taken 4171 times. ✓ Branch 81 taken 5 times. ✓ Branch 82 taken 8262 times. ✓ Branch 83 taken 2 times. ✓ Branch 84 taken 8260 times. ✓ Branch 85 taken 100279 times. ✓ Branch 86 taken 32836 times. ✓ Branch 87 taken 3 times. ✓ Branch 88 taken 65681 times. ✓ Branch 89 taken 11 times. ✓ Branch 90 taken 32840 times. ✓ Branch 91 taken 172 times. ✓ Branch 92 taken 65539 times. ✓ Branch 93 taken 1027 times. ✓ Branch 94 taken 33333 times. ✓ Branch 95 taken 101 times. ✓ Branch 96 taken 65543 times. ✓ Branch 97 taken 194 times. ✓ Branch 98 taken 32774 times. ✓ Branch 99 taken 19 times. ✓ Branch 100 taken 65585 times. ✓ Branch 101 taken 1842799 times. ✓ Branch 102 taken 32782 times. ✓ Branch 103 taken 99 times. ✓ Branch 104 taken 69137 times. ✓ Branch 105 taken 22 times. ✓ Branch 106 taken 98308 times. ✓ Branch 107 taken 74 times. ✓ Branch 108 taken 98310 times. ✓ Branch 109 taken 4242 times. ✓ Branch 110 taken 10 times. ✓ Branch 111 taken 1141 times. ✓ Branch 112 taken 11 times. ✓ Branch 113 taken 118 times. ✓ Branch 114 taken 8124 times. ✓ Branch 115 taken 67 times. ✓ Branch 116 taken 12297 times. ✓ Branch 117 taken 4116 times. ✓ Branch 118 taken 1138 times. ✓ Branch 119 taken 57 times. ✓ Branch 120 taken 10 times. ✓ Branch 121 taken 1210 times. ✓ Branch 122 taken 1 times. ✓ Branch 123 taken 10 times. ✓ Branch 124 taken 1130 times. ✓ Branch 125 taken 4157 times. ✓ Branch 126 taken 2 times. ✓ Branch 127 taken 1271 times. ✓ Branch 128 taken 9 times. ✓ Branch 129 taken 12 times. ✓ Branch 130 taken 1176 times. ✓ Branch 131 taken 73 times. ✓ Branch 132 taken 2 times. ✓ Branch 133 taken 1255 times. ✓ Branch 134 taken 65537 times. ✓ Branch 135 taken 14 times. ✓ Branch 136 taken 66720 times. ✓ Branch 137 taken 61 times. ✓ Branch 138 taken 32770 times. ✓ Branch 139 taken 1361 times. ✓ Branch 140 taken 65537 times. ✓ Branch 141 taken 4108 times. ✓ Branch 142 taken 33953 times. ✓ Branch 143 taken 133 times. ✓ Branch 144 taken 65546 times. ✓ Branch 145 taken 456 times. ✓ Branch 146 taken 32769 times. ✓ Branch 147 taken 23 times. ✓ Branch 148 taken 65597 times. ✓ Branch 149 taken 4396 times. ✓ Branch 150 taken 32769 times. ✓ Branch 151 taken 26 times. ✓ Branch 152 taken 65544 times. ✓ Branch 153 taken 50 times. ✓ Branch 154 taken 32789 times. ✗ Branch 155 not taken. ✓ Branch 156 taken 65536 times. ✓ Branch 157 taken 20 times. ✓ Branch 158 taken 98305 times. ✗ Branch 159 not taken. ✓ Branch 160 taken 98310 times. ✗ Branch 161 not taken. ✓ Branch 162 taken 1 times. ✓ Branch 163 taken 4 times. ✗ Branch 164 not taken. ✓ Branch 165 taken 4096 times. ✓ Branch 166 taken 32773 times. ✗ Branch 167 not taken. ✓ Branch 168 taken 98313 times. ✓ Branch 169 taken 1237 times. ✓ Branch 170 taken 65537 times. ✓ Branch 171 taken 1 times. ✓ Branch 172 taken 65556 times. ✓ Branch 173 taken 20892 times. ✓ Branch 174 taken 1 times. ✓ Branch 175 taken 6 times. ✓ Branch 176 taken 23 times. ✓ Branch 177 taken 155 times. ✓ Branch 178 taken 4 times. ✓ Branch 179 taken 1 times. ✓ Branch 180 taken 5 times. ✓ Branch 181 taken 914 times. ✓ Branch 182 taken 1 times. ✓ Branch 183 taken 9 times. ✓ Branch 184 taken 2 times. ✓ Branch 185 taken 625 times. ✓ Branch 186 taken 1 times. ✓ Branch 187 taken 82 times. ✓ Branch 188 taken 1 times. ✓ Branch 189 taken 104 times. ✓ Branch 190 taken 2 times. ✓ Branch 191 taken 62 times. ✗ Branch 192 not taken. ✓ Branch 193 taken 962 times. ✓ Branch 194 taken 2 times. ✓ Branch 195 taken 10 times. ✓ Branch 196 taken 3 times. ✓ Branch 197 taken 721 times. ✗ Branch 198 not taken. ✓ Branch 199 taken 1768 times. ✓ Branch 200 taken 1 times. ✓ Branch 201 taken 120 times. ✓ Branch 202 taken 4 times. ✓ Branch 203 taken 1321 times. ✗ Branch 204 not taken. ✓ Branch 205 taken 239 times. ✗ Branch 206 not taken. ✓ Branch 208 taken 17 times. ✗ Branch 209 not taken. ✓ Branch 211 taken 1 times. ✓ Branch 212 taken 1043 times. ✗ Branch 213 not taken. ✓ Branch 214 taken 3 times. ✓ Branch 215 taken 1043 times. ✗ Branch 216 not taken. ✓ Branch 217 taken 3 times. ✓ Branch 218 taken 1 times. ✓ Branch 220 taken 4 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 3 times. ✗ Branch 230 not taken. ✓ Branch 232 taken 3 times. ✗ Branch 233 not taken. ✗ Branch 234 not taken. ✓ Branch 235 taken 3 times. ✗ Branch 236 not taken. ✗ Branch 237 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. ✓ Branch 343 taken 1 times. ✗ Branch 344 not taken. ✗ Branch 345 not taken. ✓ Branch 346 taken 1 times. ✗ Branch 347 not taken. ✓ Branch 348 taken 1 times. ✓ Branch 350 taken 1 times. ✗ Branch 351 not taken. ✓ Branch 355 taken 1 times. ✗ Branch 356 not taken. ✓ Branch 359 taken 1 times. ✗ Branch 360 not taken. ✓ Branch 384 taken 1 times. ✗ Branch 385 not taken. | 6846085 | NodeT* getParentNode() const { return mParentNode; } | 
| 48 | /// @brief Return a reference to the node over which this iterator is iterating. | ||
| 49 | /// @throw ValueError if there is no parent node. | ||
| 50 | 6071107062 | NodeT& parent() const | |
| 51 | { | ||
| 52 | 1/8✗ Branch 0 not taken. ✓ Branch 1 taken 3035553531 times. ✗ Branch 3 not taken. ✗ Branch 4 not taken. ✗ Branch 6 not taken. ✗ Branch 7 not taken. ✗ Branch 14 not taken. ✗ Branch 15 not taken. | 6071107062 | if (!mParentNode) OPENVDB_THROW(ValueError, "iterator references a null node"); | 
| 53 | 6071107062 | return *mParentNode; | |
| 54 | } | ||
| 55 | |||
| 56 | /// Return this iterator's position as an index into the parent node's table. | ||
| 57 | Index offset() const { return mMaskIter.offset(); } | ||
| 58 | |||
| 59 | /// Identical to offset | ||
| 60 | Index pos() const { return mMaskIter.offset(); } | ||
| 61 | |||
| 62 | /// Return @c true if this iterator is not yet exhausted. | ||
| 63 | bool test() const { return mMaskIter.test(); } | ||
| 64 | /// Return @c true if this iterator is not yet exhausted. | ||
| 65 | operator bool() const { return this->test(); } | ||
| 66 | |||
| 67 | /// Advance to the next item in the parent node's table. | ||
| 68 | 3454394463 | bool next() { return mMaskIter.next(); } | |
| 69 | /// Advance to the next item in the parent node's table. | ||
| 70 | 687395280 | void increment() { mMaskIter.increment(); } | |
| 71 | /// Advance to the next item in the parent node's table. | ||
| 72 | 687064520 | IteratorBase& operator++() { this->increment(); return *this; } | |
| 73 | /// Advance @a n items in the parent node's table. | ||
| 74 | void increment(Index n) { mMaskIter.increment(n); } | ||
| 75 | |||
| 76 | /// @brief Return @c true if this iterator is pointing to an active value. | ||
| 77 | /// Return @c false if it is pointing to either an inactive value or a child node. | ||
| 78 | 14704650 | bool isValueOn() const { return parent().isValueMaskOn(this->pos()); } | |
| 79 | /// @brief If this iterator is pointing to a value, set the value's active state. | ||
| 80 | /// Otherwise, do nothing. | ||
| 81 | 14018848 | void setValueOn(bool on = true) const { parent().setValueMask(this->pos(), on); } | |
| 82 | /// @brief If this iterator is pointing to a value, mark the value as inactive. | ||
| 83 | /// @details If this iterator is pointing to a child node, then the current item | ||
| 84 | /// in the parent node's table is required to be inactive. In that case, | ||
| 85 | /// this method has no effect. | ||
| 86 | 24484 | void setValueOff() const { parent().mValueMask.setOff(this->pos()); } | |
| 87 | |||
| 88 | /// Return the coordinates of the item to which this iterator is pointing. | ||
| 89 | 664022804 | Coord getCoord() const { return parent().offsetToGlobalCoord(this->pos()); } | |
| 90 | /// Return in @a xyz the coordinates of the item to which this iterator is pointing. | ||
| 91 | 3/6✓ Branch 1 taken 6 times. ✗ Branch 2 not taken. ✓ Branch 4 taken 9 times. ✗ Branch 5 not taken. ✓ Branch 7 taken 10 times. ✗ Branch 8 not taken. | 25 | void getCoord(Coord& xyz) const { xyz = this->getCoord(); } | 
| 92 | |||
| 93 | private: | ||
| 94 | /// @note This parent node pointer is mutable, because setValueOn() and | ||
| 95 | /// setValueOff(), though const, need to call non-const methods on the parent. | ||
| 96 | /// There is a distinction between a const iterator (e.g., const ValueOnIter), | ||
| 97 | /// which is an iterator that can't be incremented, and an iterator over | ||
| 98 | /// a const node (e.g., ValueOnCIter), which might be const or non-const itself | ||
| 99 | /// but can't call non-const methods like setValue() on the node. | ||
| 100 | mutable NodeT* mParentNode; | ||
| 101 | MaskIterT mMaskIter; | ||
| 102 | }; // class IteratorBase | ||
| 103 | |||
| 104 | |||
| 105 | //////////////////////////////////////// | ||
| 106 | |||
| 107 | |||
| 108 | /// @brief Base class for sparse iterators over internal and leaf nodes | ||
| 109 | template< | ||
| 110 | typename MaskIterT, // mask iterator type (OnIterator, OffIterator, etc.) | ||
| 111 | typename IterT, // SparseIteratorBase subclass (the "Curiously Recurring Template Pattern") | ||
| 112 | typename NodeT, // type of node over which to iterate | ||
| 113 | typename ItemT> // type of value to which this iterator points | ||
| 114 | struct SparseIteratorBase: public IteratorBase<MaskIterT, NodeT> | ||
| 115 | { | ||
| 116 | using NodeType = NodeT; | ||
| 117 | using ValueType = ItemT; | ||
| 118 | using NonConstNodeType = typename std::remove_const<NodeT>::type; | ||
| 119 | using NonConstValueType = typename std::remove_const<ItemT>::type; | ||
| 120 | static const bool IsSparseIterator = true, IsDenseIterator = false; | ||
| 121 | |||
| 122 | SparseIteratorBase() {} | ||
| 123 | SparseIteratorBase(const MaskIterT& iter, NodeT* parent): | ||
| 124 | IteratorBase<MaskIterT, NodeT>(iter, parent) {} | ||
| 125 | |||
| 126 | /// @brief Return the item at the given index in the parent node's table. | ||
| 127 | /// @note All subclasses must implement this accessor. | ||
| 128 | ItemT& getItem(Index) const; | ||
| 129 | /// @brief Set the value of the item at the given index in the parent node's table. | ||
| 130 | /// @note All non-const iterator subclasses must implement this accessor. | ||
| 131 | void setItem(Index, const ItemT&) const; | ||
| 132 | |||
| 133 | /// Return a reference to the item to which this iterator is pointing. | ||
| 134 | 75/139✓ Branch 1 taken 4563 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 2 times. ✗ Branch 8 not taken. ✗ Branch 9 not taken. ✓ Branch 10 taken 403456 times. ✓ Branch 11 taken 3497291 times. ✗ Branch 12 not taken. ✓ Branch 13 taken 501310 times. ✗ Branch 14 not taken. ✗ Branch 15 not taken. ✓ Branch 16 taken 2060800 times. ✓ Branch 17 taken 7 times. ✗ Branch 18 not taken. ✓ Branch 19 taken 2060800 times. ✗ Branch 20 not taken. ✓ Branch 21 taken 512 times. ✗ Branch 22 not taken. ✓ Branch 23 taken 953186 times. ✓ Branch 24 taken 27 times. ✓ Branch 25 taken 14424 times. ✗ Branch 26 not taken. ✓ Branch 27 taken 27 times. ✓ Branch 28 taken 13620 times. ✗ Branch 29 not taken. ✓ Branch 30 taken 27 times. ✓ Branch 31 taken 2 times. ✗ Branch 32 not taken. ✓ Branch 33 taken 27 times. ✓ Branch 34 taken 2 times. ✗ Branch 35 not taken. ✓ Branch 36 taken 27 times. ✓ Branch 37 taken 2 times. ✗ Branch 38 not taken. ✓ Branch 39 taken 27 times. ✓ Branch 40 taken 2 times. ✗ Branch 41 not taken. ✓ Branch 42 taken 27 times. ✓ Branch 43 taken 2 times. ✗ Branch 44 not taken. ✓ Branch 45 taken 27 times. ✓ Branch 46 taken 2 times. ✓ Branch 47 taken 42 times. ✓ Branch 48 taken 27 times. ✓ Branch 49 taken 196 times. ✗ Branch 50 not taken. ✓ Branch 51 taken 1567 times. ✓ Branch 52 taken 1 times. ✗ Branch 53 not taken. ✗ Branch 54 not taken. ✓ Branch 55 taken 1 times. ✓ Branch 56 taken 443 times. ✗ Branch 57 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. | 130793386 | ItemT& operator*() const { return this->getValue(); } | 
| 135 | /// Return a pointer to the item to which this iterator is pointing. | ||
| 136 | ItemT* operator->() const { return &(this->operator*()); } | ||
| 137 | |||
| 138 | /// Return the item to which this iterator is pointing. | ||
| 139 | 150583315 | ItemT& getValue() const | |
| 140 | { | ||
| 141 | 56/1013✗ Branch 1 not taken. ✗ Branch 2 not taken. ✗ Branch 3 not taken. ✗ Branch 4 not taken. ✗ Branch 5 not taken. ✗ Branch 6 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 taken 1 times. ✗ Branch 17 not taken. ✗ Branch 18 not taken. ✓ Branch 19 taken 8 times. ✗ Branch 20 not taken. ✗ Branch 21 not taken. ✓ Branch 22 taken 8 times. ✗ Branch 23 not taken. ✗ Branch 24 not taken. ✓ Branch 25 taken 1413 times. ✗ Branch 26 not taken. ✗ Branch 27 not taken. ✗ Branch 28 not taken. ✗ Branch 29 not taken. ✓ Branch 30 taken 3276 times. ✗ Branch 31 not taken. ✗ Branch 32 not taken. ✗ Branch 33 not taken. ✓ Branch 34 taken 1991 times. ✗ Branch 35 not taken. ✗ Branch 36 not taken. ✗ Branch 37 not taken. ✓ Branch 38 taken 3236 times. ✗ Branch 39 not taken. ✗ Branch 40 not taken. ✗ Branch 41 not taken. ✓ Branch 42 taken 14452 times. ✗ Branch 43 not taken. ✗ Branch 44 not taken. ✗ Branch 45 not taken. ✓ Branch 46 taken 3236 times. ✓ Branch 47 taken 4706 times. ✗ Branch 48 not taken. ✗ Branch 49 not taken. ✓ Branch 50 taken 3236 times. ✗ 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 taken 4 times. ✗ Branch 60 not taken. ✗ Branch 61 not taken. ✓ Branch 62 taken 4 times. ✗ Branch 63 not taken. ✗ Branch 64 not taken. ✓ Branch 65 taken 7 times. ✗ Branch 66 not taken. ✗ Branch 67 not taken. ✓ Branch 68 taken 7 times. ✗ 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 taken 1 times. ✗ 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 taken 3 times. ✗ Branch 97 not taken. ✗ Branch 98 not taken. ✗ Branch 99 not taken. ✗ Branch 100 not taken. ✗ Branch 101 not taken. ✓ Branch 102 taken 1 times. ✗ Branch 103 not taken. ✗ Branch 104 not taken. ✗ Branch 105 not taken. ✗ Branch 106 not taken. ✗ Branch 107 not taken. ✗ Branch 108 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 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 not taken. ✗ 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 not taken. ✗ 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 taken 1 times. ✗ Branch 234 not taken. ✗ Branch 235 not taken. ✓ Branch 236 taken 1 times. ✗ 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 taken 125 times. ✗ Branch 260 not taken. ✗ Branch 261 not taken. ✗ Branch 262 not taken. ✓ Branch 263 taken 1354 times. ✗ 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 taken 1 times. ✗ Branch 308 not taken. ✗ Branch 309 not taken. ✓ Branch 310 taken 1 times. ✗ Branch 311 not taken. ✗ Branch 312 not taken. ✓ Branch 313 taken 1 times. ✗ Branch 314 not taken. ✗ Branch 315 not taken. ✓ Branch 316 taken 1 times. ✗ Branch 317 not taken. ✗ Branch 318 not taken. ✓ Branch 319 taken 1 times. ✗ Branch 320 not taken. ✗ Branch 321 not taken. ✗ Branch 322 not taken. ✗ Branch 323 not taken. ✗ Branch 324 not taken. ✗ Branch 325 not taken. ✗ Branch 326 not taken. ✗ Branch 327 not taken. ✗ Branch 328 not taken. ✗ Branch 329 not taken. ✗ Branch 330 not taken. ✓ Branch 331 taken 3263 times. ✗ Branch 332 not taken. ✗ Branch 333 not taken. ✓ Branch 334 taken 346 times. ✓ Branch 335 taken 8 times. ✗ Branch 336 not taken. ✗ Branch 337 not taken. ✗ Branch 338 not taken. ✗ Branch 339 not taken. ✓ Branch 340 taken 512 times. ✗ Branch 341 not taken. ✗ Branch 342 not taken. ✗ Branch 343 not taken. ✗ Branch 344 not taken. ✗ Branch 345 not taken. ✗ Branch 346 not taken. ✗ Branch 347 not taken. ✗ Branch 348 not taken. ✗ Branch 349 not taken. ✗ Branch 350 not taken. ✗ Branch 351 not taken. ✗ Branch 352 not taken. ✗ Branch 353 not taken. ✗ Branch 354 not taken. ✗ Branch 355 not taken. ✗ Branch 356 not taken. ✗ Branch 357 not taken. ✗ Branch 358 not taken. ✓ Branch 359 taken 8 times. ✗ Branch 360 not taken. ✗ Branch 361 not taken. ✓ Branch 362 taken 8 times. ✗ Branch 363 not taken. ✗ Branch 364 not taken. ✓ Branch 365 taken 8 times. ✗ Branch 366 not taken. ✗ Branch 367 not taken. ✓ Branch 368 taken 3263 times. ✗ Branch 369 not taken. ✗ Branch 370 not taken. ✓ Branch 371 taken 3263 times. ✗ Branch 372 not taken. ✗ Branch 373 not taken. ✓ Branch 374 taken 3263 times. ✗ Branch 375 not taken. ✗ Branch 376 not taken. ✓ Branch 377 taken 56 times. ✗ Branch 378 not taken. ✗ Branch 379 not taken. ✓ Branch 380 taken 56 times. ✗ Branch 381 not taken. ✗ Branch 382 not taken. ✓ Branch 383 taken 56 times. ✗ Branch 384 not taken. ✗ Branch 385 not taken. ✓ Branch 386 taken 20520 times. ✗ Branch 387 not taken. ✗ Branch 388 not taken. ✓ Branch 389 taken 20520 times. ✗ Branch 390 not taken. ✗ Branch 391 not taken. ✓ Branch 392 taken 20520 times. ✗ Branch 393 not taken. ✗ Branch 394 not taken. ✓ Branch 395 taken 20520 times. ✗ Branch 396 not taken. ✗ Branch 397 not taken. ✗ Branch 398 not taken. ✗ Branch 399 not taken. ✗ Branch 400 not taken. ✗ Branch 401 not taken. ✗ Branch 402 not taken. ✗ Branch 403 not taken. ✗ Branch 404 not taken. ✗ Branch 405 not taken. ✗ Branch 406 not taken. ✗ Branch 407 not taken. ✗ Branch 408 not taken. ✗ Branch 409 not taken. ✗ Branch 410 not taken. ✗ Branch 411 not taken. ✗ Branch 412 not taken. ✗ Branch 413 not taken. ✗ Branch 414 not taken. ✗ Branch 415 not taken. ✗ Branch 416 not taken. ✗ Branch 417 not taken. ✗ Branch 418 not taken. ✗ Branch 419 not taken. ✗ Branch 420 not taken. ✗ Branch 421 not taken. ✗ Branch 422 not taken. ✗ Branch 423 not taken. ✗ Branch 424 not taken. ✗ Branch 425 not taken. ✗ Branch 426 not taken. ✗ Branch 427 not taken. ✗ Branch 428 not taken. ✗ Branch 429 not taken. ✗ Branch 430 not taken. ✗ Branch 431 not taken. ✗ Branch 432 not taken. ✗ Branch 433 not taken. ✗ Branch 434 not taken. ✗ Branch 435 not taken. ✗ Branch 436 not taken. ✗ Branch 437 not taken. ✗ Branch 438 not taken. ✗ Branch 439 not taken. ✗ Branch 440 not taken. ✗ Branch 441 not taken. ✗ Branch 442 not taken. ✗ Branch 443 not taken. ✗ Branch 444 not taken. ✗ Branch 445 not taken. ✗ Branch 446 not taken. ✗ Branch 447 not taken. ✗ Branch 448 not taken. ✗ Branch 449 not taken. ✗ Branch 450 not taken. ✗ Branch 451 not taken. ✗ Branch 452 not taken. ✗ Branch 453 not taken. ✗ Branch 454 not taken. ✗ Branch 455 not taken. ✗ Branch 456 not taken. ✗ Branch 457 not taken. ✗ Branch 458 not taken. ✗ Branch 459 not taken. ✗ Branch 460 not taken. ✗ Branch 461 not taken. ✗ Branch 462 not taken. ✗ Branch 463 not taken. ✗ Branch 464 not taken. ✗ Branch 465 not taken. ✗ Branch 466 not taken. ✗ Branch 467 not taken. ✗ Branch 468 not taken. ✗ Branch 469 not taken. ✗ Branch 470 not taken. ✗ Branch 471 not taken. ✗ Branch 472 not taken. ✗ Branch 473 not taken. ✗ Branch 474 not taken. ✗ Branch 475 not taken. ✗ Branch 476 not taken. ✗ Branch 477 not taken. ✗ Branch 478 not taken. ✗ Branch 479 not taken. ✗ Branch 480 not taken. ✗ Branch 481 not taken. ✗ Branch 482 not taken. ✗ Branch 483 not taken. ✗ Branch 484 not taken. ✗ Branch 485 not taken. ✗ Branch 486 not taken. ✗ Branch 487 not taken. ✗ Branch 488 not taken. ✗ Branch 489 not taken. ✗ Branch 490 not taken. ✗ Branch 491 not taken. ✗ Branch 492 not taken. ✗ Branch 493 not taken. ✗ Branch 494 not taken. ✗ Branch 495 not taken. ✗ Branch 496 not taken. ✗ Branch 497 not taken. ✗ Branch 498 not taken. ✗ Branch 499 not taken. ✗ Branch 500 not taken. ✗ Branch 501 not taken. ✗ Branch 502 not taken. ✗ Branch 503 not taken. ✗ Branch 504 not taken. ✗ Branch 505 not taken. ✗ Branch 506 not taken. ✗ Branch 507 not taken. ✗ Branch 508 not taken. ✗ Branch 509 not taken. ✗ Branch 510 not taken. ✗ Branch 511 not taken. ✗ Branch 512 not taken. ✗ Branch 513 not taken. ✗ Branch 514 not taken. ✗ Branch 515 not taken. ✗ Branch 516 not taken. ✗ Branch 517 not taken. ✗ Branch 518 not taken. ✗ Branch 519 not taken. ✗ Branch 520 not taken. ✗ Branch 521 not taken. ✗ Branch 522 not taken. ✗ Branch 523 not taken. ✗ Branch 524 not taken. ✗ Branch 525 not taken. ✗ Branch 526 not taken. ✗ Branch 527 not taken. ✗ Branch 528 not taken. ✗ Branch 529 not taken. ✗ Branch 530 not taken. ✗ Branch 531 not taken. ✗ Branch 532 not taken. ✗ Branch 533 not taken. ✗ Branch 534 not taken. ✗ Branch 535 not taken. ✗ Branch 536 not taken. ✗ Branch 537 not taken. ✗ Branch 538 not taken. ✗ Branch 539 not taken. ✗ Branch 540 not taken. ✗ Branch 541 not taken. ✗ Branch 542 not taken. ✗ Branch 543 not taken. ✗ Branch 544 not taken. ✗ Branch 545 not taken. ✗ Branch 546 not taken. ✗ Branch 547 not taken. ✗ Branch 548 not taken. ✗ Branch 549 not taken. ✗ Branch 550 not taken. ✗ Branch 551 not taken. ✗ Branch 552 not taken. ✗ Branch 553 not taken. ✗ Branch 554 not taken. ✗ Branch 555 not taken. ✗ Branch 556 not taken. ✗ Branch 557 not taken. ✗ Branch 558 not taken. ✗ Branch 559 not taken. ✗ Branch 560 not taken. ✗ Branch 561 not taken. ✗ Branch 562 not taken. ✗ Branch 563 not taken. ✗ Branch 564 not taken. ✗ Branch 565 not taken. ✗ Branch 566 not taken. ✗ Branch 567 not taken. ✗ Branch 568 not taken. ✗ Branch 569 not taken. ✗ Branch 570 not taken. ✗ Branch 571 not taken. ✗ Branch 572 not taken. ✗ Branch 573 not taken. ✗ Branch 574 not taken. ✗ Branch 575 not taken. ✗ Branch 576 not taken. ✗ Branch 577 not taken. ✗ Branch 578 not taken. ✗ Branch 579 not taken. ✗ Branch 580 not taken. ✗ Branch 581 not taken. ✗ Branch 582 not taken. ✗ Branch 583 not taken. ✗ Branch 584 not taken. ✗ Branch 585 not taken. ✗ Branch 586 not taken. ✗ Branch 587 not taken. ✗ Branch 588 not taken. ✗ Branch 589 not taken. ✗ Branch 590 not taken. ✗ Branch 591 not taken. ✗ Branch 592 not taken. ✗ Branch 593 not taken. ✗ Branch 594 not taken. ✗ Branch 595 not taken. ✗ Branch 596 not taken. ✗ Branch 597 not taken. ✗ Branch 598 not taken. ✗ Branch 599 not taken. ✗ Branch 600 not taken. ✗ Branch 601 not taken. ✗ Branch 602 not taken. ✗ Branch 603 not taken. ✗ Branch 604 not taken. ✗ Branch 605 not taken. ✗ Branch 606 not taken. ✗ Branch 607 not taken. ✗ Branch 608 not taken. ✗ Branch 610 not taken. ✗ Branch 611 not taken. ✗ Branch 612 not taken. ✗ Branch 613 not taken. ✗ Branch 615 not taken. ✗ Branch 616 not taken. ✗ Branch 617 not taken. ✗ Branch 619 not taken. ✗ Branch 620 not taken. ✗ Branch 621 not taken. ✗ Branch 623 not taken. ✗ Branch 624 not taken. ✗ Branch 625 not taken. ✗ Branch 627 not taken. ✗ Branch 628 not taken. ✗ Branch 629 not taken. ✗ Branch 630 not taken. ✗ Branch 632 not taken. ✗ Branch 633 not taken. ✗ Branch 635 not taken. ✗ Branch 636 not taken. ✗ Branch 637 not taken. ✗ Branch 638 not taken. ✗ Branch 639 not taken. ✗ Branch 640 not taken. ✗ Branch 641 not taken. ✗ Branch 644 not taken. ✗ Branch 645 not taken. ✗ Branch 646 not taken. ✗ Branch 647 not taken. ✗ Branch 648 not taken. ✗ Branch 649 not taken. ✗ Branch 650 not taken. ✗ Branch 651 not taken. ✗ Branch 652 not taken. ✗ Branch 653 not taken. ✗ Branch 654 not taken. ✗ Branch 655 not taken. ✗ Branch 656 not taken. ✗ Branch 657 not taken. ✗ Branch 658 not taken. ✗ Branch 659 not taken. ✗ Branch 660 not taken. ✗ Branch 661 not taken. ✗ Branch 663 not taken. ✗ Branch 664 not taken. ✗ Branch 665 not taken. ✗ Branch 666 not taken. ✗ Branch 667 not taken. ✗ Branch 668 not taken. ✗ Branch 669 not taken. ✗ Branch 670 not taken. ✗ Branch 672 not taken. ✗ Branch 673 not taken. ✗ Branch 674 not taken. ✗ Branch 677 not taken. ✗ Branch 678 not taken. ✗ Branch 679 not taken. ✗ Branch 680 not taken. ✗ Branch 681 not taken. ✗ Branch 682 not taken. ✗ Branch 685 not taken. ✗ Branch 686 not taken. ✗ Branch 689 not taken. ✗ Branch 690 not taken. ✗ Branch 693 not taken. ✗ Branch 694 not taken. ✗ Branch 695 not taken. ✗ Branch 696 not taken. ✗ Branch 697 not taken. ✗ Branch 698 not taken. ✗ Branch 699 not taken. ✗ Branch 701 not taken. ✗ Branch 702 not taken. ✗ Branch 703 not taken. ✗ Branch 704 not taken. ✗ Branch 705 not taken. ✗ Branch 706 not taken. ✗ Branch 707 not taken. ✗ Branch 708 not taken. ✗ Branch 709 not taken. ✗ Branch 710 not taken. ✗ Branch 711 not taken. ✗ Branch 712 not taken. ✗ Branch 713 not taken. ✗ Branch 714 not taken. ✗ Branch 715 not taken. ✗ Branch 716 not taken. ✗ Branch 717 not taken. ✗ Branch 718 not taken. ✗ Branch 719 not taken. ✗ Branch 720 not taken. ✗ Branch 721 not taken. ✗ Branch 722 not taken. ✗ Branch 723 not taken. ✗ Branch 724 not taken. ✗ Branch 725 not taken. ✗ Branch 726 not taken. ✗ Branch 727 not taken. ✗ Branch 730 not taken. ✗ Branch 731 not taken. ✗ Branch 734 not taken. ✗ Branch 735 not taken. ✗ Branch 736 not taken. ✗ Branch 738 not taken. ✗ Branch 739 not taken. ✗ Branch 740 not taken. ✗ Branch 742 not taken. ✗ Branch 743 not taken. ✗ Branch 744 not taken. ✗ Branch 746 not taken. ✗ Branch 747 not taken. ✗ Branch 748 not taken. ✗ Branch 750 not taken. ✗ Branch 751 not taken. ✓ Branch 752 taken 1 times. ✗ Branch 753 not taken. ✓ Branch 755 taken 1 times. ✗ Branch 756 not taken. ✓ Branch 758 taken 2 times. ✗ Branch 759 not taken. ✗ Branch 760 not taken. ✓ Branch 761 taken 2 times. ✗ Branch 762 not taken. ✗ Branch 763 not taken. ✓ Branch 764 taken 2 times. ✗ Branch 765 not taken. ✓ Branch 767 taken 2 times. ✗ Branch 768 not taken. ✓ Branch 770 taken 2 times. ✗ Branch 771 not taken. ✗ Branch 772 not taken. ✓ Branch 773 taken 2 times. ✗ Branch 774 not taken. ✗ Branch 775 not taken. ✓ Branch 776 taken 2 times. ✗ Branch 777 not taken. ✓ Branch 779 taken 2 times. ✗ Branch 780 not taken. ✗ Branch 781 not taken. ✓ Branch 782 taken 2 times. ✗ Branch 783 not taken. ✗ Branch 784 not taken. ✓ Branch 785 taken 2 times. ✗ Branch 786 not taken. ✗ Branch 787 not taken. ✗ Branch 788 not taken. ✗ Branch 789 not taken. ✗ Branch 791 not taken. ✗ Branch 792 not taken. ✗ Branch 793 not taken. ✗ Branch 796 not taken. ✗ Branch 797 not taken. ✗ Branch 800 not taken. ✗ Branch 801 not taken. ✗ Branch 804 not taken. ✗ Branch 805 not taken. ✗ Branch 808 not taken. ✗ Branch 809 not taken. ✗ Branch 812 not taken. ✗ Branch 813 not taken. ✗ Branch 816 not taken. ✗ Branch 817 not taken. ✗ Branch 818 not taken. ✗ Branch 820 not taken. ✗ Branch 821 not taken. ✗ Branch 822 not taken. ✗ Branch 824 not taken. ✗ Branch 825 not taken. ✗ Branch 828 not taken. ✗ Branch 829 not taken. ✗ Branch 830 not taken. ✗ Branch 832 not taken. ✗ Branch 833 not taken. ✗ Branch 834 not taken. ✗ Branch 837 not taken. ✗ Branch 838 not taken. ✗ Branch 841 not taken. ✗ Branch 842 not taken. ✗ Branch 845 not taken. ✗ Branch 846 not taken. ✗ Branch 849 not taken. ✗ Branch 850 not taken. ✗ Branch 853 not taken. ✗ Branch 854 not taken. ✗ Branch 857 not taken. ✗ Branch 858 not taken. ✗ Branch 859 not taken. ✗ Branch 861 not taken. ✗ Branch 862 not taken. ✗ Branch 863 not taken. ✗ Branch 865 not taken. ✗ Branch 866 not taken. ✗ Branch 869 not taken. ✗ Branch 870 not taken. ✗ Branch 871 not taken. ✗ Branch 873 not taken. ✗ Branch 874 not taken. ✗ Branch 875 not taken. ✗ Branch 878 not taken. ✗ Branch 879 not taken. ✗ Branch 882 not taken. ✗ Branch 883 not taken. ✗ Branch 886 not taken. ✗ Branch 887 not taken. ✗ Branch 890 not taken. ✗ Branch 891 not taken. ✗ Branch 894 not taken. ✗ Branch 895 not taken. ✗ Branch 898 not taken. ✗ Branch 899 not taken. ✗ Branch 900 not taken. ✗ Branch 902 not taken. ✗ Branch 903 not taken. ✗ Branch 904 not taken. ✗ Branch 906 not taken. ✗ Branch 907 not taken. ✗ Branch 910 not taken. ✗ Branch 911 not taken. ✗ Branch 912 not taken. ✗ Branch 914 not taken. ✗ Branch 915 not taken. ✗ Branch 916 not taken. ✗ Branch 919 not taken. ✗ Branch 920 not taken. ✗ Branch 923 not taken. ✗ Branch 924 not taken. ✗ Branch 927 not taken. ✗ Branch 928 not taken. ✗ Branch 931 not taken. ✗ Branch 932 not taken. ✗ Branch 935 not taken. ✗ Branch 936 not taken. ✗ Branch 939 not taken. ✗ Branch 940 not taken. ✗ Branch 941 not taken. ✗ Branch 943 not taken. ✗ Branch 944 not taken. ✗ Branch 945 not taken. ✗ Branch 947 not taken. ✗ Branch 948 not taken. ✗ Branch 951 not taken. ✗ Branch 952 not taken. ✗ Branch 953 not taken. ✗ Branch 955 not taken. ✗ Branch 956 not taken. ✗ Branch 957 not taken. ✗ Branch 960 not taken. ✗ Branch 961 not taken. ✗ Branch 964 not taken. ✗ Branch 965 not taken. ✗ Branch 968 not taken. ✗ Branch 969 not taken. ✗ Branch 972 not taken. ✗ Branch 973 not taken. ✗ Branch 976 not taken. ✗ Branch 977 not taken. ✗ Branch 980 not taken. ✗ Branch 981 not taken. ✗ Branch 984 not taken. ✗ Branch 985 not taken. ✗ Branch 988 not taken. ✗ Branch 989 not taken. ✗ Branch 992 not taken. ✗ Branch 993 not taken. ✗ Branch 996 not taken. ✗ Branch 997 not taken. ✗ Branch 1001 not taken. ✗ Branch 1002 not taken. ✗ Branch 1005 not taken. ✗ Branch 1006 not taken. ✗ Branch 1013 not taken. ✗ Branch 1014 not taken. ✗ Branch 1017 not taken. ✗ Branch 1018 not taken. ✗ Branch 1021 not taken. ✗ Branch 1022 not taken. ✗ Branch 1025 not taken. ✗ Branch 1026 not taken. ✗ Branch 1029 not taken. ✗ Branch 1030 not taken. ✗ Branch 1033 not taken. ✗ Branch 1034 not taken. ✗ Branch 1037 not taken. ✗ Branch 1038 not taken. ✗ Branch 1042 not taken. ✗ Branch 1043 not taken. ✗ Branch 1046 not taken. ✗ Branch 1047 not taken. ✗ Branch 1054 not taken. ✗ Branch 1055 not taken. ✗ Branch 1058 not taken. ✗ Branch 1059 not taken. ✗ Branch 1062 not taken. ✗ Branch 1063 not taken. ✗ Branch 1066 not taken. ✗ Branch 1067 not taken. ✗ Branch 1070 not taken. ✗ Branch 1071 not taken. ✗ Branch 1074 not taken. ✗ Branch 1075 not taken. ✗ Branch 1078 not taken. ✗ Branch 1079 not taken. ✗ Branch 1083 not taken. ✗ Branch 1084 not taken. ✗ Branch 1087 not taken. ✗ Branch 1088 not taken. ✗ Branch 1095 not taken. ✗ Branch 1096 not taken. ✗ Branch 1099 not taken. ✗ Branch 1100 not taken. ✗ Branch 1103 not taken. ✗ Branch 1104 not taken. ✗ Branch 1107 not taken. ✗ Branch 1108 not taken. ✗ Branch 1111 not taken. ✗ Branch 1112 not taken. ✗ Branch 1115 not taken. ✗ Branch 1116 not taken. ✗ Branch 1119 not taken. ✗ Branch 1120 not taken. ✗ Branch 1141 not taken. ✗ Branch 1142 not taken. ✗ Branch 1145 not taken. ✗ Branch 1146 not taken. ✗ Branch 1149 not taken. ✗ Branch 1150 not taken. ✗ Branch 1153 not taken. ✗ Branch 1154 not taken. ✗ Branch 1157 not taken. ✗ Branch 1158 not taken. ✗ Branch 1161 not taken. ✗ Branch 1162 not taken. ✗ Branch 1165 not taken. ✗ Branch 1166 not taken. ✗ Branch 1169 not taken. ✗ Branch 1170 not taken. ✗ Branch 1173 not taken. ✗ Branch 1174 not taken. ✗ Branch 1177 not taken. ✗ Branch 1178 not taken. ✗ Branch 1181 not taken. ✗ Branch 1182 not taken. ✗ Branch 1185 not taken. ✗ Branch 1186 not taken. ✗ Branch 1189 not taken. ✗ Branch 1190 not taken. ✗ Branch 1193 not taken. ✗ Branch 1194 not taken. ✗ Branch 1197 not taken. ✗ Branch 1198 not taken. ✗ Branch 1201 not taken. ✗ Branch 1202 not taken. ✗ Branch 1205 not taken. ✗ Branch 1206 not taken. ✗ Branch 1209 not taken. ✗ Branch 1210 not taken. ✗ Branch 1213 not taken. ✗ Branch 1214 not taken. ✗ Branch 1217 not taken. ✗ Branch 1218 not taken. ✗ Branch 1221 not taken. ✗ Branch 1222 not taken. ✗ Branch 1225 not taken. ✗ Branch 1226 not taken. ✗ Branch 1229 not taken. ✗ Branch 1230 not taken. ✗ Branch 1233 not taken. ✗ Branch 1234 not taken. ✗ Branch 1237 not taken. ✗ Branch 1238 not taken. ✗ Branch 1241 not taken. ✗ Branch 1242 not taken. ✗ Branch 1245 not taken. ✗ Branch 1246 not taken. ✗ Branch 1249 not taken. ✗ Branch 1250 not taken. ✗ Branch 1253 not taken. ✗ Branch 1254 not taken. ✗ Branch 1257 not taken. ✗ Branch 1258 not taken. ✗ Branch 1281 not taken. ✗ Branch 1282 not taken. ✗ Branch 1285 not taken. ✗ Branch 1286 not taken. ✗ Branch 1289 not taken. ✗ Branch 1290 not taken. ✗ Branch 1293 not taken. ✗ Branch 1294 not taken. ✗ Branch 1297 not taken. ✗ Branch 1298 not taken. ✗ Branch 1301 not taken. ✗ Branch 1302 not taken. ✗ Branch 1305 not taken. ✗ Branch 1306 not taken. ✗ Branch 1309 not taken. ✗ Branch 1310 not taken. ✗ Branch 1313 not taken. ✗ Branch 1314 not taken. ✗ Branch 1317 not taken. ✗ Branch 1318 not taken. ✗ Branch 1416 not taken. ✗ Branch 1417 not taken. ✗ Branch 1424 not taken. ✗ Branch 1425 not taken. | 219380012 | return static_cast<const IterT*>(this)->getItem(this->pos()); // static polymorphism | 
| 142 | } | ||
| 143 | /// @brief Set the value of the item to which this iterator is pointing. | ||
| 144 | /// (Not valid for const iterators.) | ||
| 145 | 11075338 | void setValue(const ItemT& value) const | |
| 146 | { | ||
| 147 | static_assert(!std::is_const<NodeT>::value, "setValue() not allowed for const iterators"); | ||
| 148 | static_cast<const IterT*>(this)->setItem(this->pos(), value); // static polymorphism | ||
| 149 | 89213666 | } | |
| 150 | /// @brief Apply a functor to the item to which this iterator is pointing. | ||
| 151 | /// (Not valid for const iterators.) | ||
| 152 | /// @param op a functor of the form <tt>void op(ValueType&) const</tt> that modifies | ||
| 153 | /// its argument in place | ||
| 154 | /// @see Tree::modifyValue() | ||
| 155 | template<typename ModifyOp> | ||
| 156 | ✗ | void modifyValue(const ModifyOp& op) const | |
| 157 | { | ||
| 158 | static_assert(!std::is_const<NodeT>::value, | ||
| 159 | "modifyValue() not allowed for const iterators"); | ||
| 160 | static_cast<const IterT*>(this)->modifyItem(this->pos(), op); // static polymorphism | ||
| 161 | 1186 | } | |
| 162 | }; // class SparseIteratorBase | ||
| 163 | |||
| 164 | |||
| 165 | //////////////////////////////////////// | ||
| 166 | |||
| 167 | |||
| 168 | /// @brief Base class for dense iterators over internal and leaf nodes | ||
| 169 | /// @note Dense iterators have no @c %operator*() or @c %operator->(), | ||
| 170 | /// because their return type would have to vary depending on whether | ||
| 171 | /// the iterator is pointing to a value or a child node. | ||
| 172 | template< | ||
| 173 | typename MaskIterT, // mask iterator type (typically a DenseIterator) | ||
| 174 | typename IterT, // DenseIteratorBase subclass (the "Curiously Recurring Template Pattern") | ||
| 175 | typename NodeT, // type of node over which to iterate | ||
| 176 | typename SetItemT, // type of set value (ChildNodeType, for non-leaf nodes) | ||
| 177 | typename UnsetItemT> // type of unset value (ValueType, usually) | ||
| 178 | struct DenseIteratorBase: public IteratorBase<MaskIterT, NodeT> | ||
| 179 | { | ||
| 180 | using NodeType = NodeT; | ||
| 181 | using ValueType = UnsetItemT; | ||
| 182 | using ChildNodeType = SetItemT; | ||
| 183 | using NonConstNodeType = typename std::remove_const<NodeT>::type; | ||
| 184 | using NonConstValueType = typename std::remove_const<UnsetItemT>::type; | ||
| 185 | using NonConstChildNodeType = typename std::remove_const<SetItemT>::type; | ||
| 186 | static const bool IsSparseIterator = false, IsDenseIterator = true; | ||
| 187 | |||
| 188 | DenseIteratorBase() {} | ||
| 189 | DenseIteratorBase(const MaskIterT& iter, NodeT* parent): | ||
| 190 | IteratorBase<MaskIterT, NodeT>(iter, parent) {} | ||
| 191 | |||
| 192 | /// @brief Return @c true if the item at the given index in the parent node's table | ||
| 193 | /// is a set value and return either the set value in @a child or the unset value | ||
| 194 | /// in @a value. | ||
| 195 | /// @note All subclasses must implement this accessor. | ||
| 196 | bool getItem(Index, SetItemT*& child, NonConstValueType& value) const; | ||
| 197 | /// @brief Set the value of the item at the given index in the parent node's table. | ||
| 198 | /// @note All non-const iterator subclasses must implement this accessor. | ||
| 199 | void setItem(Index, SetItemT*) const; | ||
| 200 | /// @brief "Unset" the value of the item at the given index in the parent node's table. | ||
| 201 | /// @note All non-const iterator subclasses must implement this accessor. | ||
| 202 | void unsetItem(Index, const UnsetItemT&) const; | ||
| 203 | |||
| 204 | /// Return @c true if this iterator is pointing to a child node. | ||
| 205 | 147456 | bool isChildNode() const { return this->parent().isChildMaskOn(this->pos()); } | |
| 206 | |||
| 207 | /// @brief If this iterator is pointing to a child node, return a pointer to the node. | ||
| 208 | /// Otherwise, return nullptr and, in @a value, the value to which this iterator is pointing. | ||
| 209 | 24576 | SetItemT* probeChild(NonConstValueType& value) const | |
| 210 | { | ||
| 211 | 22/44✓ Branch 1 taken 2 times. ✗ Branch 2 not taken. ✓ Branch 4 taken 2 times. ✗ Branch 5 not taken. ✓ Branch 15 taken 32768 times. ✗ Branch 16 not taken. ✓ Branch 18 taken 32768 times. ✗ Branch 19 not taken. ✓ Branch 21 taken 32768 times. ✗ Branch 22 not taken. ✓ Branch 24 taken 32768 times. ✗ Branch 25 not taken. ✓ Branch 27 taken 32768 times. ✗ Branch 28 not taken. ✓ Branch 30 taken 32768 times. ✗ Branch 31 not taken. ✓ Branch 33 taken 32768 times. ✗ Branch 34 not taken. ✓ Branch 36 taken 32768 times. ✗ Branch 37 not taken. ✓ Branch 39 taken 32768 times. ✗ Branch 40 not taken. ✓ Branch 42 taken 32768 times. ✗ Branch 43 not taken. ✓ Branch 63 taken 32768 times. ✗ Branch 64 not taken. ✓ Branch 66 taken 65536 times. ✗ Branch 67 not taken. ✓ Branch 69 taken 32768 times. ✗ Branch 70 not taken. ✓ Branch 72 taken 65536 times. ✗ Branch 73 not taken. ✓ Branch 75 taken 32768 times. ✗ Branch 76 not taken. ✓ Branch 78 taken 65536 times. ✗ Branch 79 not taken. ✓ Branch 81 taken 32768 times. ✗ Branch 82 not taken. ✓ Branch 84 taken 65536 times. ✗ Branch 85 not taken. ✓ Branch 87 taken 32768 times. ✗ Branch 88 not taken. ✓ Branch 90 taken 65536 times. ✗ Branch 91 not taken. | 2387972 | SetItemT* child = nullptr; | 
| 212 | 22/44✓ Branch 1 taken 2 times. ✗ Branch 2 not taken. ✓ Branch 4 taken 2 times. ✗ Branch 5 not taken. ✓ Branch 15 taken 32768 times. ✗ Branch 16 not taken. ✓ Branch 18 taken 32768 times. ✗ Branch 19 not taken. ✓ Branch 21 taken 32768 times. ✗ Branch 22 not taken. ✓ Branch 24 taken 32768 times. ✗ Branch 25 not taken. ✓ Branch 27 taken 32768 times. ✗ Branch 28 not taken. ✓ Branch 30 taken 32768 times. ✗ Branch 31 not taken. ✓ Branch 33 taken 32768 times. ✗ Branch 34 not taken. ✓ Branch 36 taken 32768 times. ✗ Branch 37 not taken. ✓ Branch 39 taken 32768 times. ✗ Branch 40 not taken. ✓ Branch 42 taken 32768 times. ✗ Branch 43 not taken. ✓ Branch 63 taken 32768 times. ✗ Branch 64 not taken. ✓ Branch 66 taken 65536 times. ✗ Branch 67 not taken. ✓ Branch 69 taken 32768 times. ✗ Branch 70 not taken. ✓ Branch 72 taken 65536 times. ✗ Branch 73 not taken. ✓ Branch 75 taken 32768 times. ✗ Branch 76 not taken. ✓ Branch 78 taken 65536 times. ✗ Branch 79 not taken. ✓ Branch 81 taken 32768 times. ✗ Branch 82 not taken. ✓ Branch 84 taken 65536 times. ✗ Branch 85 not taken. ✓ Branch 87 taken 32768 times. ✗ Branch 88 not taken. ✓ Branch 90 taken 65536 times. ✗ Branch 91 not taken. | 2387972 | static_cast<const IterT*>(this)->getItem(this->pos(), child, value); // static polymorphism | 
| 213 | 84/92✓ Branch 0 taken 8 times. ✓ Branch 1 taken 32760 times. ✓ Branch 2 taken 8 times. ✓ Branch 3 taken 32760 times. ✓ Branch 4 taken 8 times. ✓ Branch 5 taken 32760 times. ✓ Branch 6 taken 8 times. ✓ Branch 7 taken 32760 times. ✓ Branch 8 taken 8 times. ✓ Branch 9 taken 32760 times. ✓ Branch 10 taken 8 times. ✓ Branch 11 taken 32760 times. ✓ Branch 12 taken 8 times. ✓ Branch 13 taken 32760 times. ✓ Branch 14 taken 8 times. ✓ Branch 15 taken 32760 times. ✓ Branch 16 taken 8 times. ✓ Branch 17 taken 32760 times. ✓ Branch 18 taken 8 times. ✓ Branch 19 taken 32760 times. ✓ Branch 20 taken 8 times. ✓ Branch 21 taken 32760 times. ✓ Branch 22 taken 8 times. ✓ Branch 23 taken 32760 times. ✓ Branch 24 taken 8 times. ✓ Branch 25 taken 32760 times. ✓ Branch 26 taken 8 times. ✓ Branch 27 taken 32760 times. ✓ Branch 28 taken 8 times. ✓ Branch 29 taken 32760 times. ✓ Branch 30 taken 8 times. ✓ Branch 31 taken 32760 times. ✓ Branch 32 taken 8 times. ✓ Branch 33 taken 32760 times. ✓ Branch 34 taken 8 times. ✓ Branch 35 taken 32760 times. ✓ Branch 36 taken 8 times. ✓ Branch 37 taken 32760 times. ✓ Branch 38 taken 8 times. ✓ Branch 39 taken 32760 times. ✗ Branch 40 not taken. ✗ Branch 41 not taken. ✓ Branch 42 taken 3 times. ✓ Branch 43 taken 12285 times. ✗ Branch 44 not taken. ✗ Branch 45 not taken. ✗ Branch 46 not taken. ✗ Branch 47 not taken. ✓ Branch 48 taken 8 times. ✓ Branch 49 taken 32760 times. ✓ Branch 50 taken 16 times. ✓ Branch 51 taken 65520 times. ✓ Branch 52 taken 8 times. ✓ Branch 53 taken 32760 times. ✓ Branch 54 taken 16 times. ✓ Branch 55 taken 65520 times. ✓ Branch 56 taken 8 times. ✓ Branch 57 taken 32760 times. ✓ Branch 58 taken 16 times. ✓ Branch 59 taken 65520 times. ✓ Branch 60 taken 8 times. ✓ Branch 61 taken 32760 times. ✓ Branch 62 taken 16 times. ✓ Branch 63 taken 65520 times. ✓ Branch 64 taken 8 times. ✓ Branch 65 taken 32760 times. ✓ Branch 66 taken 16 times. ✓ Branch 67 taken 65520 times. ✓ Branch 68 taken 8 times. ✓ Branch 69 taken 32760 times. ✓ Branch 70 taken 16 times. ✓ Branch 71 taken 65520 times. ✓ Branch 72 taken 8 times. ✓ Branch 73 taken 32760 times. ✓ Branch 74 taken 16 times. ✓ Branch 75 taken 65520 times. ✓ Branch 76 taken 8 times. ✓ Branch 77 taken 32760 times. ✓ Branch 78 taken 16 times. ✓ Branch 79 taken 65520 times. ✓ Branch 80 taken 8 times. ✓ Branch 81 taken 32760 times. ✓ Branch 82 taken 16 times. ✓ Branch 83 taken 65520 times. ✓ Branch 84 taken 8 times. ✓ Branch 85 taken 32760 times. ✓ Branch 86 taken 16 times. ✓ Branch 87 taken 65520 times. ✗ Branch 88 not taken. ✗ Branch 89 not taken. ✓ Branch 90 taken 4 times. ✓ Branch 91 taken 131068 times. | 2396164 | return child; | 
| 214 | } | ||
| 215 | /// @brief If this iterator is pointing to a child node, return @c true and return | ||
| 216 | /// a pointer to the child node in @a child. Otherwise, return @c false and return | ||
| 217 | /// the value to which this iterator is pointing in @a value. | ||
| 218 | bool probeChild(SetItemT*& child, NonConstValueType& value) const | ||
| 219 | { | ||
| 220 | child = probeChild(value); | ||
| 221 | return (child != nullptr); | ||
| 222 | } | ||
| 223 | |||
| 224 | /// @brief Return @c true if this iterator is pointing to a value and return | ||
| 225 | /// the value in @a value. Otherwise, return @c false. | ||
| 226 | bool probeValue(NonConstValueType& value) const | ||
| 227 | { | ||
| 228 | SetItemT* child = nullptr; | ||
| 229 | const bool isChild = static_cast<const IterT*>(this)-> // static polymorphism | ||
| 230 | getItem(this->pos(), child, value); | ||
| 231 | return !isChild; | ||
| 232 | } | ||
| 233 | |||
| 234 | /// @brief Replace with the given child node the item in the parent node's table | ||
| 235 | /// to which this iterator is pointing. | ||
| 236 | void setChild(SetItemT* child) const | ||
| 237 | { | ||
| 238 | static_cast<const IterT*>(this)->setItem(this->pos(), child); // static polymorphism | ||
| 239 | } | ||
| 240 | |||
| 241 | /// @brief Replace with the given value the item in the parent node's table | ||
| 242 | /// to which this iterator is pointing. | ||
| 243 | void setValue(const UnsetItemT& value) const | ||
| 244 | { | ||
| 245 | static_cast<const IterT*>(this)->unsetItem(this->pos(), value); // static polymorphism | ||
| 246 | } | ||
| 247 | }; // struct DenseIteratorBase | ||
| 248 | |||
| 249 | } // namespace tree | ||
| 250 | } // namespace OPENVDB_VERSION_NAME | ||
| 251 | } // namespace openvdb | ||
| 252 | |||
| 253 | #endif // OPENVDB_TREE_ITERATOR_HAS_BEEN_INCLUDED | ||
| 254 |