GCC Code Coverage Report


./
File: libs/__/data/image.hpp
Date: 2025-01-21 16:21:04
Lines:
64/64
100.0%
Functions:
44/57
77.2%
Branches:
672/3114
21.6%

Line Branch Exec Source
1 /************************************************************************
2 *
3 * Copyright (C) 2009-2025 IRCAD France
4 * Copyright (C) 2012-2020 IHU Strasbourg
5 *
6 * This file is part of Sight.
7 *
8 * Sight is free software: you can redistribute it and/or modify it under
9 * the terms of the GNU Lesser General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * Sight is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with Sight. If not, see <https://www.gnu.org/licenses/>.
20 *
21 ***********************************************************************/
22
23 #pragma once
24
25 #include "data/array.hpp"
26 #include "data/iterator.hpp"
27
28 #include <core/memory/buffered.hpp>
29 #include <core/type.hpp>
30
31 #include <data/iterator.hpp>
32
33 #include <boost/range/iterator_range_core.hpp>
34
35 #include <array>
36 #include <vector>
37
38 namespace sight::data
39 {
40
41 class point;
42 class point_list;
43
44 /**
45 * @brief This class defines an image
46 *
47 * An image contains a buffer and is defined by some parameters (size, spacing, pixel type, ...)
48 *
49 * The buffer type is defined by core::type that provides the basic types ([u]int8, [u]int16, [u]int32,
50 *[u]int64,
51 * float and double).
52 *
53 * The image size is a 3D std::size_t array but the third dimension can be 0 for a 2D image.
54 *
55 * The image PixelFormat represents the buffer organization in components (GRAY_SCALE: 1 component, RGB and BGR: 3
56 * components, RGBA and BGRA: 4 components).
57 *
58 * @section Usage Usage
59 *
60 * @subsection Allocation Allocation
61 *
62 * The image buffer is allocated using the resize() method.
63 * You can get the allocated size using size_in_bytes() and getAllocatedSizeInBytes().
64 *
65 * To resize the image, you must pass the Type ([u]int[8|16|32|64], double, float), the size and the pixel
66 * format of the buffer when calling resize(const Size& size, const core::type& type, PixelFormat format).
67 *
68 * @section Access Buffer access
69 *
70 * You can access voxel values using at<type>(index_t id) or
71 * at<type>(index_t x, index_t y, index_t z, index_t c) methods. These methods are slow and should not be used
72 * to parse the entire buffer (see iterators).
73 *
74 * You can also use getPixelAsString() to retrieve the value as a string (useful for displaying information).
75 *
76 * @warning The image must be locked for dump before accessing the buffer. It prevents the buffer to be dumped on the
77 * disk.
78 *
79 * \b Example:
80 *
81 * @code{.cpp}
82
83 // 3D image of std::int16_t
84
85 // prevent the buffer to be dumped on the disk
86 const auto dumpLock = image->dump_lock();
87
88 // retrieve the value at index (x, y, z)
89 value = image->at<std::int16_t>(x, y, z);
90
91 // or you can compute the index like
92 const auto size = image->size();
93 const std::size_t index = x + y*size[0] + z*size[0]*size[1];
94 value = image->at<std::int16_t>(index);
95 @endcode
96 *
97 * @subsection iterators iterators
98 *
99 * To parse the buffer from beginning to end, the iterator can be used (iterator::ImageiteratorBase).
100 *
101 * The iteration depends on the given format. The format can be the buffer type ([u]int[8|16|32|64], double, float), but
102 * can also be a simple struct like:
103 *
104 * @code{.cpp}
105 struct Color {
106 std::uint8_t r;
107 std::uint8_t g;
108 std::uint8_t b;
109 std::uint8_t a;
110 };
111 @endcode
112 *
113 * This struct allows to parse the image as an RGBA buffer (RGBARGBARGBA....).
114 *
115 * To get an iterator on the image, use begin<T>() and end<T>() methods.
116 *
117 * @warning The iterator does not assert that the image type is the same as the given format. It only asserts (in debug)
118 * that the iterator does iterate inside of the buffer bounds).
119 *
120 * \b Example :
121 * @code{.cpp}
122 image::sptr img = image::New();
123 img->resize({1920, 1080, 1}, core::type::UINT8, image::pixel_format::rgba);
124 auto iter = img->begin<color>();
125 const auto iterEnd = img->end<color>();
126
127 for (; iter != iterEnd; ++iter)
128 {
129 iter->r = val1;
130 iter->g = val2;
131 iter->b = val2;
132 iter->a = val4;
133 }
134 @endcode
135 *
136 */
137 /* *INDENT-OFF* */
138 /**
139 * @note If you need to know (x, y, z) indices, you can parse the array looping from the last dimension to the first,
140 * like:
141 * @code{.cpp}
142 const auto size = image->size();
143
144 auto iter = image->begin<color>();
145
146 for (std::size_t z=0 ; z<size[2] ; ++z)
147 {
148 for (std::size_t y=0 ; y<size[1] ; ++y)
149 {
150 for (std::size_t x=0 ; x<size[0] ; ++x)
151 {
152 // do something with x and y ....
153
154 // retrieve the value
155 val1 = iter->r;
156 val2 = iter->g;
157 val3 = iter->b;
158 val4 = iter->a;
159
160 // increment iterator
161 ++iter;
162 }
163 }
164 }
165 @endcode
166 */
167 /* *INDENT-ON* */
168 class SIGHT_DATA_CLASS_API image : public virtual object,
169 public core::memory::buffered
170 {
171 public:
172
173
5/9
✓ Branch 0 taken 88 times.
✓ Branch 1 taken 5812 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 88 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 88 times.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
11830 SIGHT_DECLARE_CLASS(image, object);
174 SIGHT_ALLOW_SHARED_FROM_THIS()
175
176 using size_t = std::array<std::size_t, 3>;
177 using origin_t = std::array<double, 3>;
178 using orientation_t = std::array<double, 9>;
179 using spacing_t = std::array<double, 3>;
180
181 using index_t = size_t::value_type;
182 using buffer_t = std::uint8_t;
183
184 /// image format
185 enum pixel_format_t
186 {
187 undefined = 0, ///< Undefined pixel format
188 rgb, ///< image with 3 component RGB.
189 rgba, ///< image with 4 component RGBA.
190 bgr, ///< image with 3 component BGR.
191 bgra, ///< image with 4 component BGRA.
192 gray_scale, ///< image with 1 component.
193 rg, ///< image with 2 components RG.
194 count
195 };
196
197 /**
198 * @brief Constructor
199 */
200 SIGHT_DATA_API image();
201
202 /**
203 * @brief Destructor
204 */
205
1/2
✓ Branch 0 taken 3987 times.
✗ Branch 1 not taken.
15948 SIGHT_DATA_API ~image() noexcept override = default;
206
207 /// @brief get image information from source. Informations are spacing,origin,size ... expect Fields
208 SIGHT_DATA_API void copy_information(image::csptr _source);
209
210 /** @{
211 * @brief Get/set image spacing
212 */
213 const spacing_t& spacing() const;
214 void set_spacing(const spacing_t& _spacing);
215 /// @}
216
217 /** @{
218 * @brief Get/set image origin
219 */
220 const origin_t& origin() const;
221 virtual void set_origin(const origin_t& _origin);
222 /// @}
223
224 /** @{
225 * @brief Get/set image orientation.
226 *
227 * @note The orientation is a 3x3 direction cosines matrix in row-major order.
228 */
229 const orientation_t& orientation() const;
230 virtual void set_orientation(const orientation_t& _orientation);
231 /// @}
232
233 /// Get image size
234 const image::size_t& size() const;
235
236 /// Number of dimensions of the image (3 for 3D image)
237 SIGHT_DATA_API std::size_t num_dimensions() const;
238
239 /** @{
240 * @brief Get/set preferred window center
241 */
242 virtual std::vector<double> window_center() const noexcept;
243 virtual void set_window_center(const std::vector<double>& _window_centers);
244 /// @}
245
246 /** @{
247 * @brief Get/set preferred window width
248 */
249 virtual std::vector<double> window_width() const noexcept;
250 virtual void set_window_width(const std::vector<double>& _window_widths);
251 /// @}
252
253 /// Get the number of elements (ie: size[0]*size[1]*size[2]*nbComponents)
254 SIGHT_DATA_API std::size_t num_elements() const;
255
256 /// Get the number of components of an image pixel
257 std::size_t num_components() const;
258
259 /// Get image type
260 SIGHT_DATA_API core::type type() const;
261
262 /// Get pixel format
263 pixel_format_t pixel_format() const;
264
265 /**
266 @{
267 * @brief Resize the image and allocate the memory if needed.
268 *
269 * @param _size array of size in each direction (x,y,z)
270 * @param _type type of a single pixel component value
271 * @param _format specify the ordering and the meaning of a pixel components
272 *
273 * If the data array owns its buffer, this method will always work (until it remain free memory)
274 * Otherwise an exception is thrown :
275 * - if m_dataArray does not own it buffer and image's size and type combination do not match anymore array's one
276 * - if there is no memory left
277 *
278 * @return Allocated size in bytes
279 */
280 SIGHT_DATA_API virtual std::size_t resize(
281 const image::size_t& _size,
282 const core::type& _type,
283 pixel_format_t _format
284 );
285 /// @}
286
287 /// @brief return image size in bytes
288 SIGHT_DATA_API std::size_t size_in_bytes() const;
289 /// @brief return allocated image size in bytes
290 SIGHT_DATA_API std::size_t allocated_size_in_bytes() const;
291
292 /**
293 * @name Signals
294 * @{
295 */
296 /// Type of signal when image's buffer is added
297 using buffer_modified_signal_t = core::com::signal<void ()>;
298 SIGHT_DATA_API static const core::com::signals::key_t BUFFER_MODIFIED_SIG;
299
300 /// Type of signal when a landmark is added
301 using landmark_added_signal_t = core::com::signal<void (std::shared_ptr<point>)>;
302 SIGHT_DATA_API static const core::com::signals::key_t LANDMARK_ADDED_SIG;
303
304 /// Type of signal when a landmark is removed
305 using landmark_removed_signal_t = core::com::signal<void (std::shared_ptr<point>)>;
306 SIGHT_DATA_API static const core::com::signals::key_t LANDMARK_REMOVED_SIG;
307
308 /// Type of signal when a landmark is added
309 using landmark_displayed_signal_t = core::com::signal<void (bool)>;
310 SIGHT_DATA_API static const core::com::signals::key_t LANDMARK_DISPLAYED_SIG;
311
312 /// Type of signal when slice index is modified (axial index, frontal index, sagittal index)
313 using slice_index_modified_signal_t = core::com::signal<void (int, int, int)>;
314 SIGHT_DATA_API static const core::com::signals::key_t SLICE_INDEX_MODIFIED_SIG;
315
316 /// Type of signal when slice type is modified (from slice type, to slice type)
317 using slice_type_modified_signal_t = core::com::signal<void (int, int)>;
318 SIGHT_DATA_API static const core::com::signals::key_t SLICE_TYPE_MODIFIED_SIG;
319
320 /// Type of signal when ruler fiducial is modified (the associated id of ruler fiducial and the new coordinates)
321 using ruler_modified_signal_t =
322 core::com::signal<void (std::optional<std::string>, std::array<double, 3>, std::array<double, 3>)>;
323 SIGHT_DATA_API static const core::com::signals::key_t RULER_MODIFIED_SIG;
324
325 /// Type of signal when fiducial is removed (the associated id of fiducial)
326 using fiducial_removed_signal_t =
327 core::com::signal<void (std::optional<std::string>)>;
328 SIGHT_DATA_API static const core::com::signals::key_t FIDUCIAL_REMOVED_SIG;
329 /**
330 * @}
331 */
332
333 /**
334 * @name Iteration typedefs
335 * @{
336 */
337 /// image iterator
338 template<typename T>
339 using iterator = array_iterator<T>;
340 template<typename T>
341 using const_iterator = array_iterator<const T>;
342 /// @}
343
344 /**
345 * @brief Returns the begin/end iterators to the image buffer, cast to T
346 *
347 * Iterate through all the elements of the buffer.
348 * The format can be the buffer type ([u]int[8|16|32|64], double, float), and can also be a simple struct like:
349 *
350 * @code{.cpp}
351 struct Color {
352 std::uint8_t r;
353 std::uint8_t g;
354 std::uint8_t b;
355 std::uint8_t a;
356 };
357 @endcode
358 * @see iterator::rgba
359 *
360 * Example:
361 * @code{.cpp}
362 image::sptr img = image::New();
363 img->resize(1920, 1080, 0, core::type::UINT8, image::pixel_format::rgba);
364 img->resize({1920, 1080, 0}, core::type::UINT8, image::pixel_format::rgba);
365 image::iterator< Color > iter = img->begin< Color >();
366 const image::iterator< Color > iterEnd = img->end< Color >();
367
368 for (; iter != iterEnd; ++iter)
369 {
370 iter->r = val1;
371 iter->g = val2;
372 iter->b = val2;
373 iter->a = val4;
374 }
375 @endcode
376 *
377 * @warning The iterator does not assert that the buffer type is the same as the given format. It only asserts
378 * (in debug) that the iterator does iterate inside of the buffer bounds).
379 * @{
380 */
381 template<typename T>
382 iterator<T> begin();
383 template<typename T>
384 iterator<T> end();
385 template<typename T>
386 const_iterator<T> begin() const;
387 template<typename T>
388 const_iterator<T> end() const;
389 template<typename T>
390 const_iterator<T> cbegin() const;
391 template<typename T>
392 const_iterator<T> cend() const;
393 /// @}
394
395 /**
396 * @brief Returns a range of begin/end iterators, especially useful to be used in "for range loops".
397 * @{
398 */
399 template<typename T>
400 auto range();
401 template<typename T>
402 auto crange() const;
403 /// @}
404
405 /**
406 * @brief Returns the begin/end iterators to the array buffer, cast to char
407 *
408 * Iterate through all the element of the buffer.
409 * @{
410 */
411 SIGHT_DATA_API iterator<char> begin();
412 SIGHT_DATA_API iterator<char> end();
413 SIGHT_DATA_API const_iterator<char> begin() const;
414 SIGHT_DATA_API const_iterator<char> end() const;
415 /// @}
416
417 ///
418 /// @{
419 /// Returns image buffer
420 SIGHT_DATA_API void* buffer();
421 SIGHT_DATA_API const void* buffer() const;
422 /// @}
423
424 /**
425 * @brief Setter for the array buffer.
426 *
427 * An existing buffer will be released if the array own it.
428 *
429 * @param _buf Buffer to set as Array's buffer
430 * @param _take_ownership if true, the Array will manage allocation and destroy the buffer when needed.
431 * @param _type Type of the array view
432 * @param _size Size of the array view
433 * @param _format Specify the ordering and the meaning of a pixel components
434 * @param _policy If the array takes ownership of the buffer, specifies the buffer allocation policy.
435 */
436 SIGHT_DATA_API void set_buffer(
437 void* _buf,
438 bool _take_ownership,
439 const core::type& _type,
440 const image::size_t& _size,
441 pixel_format_t _format,
442 core::memory::buffer_allocation_policy::sptr _policy = std::make_shared<core::memory::buffer_malloc_policy>()
443 );
444
445 /**
446 * @{
447 * @brief Get the value of an element
448 *
449 * @param T Type in which the pointer will be returned
450 * @param _id Item image index
451 *
452 * @return Buffer value cast to T
453 * @warning This method is slow and should not be used intensively
454 * @throw Exception The buffer cannot be accessed if the array is not locked (see dump_lock_impl())
455 * @throw Exception Index out of bounds
456 */
457 template<typename T>
458 T& at(index_t _id);
459 template<typename T>
460 T at(index_t _id) const;
461 /// @}
462 /**
463 * @{
464 * @brief Get the value of an element
465 *
466 * @param T Type in which the pointer will be returned
467 * @param _x x index
468 * @param _y y index
469 * @param _z z index
470 * @param _c component index
471 *
472 * @return Buffer value cast to T
473 * @warning This method is slow and should not be used intensively
474 * @throw Exception The buffer cannot be accessed if the array is not locked (see dump_lock_impl())
475 * @throw Exception Index out of bounds
476 */
477 template<typename T>
478 T& at(index_t _x, index_t _y, index_t _z, index_t _c = 0);
479 template<typename T>
480 T at(index_t _x, index_t _y, index_t _z, index_t _c = 0) const;
481 /// @}
482 ///
483
484 /**
485 * @brief Return a pointer on a image pixel
486 * @param _index offset of the pixel
487 * @throw Exception The buffer cannot be accessed if the array is not locked (see dump_lock_impl())
488 */
489 SIGHT_DATA_API void* get_pixel(index_t _index);
490
491 /**
492 * @brief Return a pointer on a image pixel
493 * @param _index offset of the pixel
494 * @throw Exception The buffer cannot be accessed if the array is not locked (see dump_lock_impl())
495 */
496 SIGHT_DATA_API const void* get_pixel(index_t _index) const;
497
498 /**
499 * @brief Set pixel value represented as a void* buffer
500 * @param _index offset of the pixel
501 * @param _pix_buf pixel value represented as a void* buffer
502 * @throw Exception The buffer cannot be accessed if the array is not locked (see dump_lock_impl())
503 */
504 SIGHT_DATA_API void set_pixel(index_t _index, const buffer_t* _pix_buf);
505
506 /// Return the pixel value in a std::string
507 SIGHT_DATA_API std::string get_pixel_as_string(
508 index_t _x,
509 index_t _y,
510 index_t _z
511 ) const;
512
513 /// Return the buffer object
514 SIGHT_DATA_API core::memory::buffer_object::sptr get_buffer_object();
515
516 /// Return the buffer object
517 SIGHT_DATA_API core::memory::buffer_object::csptr get_buffer_object() const;
518
519 /// Equality comparison operators
520 /// @{
521 SIGHT_DATA_API bool operator==(const image& _other) const noexcept;
522 SIGHT_DATA_API bool operator!=(const image& _other) const noexcept;
523 /// @}
524
525 /// Defines shallow copy
526 /// @throws data::exception if an errors occurs during copy
527 /// @param[in] _source the source object to copy
528 SIGHT_DATA_API void shallow_copy(const object::csptr& _source) override;
529
530 /// Defines deep copy
531 /// @throws data::exception if an errors occurs during copy
532 /// @param _source source object to copy
533 /// @param _cache cache used to deduplicate pointers
534 SIGHT_DATA_API void deep_copy(
535 const object::csptr& _source,
536 const std::unique_ptr<deep_copy_cache_t>& _cache = std::make_unique<deep_copy_cache_t>()
537 ) override;
538
539 protected:
540
541 /// Add a lock on the image in the given vector to prevent from dumping the buffer on the disk
542 /// This is needed for IBuffered interface implementation
543 SIGHT_DATA_API void dump_lock_impl(std::vector<core::memory::buffer_object::lock_t>& _locks) const override;
544
545 private:
546
547 /**
548 * @{
549 * @brief Resize the image and allocate the memory if needed.
550 *
551 * @param _size array of size in each direction (x,y,z)
552 * @param _type type of a single pixel component value
553 * @param _format specify the ordering and the meaning of a pixel components
554 * @param _realloc allows to not reallocate, for instance when importing directly the buffer with setBuffer()
555 *
556 * If the data array owns its buffer, this method will always work (until it remain free memory)
557 * Otherwise an exception is thrown :
558 * - if m_dataArray does not own it buffer and image's size and type combination do not match anymore array's one
559 * - if there is no memory left
560 *
561 * @return Allocated size in bytes
562 */
563 SIGHT_DATA_API std::size_t resize(
564 const image::size_t& _size,
565 const core::type& _type,
566 pixel_format_t _format,
567 bool _realloc
568 );
569 /// @}
570
571 /**
572 * @brief Protected setter for the array buffer.
573 * An existing buffer will be released if the array own it.
574 *
575 * @param _buf Buffer to set as Array's buffer
576 * @param _take_ownership If true, the Array will manage allocation and destroy the buffer when needed.
577 * @param _policy If the array takes ownership of the buffer, specifies the buffer allocation policy.
578 */
579 void set_buffer(
580 void* _buf,
581 bool _take_ownership = false,
582 core::memory::buffer_allocation_policy::sptr _policy = std::make_shared<core::memory::buffer_malloc_policy>()
583 );
584
585 //! Size of the image (in terms of points)
586 size_t m_size {0, 0, 0};
587
588 //! An array on the voxel size of the image
589 spacing_t m_spacing {0., 0., 0.};
590
591 //! origin_t of the image in 3D coordinate system
592 origin_t m_origin {0., 0., 0.};
593
594 //! orientation_t of the image in 3D coordinate system (row-major order)
595 orientation_t m_orientation {1., 0., 0., 0., 1., 0., 0., 0., 1.};
596
597 //! Preferred window center/width
598 ///@{
599 std::vector<double> m_window_centers;
600 std::vector<double> m_window_widths;
601 ///@}
602
603 //! Number of components
604 std::size_t m_num_components {1};
605
606 //! type of image pixel
607 core::type m_type {core::type::UINT8};
608
609 //! number of bytes between two pixels - not serialized
610 std::size_t m_stride {1};
611
612 //! image format
613 pixel_format_t m_pixel_format {pixel_format_t::undefined};
614
615 //! image buffer
616 array::sptr m_data_array;
617 };
618
619 //-----------------------------------------------------------------------------
620
621 887 inline std::vector<double> image::window_center() const noexcept
622 {
623 887 return m_window_centers;
624 }
625
626 //-----------------------------------------------------------------------------
627
628 1234 inline void image::set_window_center(const std::vector<double>& _window_centers)
629 {
630 1234 m_window_centers = _window_centers;
631 1181 }
632
633 //-----------------------------------------------------------------------------
634
635 887 inline std::vector<double> image::window_width() const noexcept
636 {
637 887 return m_window_widths;
638 }
639
640 //-----------------------------------------------------------------------------
641
642 1234 inline void image::set_window_width(const std::vector<double>& _window_widths)
643 {
644 1234 m_window_widths = _window_widths;
645 1181 }
646
647 //-----------------------------------------------------------------------------
648
649 3410 inline std::size_t image::num_components() const
650 {
651
32/32
✓ Branch 0 taken 407 times.
✓ Branch 1 taken 1703 times.
✓ Branch 2 taken 182 times.
✓ Branch 3 taken 253 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 4 times.
✓ Branch 8 taken 3 times.
✓ Branch 9 taken 1 times.
✓ Branch 10 taken 4 times.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 3 times.
✓ Branch 13 taken 4 times.
✓ Branch 14 taken 1 times.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 6 times.
✓ Branch 17 taken 1 times.
✓ Branch 18 taken 1 times.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 3 times.
✓ Branch 21 taken 1 times.
✓ Branch 22 taken 4 times.
✓ Branch 23 taken 1 times.
✓ Branch 24 taken 3 times.
✓ Branch 25 taken 62 times.
✓ Branch 26 taken 1 times.
✓ Branch 27 taken 31 times.
✓ Branch 28 taken 3 times.
✓ Branch 29 taken 1 times.
✓ Branch 30 taken 59 times.
✓ Branch 31 taken 1 times.
3401 return m_num_components;
652 }
653
654 //-----------------------------------------------------------------------------
655
656 1248 inline enum image::pixel_format_t image::pixel_format() const
657 {
658
33/70
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 823 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 26 times.
✓ Branch 4 taken 9 times.
✓ Branch 5 taken 5 times.
✓ Branch 6 taken 6 times.
✓ Branch 7 taken 53 times.
✓ Branch 8 taken 6 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 4 times.
✓ Branch 13 taken 7 times.
✓ Branch 14 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 8 times.
✓ Branch 19 taken 26 times.
✓ Branch 20 taken 4 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 4 times.
✓ Branch 25 taken 7 times.
✓ Branch 26 taken 4 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 2 times.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 58 taken 53 times.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✓ Branch 61 taken 55 times.
✓ Branch 62 taken 8 times.
✓ Branch 63 taken 46 times.
✓ Branch 64 taken 8 times.
✓ Branch 65 taken 50 times.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✓ Branch 70 taken 2 times.
✗ Branch 71 not taken.
✓ Branch 72 taken 4 times.
✗ Branch 73 not taken.
✓ Branch 74 taken 4 times.
1248 return m_pixel_format;
659 }
660
661 //------------------------------------------------------------------------------
662
663 51 inline const image::spacing_t& image::spacing() const
664 {
665
19/44
✓ Branch 0 taken 25 times.
✓ Branch 1 taken 903 times.
✓ Branch 2 taken 43 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 836 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 16 times.
✓ Branch 7 taken 42 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 8 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 8 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 3 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 9 times.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 10 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
2600 return m_spacing;
666 }
667
668 //------------------------------------------------------------------------------
669
670 2599 inline void image::set_spacing(const spacing_t& _spacing)
671 {
672
10/18
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 60 times.
✓ Branch 2 taken 154 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 7 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 4 times.
✗ Branch 23 not taken.
2599 m_spacing = _spacing;
673 }
674
675 //------------------------------------------------------------------------------
676
677 70 inline const image::origin_t& image::origin() const
678 {
679
18/33
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 901 times.
✓ Branch 2 taken 32 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 808 times.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 18 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 17 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 17 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 25 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 25 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 10 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 15 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 10 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.
2259 return m_origin;
680 }
681
682 //------------------------------------------------------------------------------
683
684 2605 inline void image::set_origin(const origin_t& _origin)
685 {
686 2605 m_origin = _origin;
687 2434 }
688
689 //------------------------------------------------------------------------------
690
691 52 inline const image::orientation_t& image::orientation() const
692 {
693
12/23
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1585 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 11 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 10 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 15 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 23 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 23 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 8 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 6 times.
✗ Branch 32 not taken.
1843 return m_orientation;
694 }
695
696 //------------------------------------------------------------------------------
697
698 2464 inline void image::set_orientation(const orientation_t& _orientation)
699 {
700 2464 m_orientation = _orientation;
701 2233 }
702
703 //------------------------------------------------------------------------------
704
705 79 inline const image::size_t& image::size() const
706 {
707
43/80
✓ Branch 0 taken 500 times.
✓ Branch 1 taken 891 times.
✓ Branch 2 taken 3384 times.
✓ Branch 3 taken 51 times.
✓ Branch 4 taken 1290 times.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ Branch 8 taken 1 times.
✓ Branch 9 taken 1 times.
✓ Branch 10 taken 1 times.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 7 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 7 times.
✓ Branch 17 taken 2 times.
✓ Branch 19 taken 4 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 7 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 4 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 4 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 4 times.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 4 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 4 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 4 times.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 4 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 6 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 3 times.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✓ Branch 52 taken 3 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 3 times.
✓ Branch 56 taken 53 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 3 times.
✓ Branch 59 taken 55 times.
✗ Branch 60 not taken.
✓ Branch 61 taken 33 times.
✗ Branch 62 not taken.
✓ Branch 63 taken 16 times.
✓ Branch 64 taken 45 times.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✓ Branch 67 taken 3 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✓ Branch 70 taken 5 times.
✓ Branch 71 taken 248 times.
✓ Branch 72 taken 5 times.
✓ Branch 73 taken 9 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 8 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 9 times.
✗ Branch 89 not taken.
8906 return m_size;
708 }
709
710 //------------------------------------------------------------------------------
711
712 template<typename T>
713
42/200
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✓ Branch 121 taken 1 times.
✗ Branch 122 not taken.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✓ Branch 148 taken 1 times.
✗ Branch 149 not taken.
✓ Branch 151 taken 1 times.
✗ Branch 152 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 157 not taken.
✗ Branch 158 not taken.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✓ Branch 175 taken 1 times.
✗ Branch 176 not taken.
✓ Branch 178 taken 1 times.
✗ Branch 179 not taken.
✓ Branch 181 taken 1 times.
✗ Branch 182 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✓ Branch 199 taken 1 times.
✗ Branch 200 not taken.
✓ Branch 202 taken 1 times.
✗ Branch 203 not taken.
✓ Branch 205 taken 1 times.
✗ Branch 206 not taken.
✓ Branch 208 taken 1 times.
✗ Branch 209 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✓ Branch 220 taken 1 times.
✗ Branch 221 not taken.
✓ Branch 223 taken 1 times.
✗ Branch 224 not taken.
✓ Branch 226 taken 1 times.
✗ Branch 227 not taken.
✓ Branch 229 taken 1 times.
✗ Branch 230 not taken.
✓ Branch 232 taken 1 times.
✗ Branch 233 not taken.
✗ Branch 235 not taken.
✗ Branch 236 not taken.
✓ Branch 238 taken 1 times.
✗ Branch 239 not taken.
✓ Branch 241 taken 1 times.
✗ Branch 242 not taken.
✓ Branch 244 taken 1 times.
✗ Branch 245 not taken.
✓ Branch 247 taken 1 times.
✗ Branch 248 not taken.
✓ Branch 250 taken 1 times.
✗ Branch 251 not taken.
✓ Branch 253 taken 1 times.
✗ Branch 254 not taken.
✓ Branch 256 taken 1 times.
✗ Branch 257 not taken.
✓ Branch 259 taken 1 times.
✗ Branch 260 not taken.
✓ Branch 262 taken 1 times.
✗ Branch 263 not taken.
✓ Branch 265 taken 1 times.
✗ Branch 266 not taken.
✓ Branch 268 taken 1 times.
✗ Branch 269 not taken.
✓ Branch 271 taken 1 times.
✗ Branch 272 not taken.
✓ Branch 274 taken 1 times.
✗ Branch 275 not taken.
✓ Branch 277 taken 1 times.
✗ Branch 278 not taken.
✓ Branch 280 taken 1 times.
✗ Branch 281 not taken.
✓ Branch 283 taken 1 times.
✗ Branch 284 not taken.
✓ Branch 286 taken 1 times.
✗ Branch 287 not taken.
✓ Branch 289 taken 1 times.
✗ Branch 290 not taken.
✓ Branch 292 taken 1 times.
✗ Branch 293 not taken.
✓ Branch 295 taken 1 times.
✗ Branch 296 not taken.
✓ Branch 298 taken 1 times.
✗ Branch 299 not taken.
1699 inline image::iterator<T> image::begin()
714 {
715
389/1632
✓ Branch 1 taken 565 times.
✓ Branch 2 taken 28 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 565 times.
✓ Branch 5 taken 25 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 11 times.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 1 times.
✓ Branch 10 taken 11 times.
✓ Branch 11 taken 20 times.
✓ Branch 12 taken 1 times.
✓ Branch 13 taken 11 times.
✓ Branch 14 taken 20 times.
✓ Branch 15 taken 1 times.
✓ Branch 16 taken 11 times.
✓ Branch 17 taken 29 times.
✓ Branch 18 taken 1 times.
✓ Branch 19 taken 11 times.
✓ Branch 20 taken 29 times.
✓ Branch 21 taken 1 times.
✓ Branch 22 taken 11 times.
✓ Branch 23 taken 16 times.
✓ Branch 24 taken 1 times.
✓ Branch 25 taken 11 times.
✓ Branch 26 taken 16 times.
✓ Branch 27 taken 1 times.
✓ Branch 28 taken 11 times.
✓ Branch 29 taken 40 times.
✓ Branch 30 taken 1 times.
✓ Branch 31 taken 11 times.
✓ Branch 32 taken 40 times.
✓ Branch 33 taken 1 times.
✓ Branch 34 taken 11 times.
✓ Branch 35 taken 63 times.
✓ Branch 36 taken 1 times.
✓ Branch 37 taken 11 times.
✓ Branch 38 taken 72 times.
✓ Branch 39 taken 1 times.
✓ Branch 40 taken 11 times.
✓ Branch 41 taken 46 times.
✓ Branch 42 taken 1 times.
✓ Branch 43 taken 3 times.
✓ Branch 44 taken 36 times.
✓ Branch 45 taken 1 times.
✓ Branch 46 taken 3 times.
✓ Branch 47 taken 15 times.
✓ Branch 48 taken 1 times.
✓ Branch 49 taken 3 times.
✓ Branch 50 taken 15 times.
✓ Branch 51 taken 1 times.
✓ Branch 52 taken 3 times.
✓ Branch 53 taken 39 times.
✓ Branch 54 taken 1 times.
✓ Branch 55 taken 3 times.
✓ Branch 56 taken 39 times.
✓ Branch 57 taken 1 times.
✓ Branch 58 taken 3 times.
✓ Branch 59 taken 63 times.
✓ Branch 60 taken 1 times.
✗ Branch 61 not taken.
✓ Branch 62 taken 63 times.
✓ Branch 63 taken 1 times.
✗ Branch 64 not taken.
✓ Branch 65 taken 72 times.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 68 taken 72 times.
✓ Branch 69 taken 1 times.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✓ Branch 72 taken 1 times.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✓ Branch 75 taken 1 times.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✓ Branch 78 taken 1 times.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✓ Branch 81 taken 1 times.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✓ Branch 84 taken 1 times.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✓ Branch 87 taken 1 times.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✓ Branch 90 taken 1 times.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✓ Branch 93 taken 1 times.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✓ Branch 96 taken 1 times.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
✓ Branch 103 taken 1 times.
✗ Branch 104 not taken.
✓ 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 not taken.
✗ Branch 179 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✗ Branch 229 not taken.
✗ Branch 230 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 235 not taken.
✗ Branch 236 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 241 not taken.
✗ Branch 242 not taken.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✗ Branch 253 not taken.
✗ Branch 254 not taken.
✗ Branch 256 not taken.
✗ Branch 257 not taken.
✗ Branch 259 not taken.
✗ Branch 260 not taken.
✗ Branch 262 not taken.
✗ Branch 263 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 271 not taken.
✗ Branch 272 not taken.
✗ Branch 274 not taken.
✗ Branch 275 not taken.
✗ Branch 277 not taken.
✗ Branch 278 not taken.
✗ Branch 280 not taken.
✗ Branch 281 not taken.
✗ Branch 283 not taken.
✗ Branch 284 not taken.
✗ Branch 286 not taken.
✗ Branch 287 not taken.
✗ Branch 289 not taken.
✗ Branch 290 not taken.
✗ Branch 292 not taken.
✗ Branch 293 not taken.
✗ Branch 295 not taken.
✗ Branch 296 not taken.
✗ Branch 298 not taken.
✗ Branch 299 not taken.
✗ Branch 301 not taken.
✗ Branch 302 not taken.
✗ Branch 304 not taken.
✗ Branch 305 not taken.
✗ Branch 307 not taken.
✗ Branch 308 not taken.
✗ Branch 310 not taken.
✗ Branch 311 not taken.
✗ Branch 313 not taken.
✗ Branch 314 not taken.
✗ Branch 316 not taken.
✗ Branch 317 not taken.
✗ Branch 319 not taken.
✗ Branch 320 not taken.
✗ Branch 322 not taken.
✗ Branch 323 not taken.
✗ Branch 325 not taken.
✗ Branch 326 not taken.
✗ Branch 328 not taken.
✗ Branch 329 not taken.
✗ Branch 331 not taken.
✗ Branch 332 not taken.
✗ Branch 334 not taken.
✗ Branch 335 not taken.
✗ Branch 337 not taken.
✗ Branch 338 not taken.
✗ Branch 340 not taken.
✗ Branch 341 not taken.
✗ Branch 343 not taken.
✗ Branch 344 not taken.
✗ Branch 346 not taken.
✗ Branch 347 not taken.
✗ Branch 349 not taken.
✗ Branch 350 not taken.
✗ Branch 352 not taken.
✗ Branch 353 not taken.
✗ Branch 355 not taken.
✗ Branch 356 not taken.
✗ Branch 358 not taken.
✗ Branch 359 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 364 not taken.
✗ Branch 365 not taken.
✗ Branch 367 not taken.
✗ Branch 368 not taken.
✗ Branch 370 not taken.
✗ Branch 371 not taken.
✗ Branch 373 not taken.
✗ Branch 374 not taken.
✗ Branch 376 not taken.
✗ Branch 377 not taken.
✗ Branch 379 not taken.
✗ Branch 380 not taken.
✗ Branch 382 not taken.
✗ Branch 383 not taken.
✗ Branch 385 not taken.
✗ Branch 386 not taken.
✗ Branch 388 not taken.
✗ Branch 389 not taken.
✗ Branch 391 not taken.
✗ Branch 392 not taken.
✗ Branch 394 not taken.
✗ Branch 395 not taken.
✗ Branch 397 not taken.
✗ Branch 398 not taken.
✗ Branch 400 not taken.
✗ Branch 401 not taken.
✗ Branch 403 not taken.
✗ Branch 404 not taken.
✗ Branch 406 not taken.
✗ Branch 407 not taken.
✗ Branch 409 not taken.
✗ Branch 410 not taken.
✗ Branch 412 not taken.
✗ Branch 413 not taken.
✗ Branch 415 not taken.
✗ Branch 416 not taken.
✗ Branch 418 not taken.
✗ Branch 419 not taken.
✗ Branch 421 not taken.
✗ Branch 422 not taken.
✗ Branch 424 not taken.
✗ Branch 425 not taken.
✗ Branch 427 not taken.
✗ Branch 428 not taken.
✗ Branch 430 not taken.
✗ Branch 431 not taken.
✗ Branch 433 not taken.
✗ Branch 434 not taken.
✗ Branch 436 not taken.
✗ Branch 437 not taken.
✗ Branch 439 not taken.
✗ Branch 440 not taken.
✗ Branch 442 not taken.
✗ Branch 443 not taken.
✗ Branch 445 not taken.
✗ Branch 446 not taken.
✗ Branch 448 not taken.
✗ Branch 449 not taken.
✗ Branch 451 not taken.
✗ Branch 452 not taken.
✗ Branch 454 not taken.
✗ Branch 455 not taken.
✗ Branch 457 not taken.
✗ Branch 458 not taken.
✗ Branch 460 not taken.
✗ Branch 461 not taken.
✗ Branch 463 not taken.
✗ Branch 464 not taken.
✗ Branch 466 not taken.
✗ Branch 467 not taken.
✗ Branch 469 not taken.
✗ Branch 470 not taken.
✗ Branch 472 not taken.
✗ Branch 473 not taken.
✗ Branch 475 not taken.
✗ Branch 476 not taken.
✗ Branch 478 not taken.
✗ Branch 479 not taken.
✗ Branch 481 not taken.
✗ Branch 482 not taken.
✗ Branch 484 not taken.
✗ Branch 485 not taken.
✗ Branch 487 not taken.
✗ Branch 488 not taken.
✗ Branch 490 not taken.
✗ Branch 491 not taken.
✗ Branch 493 not taken.
✗ Branch 494 not taken.
✗ Branch 496 not taken.
✗ Branch 497 not taken.
✗ Branch 499 not taken.
✗ Branch 500 not taken.
✗ Branch 502 not taken.
✗ Branch 503 not taken.
✗ Branch 505 not taken.
✗ Branch 506 not taken.
✗ Branch 508 not taken.
✗ Branch 509 not taken.
✗ Branch 511 not taken.
✗ Branch 512 not taken.
✗ Branch 514 not taken.
✗ Branch 515 not taken.
✗ Branch 517 not taken.
✗ Branch 518 not taken.
✗ Branch 520 not taken.
✗ Branch 521 not taken.
✗ Branch 523 not taken.
✗ Branch 524 not taken.
✗ Branch 526 not taken.
✗ Branch 527 not taken.
✗ Branch 529 not taken.
✗ Branch 530 not taken.
✗ Branch 532 not taken.
✗ Branch 533 not taken.
✗ Branch 535 not taken.
✗ Branch 536 not taken.
✗ Branch 538 not taken.
✗ Branch 539 not taken.
✗ Branch 541 not taken.
✗ Branch 542 not taken.
✗ Branch 544 not taken.
✗ Branch 545 not taken.
✗ Branch 547 not taken.
✗ Branch 548 not taken.
✗ Branch 550 not taken.
✗ Branch 551 not taken.
✗ Branch 553 not taken.
✗ Branch 554 not taken.
✗ Branch 556 not taken.
✗ Branch 557 not taken.
✗ Branch 559 not taken.
✗ Branch 560 not taken.
✗ Branch 562 not taken.
✗ Branch 563 not taken.
✗ Branch 565 not taken.
✗ Branch 566 not taken.
✗ Branch 568 not taken.
✗ Branch 569 not taken.
✗ Branch 571 not taken.
✗ Branch 572 not taken.
✗ Branch 574 not taken.
✗ Branch 575 not taken.
✗ Branch 577 not taken.
✗ Branch 578 not taken.
✗ Branch 580 not taken.
✗ Branch 581 not taken.
✗ Branch 583 not taken.
✗ Branch 584 not taken.
✗ Branch 586 not taken.
✗ Branch 587 not taken.
✗ Branch 589 not taken.
✗ Branch 590 not taken.
✗ Branch 592 not taken.
✗ Branch 593 not taken.
✗ Branch 595 not taken.
✗ Branch 596 not taken.
✗ Branch 598 not taken.
✗ Branch 599 not taken.
✗ Branch 601 not taken.
✗ Branch 602 not taken.
✗ Branch 604 not taken.
✗ Branch 605 not taken.
✗ Branch 607 not taken.
✗ Branch 608 not taken.
✗ Branch 610 not taken.
✗ Branch 611 not taken.
✗ Branch 613 not taken.
✗ Branch 614 not taken.
✗ Branch 616 not taken.
✗ Branch 617 not taken.
✗ Branch 619 not taken.
✗ Branch 620 not taken.
✗ Branch 622 not taken.
✗ Branch 623 not taken.
✗ Branch 625 not taken.
✗ Branch 626 not taken.
✗ Branch 628 not taken.
✗ Branch 629 not taken.
✗ Branch 631 not taken.
✗ Branch 632 not taken.
✗ Branch 634 not taken.
✗ Branch 635 not taken.
✗ Branch 637 not taken.
✗ Branch 638 not taken.
✗ Branch 640 not taken.
✗ Branch 641 not taken.
✗ Branch 643 not taken.
✗ Branch 644 not taken.
✗ Branch 646 not taken.
✗ Branch 647 not taken.
✗ Branch 649 not taken.
✗ Branch 650 not taken.
✗ Branch 652 not taken.
✗ Branch 653 not taken.
✗ Branch 655 not taken.
✗ Branch 656 not taken.
✗ Branch 658 not taken.
✗ Branch 659 not taken.
✗ Branch 661 not taken.
✗ Branch 662 not taken.
✗ Branch 664 not taken.
✗ Branch 665 not taken.
✗ Branch 667 not taken.
✗ Branch 668 not taken.
✗ Branch 670 not taken.
✗ Branch 671 not taken.
✗ Branch 673 not taken.
✗ Branch 674 not taken.
✗ Branch 676 not taken.
✗ Branch 677 not taken.
✗ Branch 679 not taken.
✗ Branch 680 not taken.
✗ Branch 682 not taken.
✗ Branch 683 not taken.
✗ Branch 685 not taken.
✗ Branch 686 not taken.
✗ Branch 688 not taken.
✗ Branch 689 not taken.
✗ Branch 691 not taken.
✗ Branch 692 not taken.
✗ Branch 694 not taken.
✗ Branch 695 not taken.
✗ Branch 697 not taken.
✗ Branch 698 not taken.
✗ Branch 700 not taken.
✗ Branch 701 not taken.
✗ Branch 703 not taken.
✗ Branch 704 not taken.
✗ Branch 706 not taken.
✗ Branch 707 not taken.
✗ Branch 709 not taken.
✗ Branch 710 not taken.
✗ Branch 712 not taken.
✗ Branch 713 not taken.
✗ Branch 715 not taken.
✗ Branch 716 not taken.
✗ Branch 718 not taken.
✗ Branch 719 not taken.
✗ Branch 721 not taken.
✗ Branch 722 not taken.
✗ Branch 724 not taken.
✗ Branch 725 not taken.
✗ Branch 727 not taken.
✗ Branch 728 not taken.
✗ Branch 730 not taken.
✗ Branch 731 not taken.
✗ Branch 733 not taken.
✗ Branch 734 not taken.
✗ Branch 736 not taken.
✗ Branch 737 not taken.
✗ Branch 739 not taken.
✗ Branch 740 not taken.
✗ Branch 742 not taken.
✗ Branch 743 not taken.
✗ Branch 745 not taken.
✗ Branch 746 not taken.
✗ Branch 748 not taken.
✗ Branch 749 not taken.
✗ Branch 751 not taken.
✗ Branch 752 not taken.
✗ Branch 754 not taken.
✗ Branch 755 not taken.
✗ Branch 757 not taken.
✗ Branch 758 not taken.
✗ Branch 760 not taken.
✗ Branch 761 not taken.
✗ Branch 763 not taken.
✗ Branch 764 not taken.
✗ Branch 766 not taken.
✗ Branch 767 not taken.
✗ Branch 769 not taken.
✗ Branch 770 not taken.
✗ Branch 772 not taken.
✗ Branch 773 not taken.
✗ Branch 775 not taken.
✗ Branch 776 not taken.
✗ Branch 778 not taken.
✗ Branch 779 not taken.
✗ Branch 781 not taken.
✗ Branch 782 not taken.
✗ Branch 784 not taken.
✗ Branch 785 not taken.
✗ Branch 787 not taken.
✗ Branch 788 not taken.
✗ Branch 790 not taken.
✗ Branch 791 not taken.
✗ Branch 793 not taken.
✗ Branch 794 not taken.
✗ Branch 796 not taken.
✗ Branch 797 not taken.
✗ Branch 799 not taken.
✗ Branch 800 not taken.
✗ Branch 802 not taken.
✗ Branch 803 not taken.
✗ Branch 805 not taken.
✗ Branch 806 not taken.
✗ Branch 808 not taken.
✗ Branch 809 not taken.
✗ Branch 811 not taken.
✗ Branch 812 not taken.
✗ Branch 814 not taken.
✗ Branch 815 not taken.
✗ Branch 817 not taken.
✗ Branch 818 not taken.
✗ Branch 820 not taken.
✗ Branch 821 not taken.
✗ Branch 823 not taken.
✗ Branch 824 not taken.
✗ Branch 826 not taken.
✗ Branch 827 not taken.
✗ Branch 829 not taken.
✗ Branch 830 not taken.
✗ Branch 832 not taken.
✗ Branch 833 not taken.
✗ Branch 835 not taken.
✗ Branch 836 not taken.
✗ Branch 838 not taken.
✗ Branch 839 not taken.
✗ Branch 841 not taken.
✗ Branch 842 not taken.
✗ Branch 844 not taken.
✗ Branch 845 not taken.
✗ Branch 847 not taken.
✗ Branch 848 not taken.
✗ Branch 850 not taken.
✗ Branch 851 not taken.
✗ Branch 853 not taken.
✗ Branch 854 not taken.
✗ Branch 856 not taken.
✗ Branch 857 not taken.
✗ Branch 859 not taken.
✗ Branch 860 not taken.
✗ Branch 862 not taken.
✗ Branch 863 not taken.
✗ Branch 865 not taken.
✗ Branch 866 not taken.
✗ Branch 868 not taken.
✗ Branch 869 not taken.
✗ Branch 871 not taken.
✗ Branch 872 not taken.
✗ Branch 874 not taken.
✗ Branch 875 not taken.
✗ Branch 877 not taken.
✗ Branch 878 not taken.
✗ Branch 880 not taken.
✗ Branch 881 not taken.
✗ Branch 883 not taken.
✗ Branch 884 not taken.
✗ Branch 886 not taken.
✗ Branch 887 not taken.
✗ Branch 889 not taken.
✗ Branch 890 not taken.
✗ Branch 892 not taken.
✗ Branch 893 not taken.
✗ Branch 895 not taken.
✗ Branch 896 not taken.
✗ Branch 898 not taken.
✗ Branch 899 not taken.
✗ Branch 901 not taken.
✗ Branch 902 not taken.
✗ Branch 904 not taken.
✗ Branch 905 not taken.
✗ Branch 907 not taken.
✗ Branch 908 not taken.
✗ Branch 910 not taken.
✗ Branch 911 not taken.
✓ Branch 913 taken 1 times.
✗ Branch 914 not taken.
✓ Branch 916 taken 1 times.
✗ Branch 917 not taken.
✓ Branch 919 taken 1 times.
✗ Branch 920 not taken.
✓ Branch 922 taken 1 times.
✗ Branch 923 not taken.
✗ Branch 925 not taken.
✗ Branch 926 not taken.
✗ Branch 928 not taken.
✗ Branch 929 not taken.
✗ Branch 931 not taken.
✗ Branch 932 not taken.
✗ Branch 934 not taken.
✗ Branch 935 not taken.
✗ Branch 937 not taken.
✗ Branch 938 not taken.
✗ Branch 940 not taken.
✗ Branch 941 not taken.
✗ Branch 943 not taken.
✗ Branch 944 not taken.
✗ Branch 946 not taken.
✗ Branch 947 not taken.
✗ Branch 949 not taken.
✗ Branch 950 not taken.
✗ Branch 952 not taken.
✗ Branch 953 not taken.
✗ Branch 955 not taken.
✗ Branch 956 not taken.
✗ Branch 958 not taken.
✗ Branch 959 not taken.
✗ Branch 961 not taken.
✗ Branch 962 not taken.
✗ Branch 964 not taken.
✗ Branch 965 not taken.
✗ Branch 967 not taken.
✗ Branch 968 not taken.
✗ Branch 970 not taken.
✗ Branch 971 not taken.
✗ Branch 973 not taken.
✗ Branch 974 not taken.
✗ Branch 976 not taken.
✗ Branch 977 not taken.
✗ Branch 979 not taken.
✗ Branch 980 not taken.
✗ Branch 982 not taken.
✗ Branch 983 not taken.
✗ Branch 985 not taken.
✗ Branch 986 not taken.
✗ Branch 988 not taken.
✗ Branch 989 not taken.
✗ Branch 991 not taken.
✗ Branch 992 not taken.
✗ Branch 994 not taken.
✗ Branch 995 not taken.
✗ Branch 997 not taken.
✗ Branch 998 not taken.
✗ Branch 1000 not taken.
✗ Branch 1001 not taken.
✗ Branch 1003 not taken.
✗ Branch 1004 not taken.
✗ Branch 1006 not taken.
✗ Branch 1007 not taken.
✗ Branch 1009 not taken.
✗ Branch 1010 not taken.
✗ Branch 1012 not taken.
✗ Branch 1013 not taken.
✗ Branch 1015 not taken.
✗ Branch 1016 not taken.
✗ Branch 1018 not taken.
✗ Branch 1019 not taken.
✓ Branch 1021 taken 1 times.
✗ Branch 1022 not taken.
✓ Branch 1024 taken 1 times.
✗ Branch 1025 not taken.
✓ Branch 1027 taken 1 times.
✗ Branch 1028 not taken.
✓ Branch 1030 taken 1 times.
✗ Branch 1031 not taken.
✗ Branch 1033 not taken.
✗ Branch 1034 not taken.
✗ Branch 1036 not taken.
✗ Branch 1037 not taken.
✗ Branch 1039 not taken.
✗ Branch 1040 not taken.
✗ Branch 1042 not taken.
✗ Branch 1043 not taken.
✗ Branch 1045 not taken.
✗ Branch 1046 not taken.
✗ Branch 1048 not taken.
✗ Branch 1049 not taken.
✗ Branch 1051 not taken.
✗ Branch 1052 not taken.
✗ Branch 1054 not taken.
✗ Branch 1055 not taken.
✗ Branch 1057 not taken.
✗ Branch 1058 not taken.
✗ Branch 1060 not taken.
✗ Branch 1061 not taken.
✗ Branch 1063 not taken.
✗ Branch 1064 not taken.
✗ Branch 1066 not taken.
✗ Branch 1067 not taken.
✗ Branch 1069 not taken.
✗ Branch 1070 not taken.
✗ Branch 1072 not taken.
✗ Branch 1073 not taken.
✗ Branch 1075 not taken.
✗ Branch 1076 not taken.
✗ Branch 1078 not taken.
✗ Branch 1079 not taken.
✗ Branch 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 taken 1 times.
✗ Branch 1131 not taken.
✓ Branch 1133 taken 1 times.
✗ Branch 1134 not taken.
✓ Branch 1136 taken 1 times.
✗ Branch 1137 not taken.
✓ Branch 1139 taken 1 times.
✗ Branch 1140 not taken.
✓ Branch 1142 taken 1 times.
✗ Branch 1143 not taken.
✓ Branch 1145 taken 1 times.
✗ Branch 1146 not taken.
✓ Branch 1148 taken 1 times.
✗ Branch 1149 not taken.
✓ Branch 1151 taken 1 times.
✗ Branch 1152 not taken.
✗ Branch 1154 not taken.
✗ Branch 1155 not taken.
✗ Branch 1157 not taken.
✗ Branch 1158 not taken.
✗ Branch 1160 not taken.
✗ Branch 1161 not taken.
✗ Branch 1163 not taken.
✗ Branch 1164 not taken.
✗ Branch 1166 not taken.
✗ Branch 1167 not taken.
✗ Branch 1169 not taken.
✗ Branch 1170 not taken.
✗ Branch 1172 not taken.
✗ Branch 1173 not taken.
✗ Branch 1175 not taken.
✗ Branch 1176 not taken.
✗ Branch 1178 not taken.
✗ Branch 1179 not taken.
✗ Branch 1181 not taken.
✗ Branch 1182 not taken.
✗ Branch 1184 not taken.
✗ Branch 1185 not taken.
✗ Branch 1187 not taken.
✗ Branch 1188 not taken.
✗ Branch 1190 not taken.
✗ Branch 1191 not taken.
✗ Branch 1193 not taken.
✗ Branch 1194 not taken.
✗ Branch 1196 not taken.
✗ Branch 1197 not taken.
✗ Branch 1199 not taken.
✗ Branch 1200 not taken.
✗ Branch 1202 not taken.
✗ Branch 1203 not taken.
✗ Branch 1205 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 taken 1 times.
✗ Branch 1251 not taken.
✓ Branch 1253 taken 1 times.
✗ Branch 1254 not taken.
✓ Branch 1256 taken 1 times.
✗ Branch 1257 not taken.
✓ Branch 1259 taken 1 times.
✗ Branch 1260 not taken.
✓ Branch 1262 taken 1 times.
✗ Branch 1263 not taken.
✓ Branch 1265 taken 1 times.
✗ Branch 1266 not taken.
✓ Branch 1268 taken 1 times.
✗ Branch 1269 not taken.
✓ Branch 1271 taken 1 times.
✗ 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 1323 not taken.
✗ Branch 1324 not taken.
✗ Branch 1326 not taken.
✗ Branch 1327 not taken.
✗ Branch 1329 not taken.
✗ Branch 1330 not taken.
✗ Branch 1332 not taken.
✗ Branch 1333 not taken.
✗ Branch 1335 not taken.
✗ Branch 1336 not taken.
✗ Branch 1338 not taken.
✗ Branch 1339 not taken.
✗ Branch 1341 not taken.
✗ Branch 1342 not taken.
✗ Branch 1344 not taken.
✗ Branch 1345 not taken.
✗ Branch 1347 not taken.
✗ Branch 1348 not taken.
✗ Branch 1350 not taken.
✗ Branch 1351 not taken.
✗ Branch 1353 not taken.
✗ Branch 1354 not taken.
✗ Branch 1356 not taken.
✗ Branch 1357 not taken.
✓ Branch 1359 taken 1 times.
✗ Branch 1360 not taken.
✓ Branch 1362 taken 1 times.
✗ Branch 1363 not taken.
✓ Branch 1365 taken 1 times.
✗ Branch 1366 not taken.
✓ Branch 1368 taken 1 times.
✗ Branch 1369 not taken.
✓ Branch 1371 taken 1 times.
✗ Branch 1372 not taken.
✓ Branch 1374 taken 1 times.
✗ Branch 1375 not taken.
✓ Branch 1377 taken 1 times.
✗ Branch 1378 not taken.
✓ Branch 1380 taken 1 times.
✗ Branch 1381 not taken.
✓ Branch 1383 taken 1 times.
✗ Branch 1384 not taken.
✓ Branch 1386 taken 1 times.
✗ Branch 1387 not taken.
✓ Branch 1389 taken 1 times.
✗ Branch 1390 not taken.
✓ Branch 1392 taken 1 times.
✗ Branch 1393 not taken.
✗ Branch 1395 not taken.
✗ Branch 1396 not taken.
✗ Branch 1398 not taken.
✗ Branch 1399 not taken.
✗ Branch 1401 not taken.
✗ Branch 1402 not taken.
✗ Branch 1404 not taken.
✗ Branch 1405 not taken.
✗ Branch 1407 not taken.
✗ Branch 1408 not taken.
✗ Branch 1410 not taken.
✗ Branch 1411 not taken.
✗ Branch 1413 not taken.
✗ Branch 1414 not taken.
✗ Branch 1416 not taken.
✗ Branch 1417 not taken.
✗ Branch 1419 not taken.
✗ Branch 1420 not taken.
✗ Branch 1422 not taken.
✗ Branch 1423 not taken.
✗ Branch 1425 not taken.
✗ Branch 1426 not taken.
✗ Branch 1428 not taken.
✗ Branch 1429 not taken.
✗ Branch 1431 not taken.
✗ Branch 1432 not taken.
✗ Branch 1434 not taken.
✗ Branch 1435 not taken.
✗ Branch 1437 not taken.
✗ Branch 1438 not taken.
✗ Branch 1440 not taken.
✗ Branch 1441 not taken.
✗ Branch 1443 not taken.
✗ Branch 1444 not taken.
✗ Branch 1446 not taken.
✗ Branch 1447 not taken.
✗ Branch 1449 not taken.
✗ Branch 1450 not taken.
✗ Branch 1452 not taken.
✗ Branch 1453 not taken.
✗ Branch 1455 not taken.
✗ Branch 1456 not taken.
✗ Branch 1458 not taken.
✗ Branch 1459 not taken.
✗ Branch 1461 not taken.
✗ Branch 1462 not taken.
✗ Branch 1464 not taken.
✗ Branch 1465 not taken.
✓ Branch 1467 taken 1 times.
✗ Branch 1468 not taken.
✓ Branch 1470 taken 1 times.
✗ Branch 1471 not taken.
✓ Branch 1473 taken 1 times.
✗ Branch 1474 not taken.
✓ Branch 1476 taken 1 times.
✗ Branch 1477 not taken.
✓ Branch 1479 taken 1 times.
✗ Branch 1480 not taken.
✓ Branch 1482 taken 1 times.
✗ Branch 1483 not taken.
✓ Branch 1485 taken 1 times.
✗ Branch 1486 not taken.
✓ Branch 1488 taken 1 times.
✗ Branch 1489 not taken.
✓ Branch 1491 taken 1 times.
✗ Branch 1492 not taken.
✓ Branch 1494 taken 1 times.
✗ Branch 1495 not taken.
✓ Branch 1497 taken 1 times.
✗ Branch 1498 not taken.
✓ Branch 1500 taken 1 times.
✗ Branch 1501 not taken.
✗ Branch 1503 not taken.
✗ Branch 1504 not taken.
✗ Branch 1506 not taken.
✗ Branch 1507 not taken.
✗ Branch 1509 not taken.
✗ Branch 1510 not taken.
✗ Branch 1512 not taken.
✗ Branch 1513 not taken.
✗ Branch 1515 not taken.
✗ Branch 1516 not taken.
✗ Branch 1518 not taken.
✗ Branch 1519 not taken.
✗ Branch 1521 not taken.
✗ Branch 1522 not taken.
✗ Branch 1524 not taken.
✗ Branch 1525 not taken.
✗ Branch 1527 not taken.
✗ Branch 1528 not taken.
✗ Branch 1530 not taken.
✗ Branch 1531 not taken.
✗ Branch 1533 not taken.
✗ Branch 1534 not taken.
✗ Branch 1536 not taken.
✗ Branch 1537 not taken.
✗ Branch 1540 not taken.
✗ Branch 1541 not taken.
✗ Branch 1543 not taken.
✗ Branch 1544 not taken.
✗ Branch 1546 not taken.
✗ Branch 1547 not taken.
✗ Branch 1549 not taken.
✗ Branch 1550 not taken.
✗ Branch 1552 not taken.
✗ Branch 1553 not taken.
✗ Branch 1555 not taken.
✗ Branch 1556 not taken.
✗ Branch 1558 not taken.
✗ Branch 1559 not taken.
✗ Branch 1561 not taken.
✗ Branch 1562 not taken.
✓ Branch 1564 taken 1 times.
✗ Branch 1565 not taken.
✓ Branch 1567 taken 1 times.
✗ Branch 1568 not taken.
✓ Branch 1570 taken 1 times.
✗ Branch 1571 not taken.
✓ Branch 1573 taken 1 times.
✗ Branch 1574 not taken.
✓ Branch 1576 taken 1 times.
✗ Branch 1577 not taken.
✓ Branch 1579 taken 1 times.
✗ Branch 1580 not taken.
✓ Branch 1582 taken 1 times.
✗ Branch 1583 not taken.
✓ Branch 1585 taken 1 times.
✗ Branch 1586 not taken.
✓ Branch 1588 taken 1 times.
✗ Branch 1589 not taken.
✓ Branch 1591 taken 1 times.
✗ Branch 1592 not taken.
✓ Branch 1594 taken 1 times.
✗ Branch 1595 not taken.
✓ Branch 1597 taken 1 times.
✗ Branch 1598 not taken.
✓ Branch 1600 taken 1 times.
✗ Branch 1601 not taken.
✓ Branch 1603 taken 1 times.
✗ Branch 1604 not taken.
✓ Branch 1606 taken 1 times.
✗ Branch 1607 not taken.
✓ Branch 1609 taken 1 times.
✗ Branch 1610 not taken.
✗ Branch 1612 not taken.
✗ Branch 1613 not taken.
✗ Branch 1615 not taken.
✗ Branch 1616 not taken.
✗ Branch 1618 not taken.
✗ Branch 1619 not taken.
✗ Branch 1621 not taken.
✗ Branch 1622 not taken.
✗ Branch 1624 not taken.
✗ Branch 1625 not taken.
✗ Branch 1627 not taken.
✗ Branch 1628 not taken.
✗ Branch 1630 not taken.
✗ Branch 1631 not taken.
✗ Branch 1633 not taken.
✗ Branch 1634 not taken.
✗ Branch 1636 not taken.
✗ Branch 1637 not taken.
✗ Branch 1639 not taken.
✗ Branch 1640 not taken.
✗ Branch 1642 not taken.
✗ Branch 1643 not taken.
✗ Branch 1645 not taken.
✗ Branch 1646 not taken.
✗ Branch 1648 not taken.
✗ Branch 1649 not taken.
✗ Branch 1651 not taken.
✗ Branch 1652 not taken.
✗ Branch 1654 not taken.
✗ Branch 1655 not taken.
✗ Branch 1657 not taken.
✗ Branch 1658 not taken.
✓ Branch 1660 taken 1 times.
✗ Branch 1661 not taken.
✓ Branch 1663 taken 1 times.
✗ Branch 1664 not taken.
✓ Branch 1666 taken 1 times.
✗ Branch 1667 not taken.
✓ Branch 1669 taken 1 times.
✗ Branch 1670 not taken.
✓ Branch 1672 taken 1 times.
✗ Branch 1673 not taken.
✓ Branch 1675 taken 1 times.
✗ Branch 1676 not taken.
✓ Branch 1678 taken 1 times.
✗ Branch 1679 not taken.
✓ Branch 1681 taken 1 times.
✗ Branch 1682 not taken.
✓ Branch 1684 taken 1 times.
✗ Branch 1685 not taken.
✓ Branch 1687 taken 1 times.
✗ Branch 1688 not taken.
✓ Branch 1690 taken 1 times.
✗ Branch 1691 not taken.
✓ Branch 1693 taken 1 times.
✗ Branch 1694 not taken.
✓ Branch 1696 taken 1 times.
✗ Branch 1697 not taken.
✓ Branch 1699 taken 1 times.
✗ Branch 1700 not taken.
✓ Branch 1702 taken 1 times.
✗ Branch 1703 not taken.
✓ Branch 1705 taken 1 times.
✗ Branch 1706 not taken.
✗ Branch 1708 not taken.
✗ Branch 1709 not taken.
✗ Branch 1711 not taken.
✗ Branch 1712 not taken.
✗ Branch 1714 not taken.
✗ Branch 1715 not taken.
✗ Branch 1717 not taken.
✗ Branch 1718 not taken.
✗ Branch 1720 not taken.
✗ Branch 1721 not taken.
✗ Branch 1723 not taken.
✗ Branch 1724 not taken.
✗ Branch 1726 not taken.
✗ Branch 1727 not taken.
✗ Branch 1729 not taken.
✗ Branch 1730 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 taken 1 times.
✗ Branch 1746 not taken.
✓ Branch 1748 taken 1 times.
✗ Branch 1749 not taken.
✓ Branch 1751 taken 1 times.
✗ Branch 1752 not taken.
✓ Branch 1754 taken 1 times.
✗ Branch 1755 not taken.
✓ Branch 1757 taken 1 times.
✗ Branch 1758 not taken.
✓ Branch 1760 taken 1 times.
✗ Branch 1761 not taken.
✓ Branch 1763 taken 1 times.
✗ Branch 1764 not taken.
✓ Branch 1766 taken 1 times.
✗ Branch 1767 not taken.
✓ Branch 1769 taken 1 times.
✗ Branch 1770 not taken.
✓ Branch 1772 taken 1 times.
✗ 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 taken 1 times.
✗ Branch 1785 not taken.
✓ Branch 1787 taken 1 times.
✗ Branch 1788 not taken.
✓ Branch 1790 taken 1 times.
✗ Branch 1791 not taken.
✓ Branch 1793 taken 1 times.
✗ Branch 1794 not taken.
✓ Branch 1796 taken 1 times.
✗ Branch 1797 not taken.
✓ Branch 1799 taken 1 times.
✗ Branch 1800 not taken.
✓ Branch 1802 taken 1 times.
✗ 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 taken 1 times.
✗ Branch 1830 not taken.
✓ Branch 1832 taken 1 times.
✗ Branch 1833 not taken.
✓ Branch 1835 taken 1 times.
✗ Branch 1836 not taken.
✓ Branch 1838 taken 1 times.
✗ Branch 1839 not taken.
✓ Branch 1841 taken 1 times.
✗ Branch 1842 not taken.
✓ Branch 1844 taken 1 times.
✗ Branch 1845 not taken.
✓ Branch 1847 taken 1 times.
✗ Branch 1848 not taken.
✓ Branch 1850 taken 1 times.
✗ Branch 1851 not taken.
✓ Branch 1853 taken 1 times.
✗ Branch 1854 not taken.
✓ Branch 1856 taken 1 times.
✗ Branch 1857 not taken.
✓ Branch 1859 taken 1 times.
✗ Branch 1860 not taken.
✓ Branch 1862 taken 1 times.
✗ Branch 1863 not taken.
✓ Branch 1865 taken 1 times.
✗ Branch 1866 not taken.
✓ Branch 1868 taken 1 times.
✗ Branch 1869 not taken.
✓ Branch 1871 taken 1 times.
✗ Branch 1872 not taken.
✓ Branch 1874 taken 1 times.
✗ Branch 1875 not taken.
✓ Branch 1877 taken 1 times.
✗ Branch 1878 not taken.
✓ Branch 1880 taken 1 times.
✗ Branch 1881 not taken.
✓ Branch 1883 taken 1 times.
✗ Branch 1884 not taken.
✓ Branch 1886 taken 1 times.
✗ 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 1902 taken 1 times.
✗ Branch 1903 not taken.
✓ Branch 1905 taken 1 times.
✗ Branch 1906 not taken.
✓ Branch 1908 taken 1 times.
✗ Branch 1909 not taken.
✓ Branch 1911 taken 1 times.
✗ Branch 1912 not taken.
✓ Branch 1914 taken 1 times.
✗ Branch 1915 not taken.
✓ Branch 1917 taken 1 times.
✗ Branch 1918 not taken.
✓ Branch 1920 taken 1 times.
✗ Branch 1921 not taken.
✓ Branch 1923 taken 1 times.
✗ Branch 1924 not taken.
✓ Branch 1926 taken 1 times.
✗ Branch 1927 not taken.
✓ Branch 1929 taken 1 times.
✗ Branch 1930 not taken.
✓ Branch 1932 taken 1 times.
✗ Branch 1933 not taken.
✓ Branch 1935 taken 1 times.
✗ Branch 1936 not taken.
✓ Branch 1938 taken 1 times.
✗ Branch 1939 not taken.
✓ Branch 1941 taken 1 times.
✗ Branch 1942 not taken.
✓ Branch 1944 taken 1 times.
✗ Branch 1945 not taken.
✓ Branch 1947 taken 1 times.
✗ Branch 1948 not taken.
✓ Branch 1950 taken 1 times.
✗ Branch 1951 not taken.
✓ Branch 1953 taken 1 times.
✗ Branch 1954 not taken.
✓ Branch 1956 taken 1 times.
✗ Branch 1957 not taken.
✓ Branch 1959 taken 1 times.
✗ Branch 1960 not taken.
✓ Branch 1962 taken 1 times.
✗ Branch 1963 not taken.
✓ Branch 1965 taken 1 times.
✗ Branch 1966 not taken.
✓ Branch 1968 taken 1 times.
✗ Branch 1969 not taken.
✓ Branch 1971 taken 1 times.
✗ Branch 1972 not taken.
✓ Branch 1974 taken 1 times.
✗ Branch 1975 not taken.
✓ Branch 1977 taken 1 times.
✗ Branch 1978 not taken.
✓ Branch 1980 taken 1 times.
✗ Branch 1981 not taken.
✓ Branch 1983 taken 1 times.
✗ Branch 1984 not taken.
✓ Branch 1986 taken 1 times.
✗ Branch 1987 not taken.
✓ Branch 1989 taken 1 times.
✗ Branch 1990 not taken.
✓ Branch 1992 taken 1 times.
✗ Branch 1993 not taken.
✓ Branch 1995 taken 1 times.
✗ Branch 1996 not taken.
✓ Branch 1998 taken 1 times.
✗ Branch 1999 not taken.
✓ Branch 2001 taken 1 times.
✗ Branch 2002 not taken.
✓ Branch 2004 taken 1 times.
✗ Branch 2005 not taken.
✓ Branch 2007 taken 1 times.
✗ Branch 2008 not taken.
✓ Branch 2010 taken 1 times.
✗ Branch 2011 not taken.
✓ Branch 2013 taken 1 times.
✗ Branch 2014 not taken.
✓ Branch 2016 taken 1 times.
✗ Branch 2017 not taken.
✓ Branch 2019 taken 1 times.
✗ Branch 2020 not taken.
✓ Branch 2022 taken 1 times.
✗ Branch 2023 not taken.
✓ Branch 2025 taken 1 times.
✗ Branch 2026 not taken.
✓ Branch 2028 taken 1 times.
✗ Branch 2029 not taken.
✓ Branch 2031 taken 1 times.
✗ Branch 2032 not taken.
✓ Branch 2034 taken 1 times.
✗ Branch 2035 not taken.
✓ Branch 2037 taken 1 times.
✗ Branch 2038 not taken.
✓ Branch 2040 taken 1 times.
✗ Branch 2041 not taken.
✓ Branch 2043 taken 1 times.
✗ Branch 2044 not taken.
✓ Branch 2047 taken 1 times.
✗ Branch 2048 not taken.
✓ Branch 2050 taken 1 times.
✗ Branch 2051 not taken.
✓ Branch 2053 taken 1 times.
✗ Branch 2054 not taken.
✓ Branch 2056 taken 1 times.
✗ Branch 2057 not taken.
✓ Branch 2059 taken 1 times.
✗ Branch 2060 not taken.
✓ Branch 2062 taken 1 times.
✗ Branch 2063 not taken.
✓ Branch 2065 taken 1 times.
✗ Branch 2066 not taken.
✓ Branch 2068 taken 1 times.
✗ Branch 2069 not taken.
✓ Branch 2071 taken 1 times.
✗ Branch 2072 not taken.
✓ Branch 2074 taken 1 times.
✗ Branch 2075 not taken.
✓ Branch 2077 taken 1 times.
✗ Branch 2078 not taken.
✓ Branch 2080 taken 1 times.
✗ Branch 2081 not taken.
✓ Branch 2083 taken 1 times.
✗ Branch 2084 not taken.
✓ Branch 2086 taken 1 times.
✗ Branch 2087 not taken.
✓ Branch 2089 taken 1 times.
✗ Branch 2090 not taken.
✓ Branch 2092 taken 1 times.
✗ Branch 2093 not taken.
✓ Branch 2095 taken 1 times.
✗ Branch 2096 not taken.
✓ Branch 2098 taken 1 times.
✗ Branch 2099 not taken.
✓ Branch 2101 taken 1 times.
✗ Branch 2102 not taken.
✓ Branch 2104 taken 1 times.
✗ Branch 2105 not taken.
✓ Branch 2107 taken 1 times.
✗ Branch 2108 not taken.
✓ Branch 2110 taken 1 times.
✗ Branch 2111 not taken.
✓ Branch 2113 taken 1 times.
✗ Branch 2114 not taken.
✓ Branch 2116 taken 1 times.
✗ Branch 2117 not taken.
✓ Branch 2119 taken 1 times.
✗ Branch 2120 not taken.
✓ Branch 2122 taken 1 times.
✗ Branch 2123 not taken.
✓ Branch 2125 taken 1 times.
✗ Branch 2126 not taken.
✓ Branch 2128 taken 1 times.
✗ Branch 2129 not taken.
✓ Branch 2131 taken 1 times.
✗ Branch 2132 not taken.
✓ Branch 2134 taken 1 times.
✗ Branch 2135 not taken.
✓ Branch 2137 taken 1 times.
✗ Branch 2138 not taken.
✓ Branch 2140 taken 1 times.
✗ Branch 2141 not taken.
✓ Branch 2143 taken 1 times.
✗ Branch 2144 not taken.
✓ Branch 2146 taken 1 times.
✗ Branch 2147 not taken.
✓ Branch 2149 taken 1 times.
✗ Branch 2150 not taken.
✓ Branch 2152 taken 1 times.
✗ Branch 2153 not taken.
✓ Branch 2155 taken 1 times.
✗ Branch 2156 not taken.
✓ Branch 2158 taken 1 times.
✗ Branch 2159 not taken.
✓ Branch 2161 taken 1 times.
✗ Branch 2162 not taken.
✓ Branch 2164 taken 1 times.
✗ Branch 2165 not taken.
✓ Branch 2168 taken 1 times.
✗ Branch 2169 not taken.
✓ Branch 2171 taken 1 times.
✗ Branch 2172 not taken.
✓ Branch 2174 taken 1 times.
✗ Branch 2175 not taken.
✓ Branch 2177 taken 1 times.
✗ Branch 2178 not taken.
✓ Branch 2180 taken 1 times.
✗ Branch 2181 not taken.
✓ Branch 2183 taken 1 times.
✗ Branch 2184 not taken.
✓ Branch 2186 taken 1 times.
✗ Branch 2187 not taken.
✓ Branch 2189 taken 1 times.
✗ Branch 2190 not taken.
✓ Branch 2192 taken 1 times.
✗ Branch 2193 not taken.
✓ Branch 2195 taken 1 times.
✗ Branch 2196 not taken.
✓ Branch 2198 taken 1 times.
✗ Branch 2199 not taken.
✓ Branch 2201 taken 1 times.
✗ Branch 2202 not taken.
✓ Branch 2204 taken 1 times.
✗ Branch 2205 not taken.
✓ Branch 2207 taken 1 times.
✗ Branch 2208 not taken.
✓ Branch 2210 taken 1 times.
✗ Branch 2211 not taken.
✓ Branch 2213 taken 1 times.
✗ Branch 2214 not taken.
✓ Branch 2216 taken 1 times.
✗ Branch 2217 not taken.
✓ Branch 2219 taken 1 times.
✗ Branch 2220 not taken.
✓ Branch 2222 taken 1 times.
✗ Branch 2223 not taken.
✓ Branch 2225 taken 1 times.
✗ Branch 2226 not taken.
✓ Branch 2228 taken 1 times.
✗ Branch 2229 not taken.
✓ Branch 2231 taken 1 times.
✗ Branch 2232 not taken.
✓ Branch 2234 taken 1 times.
✗ Branch 2235 not taken.
✓ Branch 2237 taken 1 times.
✗ Branch 2238 not taken.
✓ Branch 2240 taken 1 times.
✗ Branch 2241 not taken.
✓ Branch 2243 taken 1 times.
✗ Branch 2244 not taken.
✓ Branch 2246 taken 1 times.
✗ Branch 2247 not taken.
✓ Branch 2249 taken 1 times.
✗ Branch 2250 not taken.
✓ Branch 2252 taken 1 times.
✗ Branch 2253 not taken.
✓ Branch 2255 taken 1 times.
✗ Branch 2256 not taken.
✓ Branch 2258 taken 1 times.
✗ Branch 2259 not taken.
✓ Branch 2261 taken 1 times.
✗ Branch 2262 not taken.
✓ Branch 2265 taken 1 times.
✗ Branch 2266 not taken.
✓ Branch 2268 taken 1 times.
✗ Branch 2269 not taken.
✓ Branch 2271 taken 1 times.
✗ Branch 2272 not taken.
✓ Branch 2274 taken 1 times.
✗ Branch 2275 not taken.
✓ Branch 2277 taken 1 times.
✗ Branch 2278 not taken.
✓ Branch 2280 taken 1 times.
✗ Branch 2281 not taken.
✓ Branch 2283 taken 1 times.
✗ Branch 2284 not taken.
✓ Branch 2286 taken 1 times.
✗ Branch 2287 not taken.
✓ Branch 2289 taken 1 times.
✗ Branch 2290 not taken.
✓ Branch 2292 taken 1 times.
✗ Branch 2293 not taken.
✓ Branch 2295 taken 1 times.
✗ Branch 2296 not taken.
✓ Branch 2298 taken 1 times.
✗ Branch 2299 not taken.
✓ Branch 2301 taken 1 times.
✗ Branch 2302 not taken.
✓ Branch 2304 taken 1 times.
✗ Branch 2305 not taken.
✓ Branch 2307 taken 1 times.
✗ Branch 2308 not taken.
✓ Branch 2310 taken 1 times.
✗ Branch 2311 not taken.
✓ Branch 2313 taken 1 times.
✗ Branch 2314 not taken.
✓ Branch 2316 taken 1 times.
✗ Branch 2317 not taken.
✓ Branch 2319 taken 1 times.
✗ Branch 2320 not taken.
✓ Branch 2322 taken 1 times.
✗ Branch 2323 not taken.
✓ Branch 2325 taken 1 times.
✗ Branch 2326 not taken.
✓ Branch 2328 taken 1 times.
✗ Branch 2329 not taken.
✓ Branch 2331 taken 1 times.
✗ Branch 2332 not taken.
✓ Branch 2334 taken 1 times.
✗ Branch 2335 not taken.
✓ Branch 2338 taken 1 times.
✗ Branch 2339 not taken.
✓ Branch 2341 taken 1 times.
✗ Branch 2342 not taken.
✓ Branch 2344 taken 1 times.
✗ Branch 2345 not taken.
✓ Branch 2347 taken 1 times.
✗ Branch 2348 not taken.
✓ Branch 2350 taken 1 times.
✗ Branch 2351 not taken.
✓ Branch 2353 taken 1 times.
✗ Branch 2354 not taken.
✓ Branch 2356 taken 1 times.
✗ Branch 2357 not taken.
✓ Branch 2359 taken 1 times.
✗ Branch 2360 not taken.
✓ Branch 2362 taken 1 times.
✗ Branch 2363 not taken.
✓ Branch 2365 taken 1 times.
✗ Branch 2366 not taken.
✓ Branch 2368 taken 1 times.
✗ Branch 2369 not taken.
✓ Branch 2371 taken 1 times.
✗ Branch 2372 not taken.
✓ Branch 2374 taken 1 times.
✗ Branch 2375 not taken.
✓ Branch 2377 taken 1 times.
✗ Branch 2378 not taken.
✓ Branch 2380 taken 1 times.
✗ Branch 2381 not taken.
✓ Branch 2383 taken 1 times.
✗ Branch 2384 not taken.
✓ Branch 2387 taken 1 times.
✗ Branch 2388 not taken.
✓ Branch 2390 taken 1 times.
✗ Branch 2391 not taken.
✓ Branch 2393 taken 1 times.
✗ Branch 2394 not taken.
✓ Branch 2396 taken 1 times.
✗ Branch 2397 not taken.
✓ Branch 2399 taken 1 times.
✗ Branch 2400 not taken.
✓ Branch 2402 taken 1 times.
✗ Branch 2403 not taken.
✓ Branch 2405 taken 1 times.
✗ Branch 2406 not taken.
✓ Branch 2408 taken 1 times.
✗ Branch 2409 not taken.
1911 return iterator<T>(static_cast<typename iterator<T>::pointer_t>(buffer()));
716 }
717
718 //------------------------------------------------------------------------------
719
720 template<typename T>
721 651 inline image::iterator<T> image::end()
722 {
723 651 auto itr = begin<T>();
724 651 itr += static_cast<typename iterator<T>::difference_type>(this->size_in_bytes() / sizeof(T));
725 651 return itr;
726 }
727
728 //------------------------------------------------------------------------------
729
730 template<typename T>
731 247 inline image::const_iterator<T> image::begin() const
732 {
733
10/51
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 29 taken 1 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 times.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
247 return const_iterator<T>(static_cast<typename const_iterator<T>::pointer_t>(buffer()));
734 }
735
736 //------------------------------------------------------------------------------
737
738 template<typename T>
739 8 inline image::const_iterator<T> image::end() const
740 {
741 8 auto itr = begin<T>();
742 8 itr += static_cast<typename const_iterator<T>::difference_type>(this->size_in_bytes() / sizeof(T));
743 8 return itr;
744 }
745
746 //------------------------------------------------------------------------------
747
748 template<typename T>
749 279 inline image::const_iterator<T> image::cbegin() const
750 {
751
38/880
✓ Branch 1 taken 131 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 131 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 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 not taken.
✗ Branch 74 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✓ Branch 85 taken 9 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 9 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 9 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 9 times.
✗ Branch 95 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 157 not taken.
✗ Branch 158 not taken.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✗ Branch 175 not taken.
✗ Branch 176 not taken.
✗ Branch 178 not taken.
✗ Branch 179 not taken.
✗ Branch 181 not taken.
✗ Branch 182 not taken.
✗ Branch 184 not taken.
✗ Branch 185 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✗ Branch 205 not taken.
✗ Branch 206 not taken.
✗ Branch 208 not taken.
✗ Branch 209 not taken.
✗ Branch 211 not taken.
✗ Branch 212 not taken.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 226 not taken.
✗ Branch 227 not taken.
✗ Branch 229 not taken.
✗ Branch 230 not taken.
✗ Branch 232 not taken.
✗ Branch 233 not taken.
✗ Branch 235 not taken.
✗ Branch 236 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 241 not taken.
✗ Branch 242 not taken.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✗ Branch 253 not taken.
✗ Branch 254 not taken.
✗ Branch 256 not taken.
✗ Branch 257 not taken.
✗ Branch 259 not taken.
✗ Branch 260 not taken.
✗ Branch 262 not taken.
✗ Branch 263 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 271 not taken.
✗ Branch 272 not taken.
✗ Branch 274 not taken.
✗ Branch 275 not taken.
✓ Branch 277 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 not taken.
✗ Branch 302 not taken.
✗ Branch 304 not taken.
✗ Branch 305 not taken.
✗ Branch 307 not taken.
✗ Branch 308 not taken.
✗ Branch 310 not taken.
✗ Branch 311 not taken.
✗ Branch 313 not taken.
✗ Branch 314 not taken.
✗ Branch 316 not taken.
✗ Branch 317 not taken.
✗ Branch 319 not taken.
✗ Branch 320 not taken.
✗ Branch 322 not taken.
✗ Branch 323 not taken.
✗ Branch 325 not taken.
✗ Branch 326 not taken.
✗ Branch 328 not taken.
✗ Branch 329 not taken.
✗ Branch 331 not taken.
✗ Branch 332 not taken.
✗ Branch 334 not taken.
✗ Branch 335 not taken.
✗ Branch 337 not taken.
✗ Branch 338 not taken.
✗ Branch 340 not taken.
✗ Branch 341 not taken.
✗ Branch 343 not taken.
✗ Branch 344 not taken.
✗ Branch 346 not taken.
✗ Branch 347 not taken.
✗ Branch 349 not taken.
✗ Branch 350 not taken.
✗ Branch 352 not taken.
✗ Branch 353 not taken.
✗ Branch 355 not taken.
✗ Branch 356 not taken.
✗ Branch 358 not taken.
✗ Branch 359 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 364 not taken.
✗ Branch 365 not taken.
✗ Branch 367 not taken.
✗ Branch 368 not taken.
✗ Branch 370 not taken.
✗ Branch 371 not taken.
✗ Branch 373 not taken.
✗ Branch 374 not taken.
✗ Branch 376 not taken.
✗ Branch 377 not taken.
✗ Branch 379 not taken.
✗ Branch 380 not taken.
✗ Branch 382 not taken.
✗ Branch 383 not taken.
✗ Branch 385 not taken.
✗ Branch 386 not taken.
✗ Branch 388 not taken.
✗ Branch 389 not taken.
✗ Branch 391 not taken.
✗ Branch 392 not taken.
✗ Branch 394 not taken.
✗ Branch 395 not taken.
✗ Branch 397 not taken.
✗ Branch 398 not taken.
✗ Branch 400 not taken.
✗ Branch 401 not taken.
✗ Branch 403 not taken.
✗ Branch 404 not taken.
✗ Branch 406 not taken.
✗ Branch 407 not taken.
✗ Branch 409 not taken.
✗ Branch 410 not taken.
✗ Branch 412 not taken.
✗ Branch 413 not taken.
✗ Branch 415 not taken.
✗ Branch 416 not taken.
✗ Branch 418 not taken.
✗ Branch 419 not taken.
✗ Branch 421 not taken.
✗ Branch 422 not taken.
✗ Branch 424 not taken.
✗ Branch 425 not taken.
✗ Branch 427 not taken.
✗ Branch 428 not taken.
✗ Branch 430 not taken.
✗ Branch 431 not taken.
✗ Branch 433 not taken.
✗ Branch 434 not taken.
✗ Branch 436 not taken.
✗ Branch 437 not taken.
✗ Branch 439 not taken.
✗ Branch 440 not taken.
✗ Branch 442 not taken.
✗ Branch 443 not taken.
✗ Branch 445 not taken.
✗ Branch 446 not taken.
✗ Branch 448 not taken.
✗ Branch 449 not taken.
✗ Branch 451 not taken.
✗ Branch 452 not taken.
✗ Branch 454 not taken.
✗ Branch 455 not taken.
✗ Branch 457 not taken.
✗ Branch 458 not taken.
✗ Branch 460 not taken.
✗ Branch 461 not taken.
✗ Branch 463 not taken.
✗ Branch 464 not taken.
✗ Branch 466 not taken.
✗ Branch 467 not taken.
✗ Branch 469 not taken.
✗ Branch 470 not taken.
✗ Branch 472 not taken.
✗ Branch 473 not taken.
✗ Branch 475 not taken.
✗ Branch 476 not taken.
✗ Branch 478 not taken.
✗ Branch 479 not taken.
✗ Branch 481 not taken.
✗ Branch 482 not taken.
✗ Branch 484 not taken.
✗ Branch 485 not taken.
✗ Branch 487 not taken.
✗ Branch 488 not taken.
✗ Branch 490 not taken.
✗ Branch 491 not taken.
✗ Branch 493 not taken.
✗ Branch 494 not taken.
✗ Branch 496 not taken.
✗ Branch 497 not taken.
✗ Branch 499 not taken.
✗ Branch 500 not taken.
✗ Branch 502 not taken.
✗ Branch 503 not taken.
✗ Branch 505 not taken.
✗ Branch 506 not taken.
✗ Branch 508 not taken.
✗ Branch 509 not taken.
✗ Branch 511 not taken.
✗ Branch 512 not taken.
✗ Branch 514 not taken.
✗ Branch 515 not taken.
✗ Branch 517 not taken.
✗ Branch 518 not taken.
✗ Branch 520 not taken.
✗ Branch 521 not taken.
✗ Branch 523 not taken.
✗ Branch 524 not taken.
✗ Branch 526 not taken.
✗ Branch 527 not taken.
✗ Branch 529 not taken.
✗ Branch 530 not taken.
✗ Branch 532 not taken.
✗ Branch 533 not taken.
✗ Branch 535 not taken.
✗ Branch 536 not taken.
✗ Branch 538 not taken.
✗ Branch 539 not taken.
✗ Branch 541 not taken.
✗ Branch 542 not taken.
✗ Branch 544 not taken.
✗ Branch 545 not taken.
✗ Branch 547 not taken.
✗ Branch 548 not taken.
✗ Branch 550 not taken.
✗ Branch 551 not taken.
✗ Branch 553 not taken.
✗ Branch 554 not taken.
✗ Branch 556 not taken.
✗ Branch 557 not taken.
✗ Branch 559 not taken.
✗ Branch 560 not taken.
✗ Branch 562 not taken.
✗ Branch 563 not taken.
✗ Branch 565 not taken.
✗ Branch 566 not taken.
✗ Branch 568 not taken.
✗ Branch 569 not taken.
✗ Branch 571 not taken.
✗ Branch 572 not taken.
✗ Branch 574 not taken.
✗ Branch 575 not taken.
✗ Branch 577 not taken.
✗ Branch 578 not taken.
✗ Branch 580 not taken.
✗ Branch 581 not taken.
✗ Branch 583 not taken.
✗ Branch 584 not taken.
✗ Branch 586 not taken.
✗ Branch 587 not taken.
✗ Branch 589 not taken.
✗ Branch 590 not taken.
✗ Branch 592 not taken.
✗ Branch 593 not taken.
✗ Branch 595 not taken.
✗ Branch 596 not taken.
✗ Branch 598 not taken.
✗ Branch 599 not taken.
✗ Branch 601 not taken.
✗ Branch 602 not taken.
✗ Branch 604 not taken.
✗ Branch 605 not taken.
✗ Branch 607 not taken.
✗ Branch 608 not taken.
✗ Branch 610 not taken.
✗ Branch 611 not taken.
✗ Branch 613 not taken.
✗ Branch 614 not taken.
✗ Branch 616 not taken.
✗ Branch 617 not taken.
✗ Branch 619 not taken.
✗ Branch 620 not taken.
✗ Branch 622 not taken.
✗ Branch 623 not taken.
✗ Branch 625 not taken.
✗ Branch 626 not taken.
✗ Branch 628 not taken.
✗ Branch 629 not taken.
✗ Branch 631 not taken.
✗ Branch 632 not taken.
✗ Branch 634 not taken.
✗ Branch 635 not taken.
✗ Branch 637 not taken.
✗ Branch 638 not taken.
✗ Branch 640 not taken.
✗ Branch 641 not taken.
✗ Branch 643 not taken.
✗ Branch 644 not taken.
✗ Branch 646 not taken.
✗ Branch 647 not taken.
✗ Branch 649 not taken.
✗ Branch 650 not taken.
✗ Branch 652 not taken.
✗ Branch 653 not taken.
✗ Branch 655 not taken.
✗ Branch 656 not taken.
✗ Branch 658 not taken.
✗ Branch 659 not taken.
✗ Branch 661 not taken.
✗ Branch 662 not taken.
✗ Branch 664 not taken.
✗ Branch 665 not taken.
✗ Branch 667 not taken.
✗ Branch 668 not taken.
✗ Branch 670 not taken.
✗ Branch 671 not taken.
✗ Branch 673 not taken.
✗ Branch 674 not taken.
✗ Branch 676 not taken.
✗ Branch 677 not taken.
✗ Branch 679 not taken.
✗ Branch 680 not taken.
✗ Branch 682 not taken.
✗ Branch 683 not taken.
✗ Branch 685 not taken.
✗ Branch 686 not taken.
✗ Branch 688 not taken.
✗ Branch 689 not taken.
✗ Branch 691 not taken.
✗ Branch 692 not taken.
✗ Branch 694 not taken.
✗ Branch 695 not taken.
✗ Branch 697 not taken.
✗ Branch 698 not taken.
✗ Branch 700 not taken.
✗ Branch 701 not taken.
✗ Branch 703 not taken.
✗ Branch 704 not taken.
✗ Branch 706 not taken.
✗ Branch 707 not taken.
✓ Branch 709 taken 2 times.
✗ Branch 710 not taken.
✓ Branch 712 taken 2 times.
✗ Branch 713 not taken.
✓ Branch 715 taken 2 times.
✗ Branch 716 not taken.
✓ Branch 718 taken 2 times.
✗ Branch 719 not taken.
✗ Branch 721 not taken.
✗ Branch 722 not taken.
✗ Branch 724 not taken.
✗ Branch 725 not taken.
✗ Branch 727 not taken.
✗ Branch 728 not taken.
✗ Branch 730 not taken.
✗ Branch 731 not taken.
✗ Branch 733 not taken.
✗ Branch 734 not taken.
✗ Branch 736 not taken.
✗ Branch 737 not taken.
✗ Branch 739 not taken.
✗ Branch 740 not taken.
✗ Branch 742 not taken.
✗ Branch 743 not taken.
✗ Branch 745 not taken.
✗ Branch 746 not taken.
✗ Branch 748 not taken.
✗ Branch 749 not taken.
✗ Branch 751 not taken.
✗ Branch 752 not taken.
✗ Branch 754 not taken.
✗ Branch 755 not taken.
✗ Branch 757 not taken.
✗ Branch 758 not taken.
✗ Branch 760 not taken.
✗ Branch 761 not taken.
✗ Branch 763 not taken.
✗ Branch 764 not taken.
✗ Branch 766 not taken.
✗ Branch 767 not taken.
✗ Branch 769 not taken.
✗ Branch 770 not taken.
✗ Branch 772 not taken.
✗ Branch 773 not taken.
✗ Branch 775 not taken.
✗ Branch 776 not taken.
✗ Branch 778 not taken.
✗ Branch 779 not taken.
✗ Branch 781 not taken.
✗ Branch 782 not taken.
✗ Branch 784 not taken.
✗ Branch 785 not taken.
✗ Branch 787 not taken.
✗ Branch 788 not taken.
✗ Branch 790 not taken.
✗ Branch 791 not taken.
✗ Branch 793 not taken.
✗ Branch 794 not taken.
✗ Branch 796 not taken.
✗ Branch 797 not taken.
✗ Branch 799 not taken.
✗ Branch 800 not taken.
✗ Branch 802 not taken.
✗ Branch 803 not taken.
✗ Branch 805 not taken.
✗ Branch 806 not taken.
✗ Branch 808 not taken.
✗ Branch 809 not taken.
✗ Branch 811 not taken.
✗ Branch 812 not taken.
✗ Branch 814 not taken.
✗ Branch 815 not taken.
✗ Branch 817 not taken.
✗ Branch 818 not taken.
✗ Branch 820 not taken.
✗ Branch 821 not taken.
✗ Branch 823 not taken.
✗ Branch 824 not taken.
✗ Branch 826 not taken.
✗ Branch 827 not taken.
✗ Branch 829 not taken.
✗ Branch 830 not taken.
✗ Branch 832 not taken.
✗ Branch 833 not taken.
✗ Branch 835 not taken.
✗ Branch 836 not taken.
✗ Branch 838 not taken.
✗ Branch 839 not taken.
✗ Branch 841 not taken.
✗ Branch 842 not taken.
✗ Branch 844 not taken.
✗ Branch 845 not taken.
✗ Branch 847 not taken.
✗ Branch 848 not taken.
✗ Branch 850 not taken.
✗ Branch 851 not taken.
✗ Branch 853 not taken.
✗ Branch 854 not taken.
✗ Branch 856 not taken.
✗ Branch 857 not taken.
✗ Branch 859 not taken.
✗ Branch 860 not taken.
✗ Branch 862 not taken.
✗ Branch 863 not taken.
✗ Branch 865 not taken.
✗ Branch 866 not taken.
✗ Branch 868 not taken.
✗ Branch 869 not taken.
✗ Branch 871 not taken.
✗ Branch 872 not taken.
✗ Branch 874 not taken.
✗ Branch 875 not taken.
✗ Branch 877 not taken.
✗ Branch 878 not taken.
✗ Branch 880 not taken.
✗ Branch 881 not taken.
✗ Branch 883 not taken.
✗ Branch 884 not taken.
✗ Branch 886 not taken.
✗ Branch 887 not taken.
✗ Branch 889 not taken.
✗ Branch 890 not taken.
✗ Branch 892 not taken.
✗ Branch 893 not taken.
✗ Branch 895 not taken.
✗ Branch 896 not taken.
✗ Branch 898 not taken.
✗ Branch 899 not taken.
✗ Branch 901 not taken.
✗ Branch 902 not taken.
✗ Branch 904 not taken.
✗ Branch 905 not taken.
✗ Branch 907 not taken.
✗ Branch 908 not taken.
✗ Branch 910 not taken.
✗ Branch 911 not taken.
✗ Branch 913 not taken.
✗ Branch 914 not taken.
✗ Branch 916 not taken.
✗ Branch 917 not taken.
✗ Branch 919 not taken.
✗ Branch 920 not taken.
✗ Branch 922 not taken.
✗ Branch 923 not taken.
✗ Branch 925 not taken.
✗ Branch 926 not taken.
✗ Branch 928 not taken.
✗ Branch 929 not taken.
✗ Branch 931 not taken.
✗ Branch 932 not taken.
✗ Branch 934 not taken.
✗ Branch 935 not taken.
✗ Branch 937 not taken.
✗ Branch 938 not taken.
✗ Branch 940 not taken.
✗ Branch 941 not taken.
✗ Branch 943 not taken.
✗ Branch 944 not taken.
✗ Branch 946 not taken.
✗ Branch 947 not taken.
✗ Branch 949 not taken.
✗ Branch 950 not taken.
✗ Branch 952 not taken.
✗ Branch 953 not taken.
✗ Branch 955 not taken.
✗ Branch 956 not taken.
✗ Branch 958 not taken.
✗ Branch 959 not taken.
✗ Branch 961 not taken.
✗ Branch 962 not taken.
✗ Branch 964 not taken.
✗ Branch 965 not taken.
✗ Branch 967 not taken.
✗ Branch 968 not taken.
✗ Branch 970 not taken.
✗ Branch 971 not taken.
✗ Branch 973 not taken.
✗ Branch 974 not taken.
✗ Branch 976 not taken.
✗ Branch 977 not taken.
✗ Branch 979 not taken.
✗ Branch 980 not taken.
✗ Branch 982 not taken.
✗ Branch 983 not taken.
✗ Branch 985 not taken.
✗ Branch 986 not taken.
✗ Branch 988 not taken.
✗ Branch 989 not taken.
✗ Branch 991 not taken.
✗ Branch 992 not taken.
✗ Branch 994 not taken.
✗ Branch 995 not taken.
✗ Branch 997 not taken.
✗ Branch 998 not taken.
✗ Branch 1000 not taken.
✗ Branch 1001 not taken.
✗ Branch 1003 not taken.
✗ Branch 1004 not taken.
✗ Branch 1006 not taken.
✗ Branch 1007 not taken.
✗ Branch 1009 not taken.
✗ Branch 1010 not taken.
✗ Branch 1012 not taken.
✗ Branch 1013 not taken.
✗ Branch 1015 not taken.
✗ Branch 1016 not taken.
✗ Branch 1018 not taken.
✗ Branch 1019 not taken.
✗ Branch 1021 not taken.
✗ Branch 1022 not taken.
✗ Branch 1024 not taken.
✗ Branch 1025 not taken.
✗ Branch 1027 not taken.
✗ Branch 1028 not taken.
✗ Branch 1030 not taken.
✗ Branch 1031 not taken.
✗ Branch 1033 not taken.
✗ Branch 1034 not taken.
✗ Branch 1036 not taken.
✗ Branch 1037 not taken.
✗ Branch 1039 not taken.
✗ Branch 1040 not taken.
✗ Branch 1042 not taken.
✗ Branch 1043 not taken.
✗ Branch 1045 not taken.
✗ Branch 1046 not taken.
✗ Branch 1048 not taken.
✗ Branch 1049 not taken.
✗ Branch 1051 not taken.
✗ Branch 1052 not taken.
✗ Branch 1054 not taken.
✗ Branch 1055 not taken.
✗ Branch 1057 not taken.
✗ Branch 1058 not taken.
✗ Branch 1060 not taken.
✗ Branch 1061 not taken.
✗ Branch 1063 not taken.
✗ Branch 1064 not taken.
✗ Branch 1066 not taken.
✗ Branch 1067 not taken.
✗ Branch 1069 not taken.
✗ Branch 1070 not taken.
✗ Branch 1072 not taken.
✗ Branch 1073 not taken.
✗ Branch 1075 not taken.
✗ Branch 1076 not taken.
✗ Branch 1078 not taken.
✗ Branch 1079 not taken.
✓ Branch 1081 taken 14 times.
✗ Branch 1082 not taken.
✓ Branch 1084 taken 14 times.
✗ Branch 1085 not taken.
✓ Branch 1087 taken 14 times.
✗ Branch 1088 not taken.
✓ Branch 1090 taken 14 times.
✗ Branch 1091 not taken.
✗ Branch 1093 not taken.
✗ Branch 1094 not taken.
✗ Branch 1096 not taken.
✗ Branch 1097 not taken.
✗ Branch 1099 not taken.
✗ Branch 1100 not taken.
✗ Branch 1102 not taken.
✗ Branch 1103 not taken.
✗ Branch 1105 not taken.
✗ Branch 1106 not taken.
✗ Branch 1108 not taken.
✗ Branch 1109 not taken.
✗ Branch 1111 not taken.
✗ Branch 1112 not taken.
✗ Branch 1114 not taken.
✗ Branch 1115 not taken.
✗ Branch 1117 not taken.
✗ Branch 1118 not taken.
✗ Branch 1120 not taken.
✗ Branch 1121 not taken.
✗ Branch 1123 not taken.
✗ Branch 1124 not taken.
✗ Branch 1126 not taken.
✗ Branch 1127 not taken.
✗ Branch 1129 not taken.
✗ Branch 1130 not taken.
✗ Branch 1132 not taken.
✗ Branch 1133 not taken.
✗ Branch 1135 not taken.
✗ Branch 1136 not taken.
✗ Branch 1138 not taken.
✗ Branch 1139 not taken.
✗ Branch 1141 not taken.
✗ Branch 1142 not taken.
✗ Branch 1144 not taken.
✗ Branch 1145 not taken.
✗ Branch 1147 not taken.
✗ Branch 1148 not taken.
✗ Branch 1150 not taken.
✗ Branch 1151 not taken.
✗ Branch 1153 not taken.
✗ Branch 1154 not taken.
✗ Branch 1156 not taken.
✗ Branch 1157 not taken.
✗ Branch 1159 not taken.
✗ Branch 1160 not taken.
✗ Branch 1162 not taken.
✗ Branch 1163 not taken.
✗ Branch 1165 not taken.
✗ Branch 1166 not taken.
✗ Branch 1168 not taken.
✗ Branch 1169 not taken.
✗ Branch 1171 not taken.
✗ Branch 1172 not taken.
✗ Branch 1174 not taken.
✗ Branch 1175 not taken.
✗ Branch 1177 not taken.
✗ Branch 1178 not taken.
✗ Branch 1180 not taken.
✗ Branch 1181 not taken.
✗ Branch 1183 not taken.
✗ Branch 1184 not taken.
✗ Branch 1186 not taken.
✗ Branch 1187 not taken.
✗ Branch 1189 not taken.
✗ Branch 1190 not taken.
✗ Branch 1192 not taken.
✗ Branch 1193 not taken.
✗ Branch 1195 not taken.
✗ Branch 1196 not taken.
✗ Branch 1198 not taken.
✗ Branch 1199 not taken.
✗ Branch 1201 not taken.
✗ Branch 1202 not taken.
✗ Branch 1204 not taken.
✗ Branch 1205 not taken.
✗ Branch 1207 not taken.
✗ Branch 1208 not taken.
✗ Branch 1210 not taken.
✗ Branch 1211 not taken.
✗ Branch 1213 not taken.
✗ Branch 1214 not taken.
✗ Branch 1216 not taken.
✗ Branch 1217 not taken.
✗ Branch 1219 not taken.
✗ Branch 1220 not taken.
✗ Branch 1222 not taken.
✗ Branch 1223 not taken.
✓ Branch 1225 taken 2 times.
✗ Branch 1226 not taken.
✓ Branch 1228 taken 2 times.
✗ Branch 1229 not taken.
✓ Branch 1231 taken 2 times.
✗ Branch 1232 not taken.
✓ Branch 1234 taken 2 times.
✗ Branch 1235 not taken.
✗ Branch 1237 not taken.
✗ Branch 1238 not taken.
✗ Branch 1240 not taken.
✗ Branch 1241 not taken.
✗ Branch 1243 not taken.
✗ Branch 1244 not taken.
✗ Branch 1246 not taken.
✗ Branch 1247 not taken.
✗ Branch 1249 not taken.
✗ Branch 1250 not taken.
✗ Branch 1252 not taken.
✗ Branch 1253 not taken.
✗ Branch 1255 not taken.
✗ Branch 1256 not taken.
✗ Branch 1258 not taken.
✗ Branch 1259 not taken.
✗ Branch 1261 not taken.
✗ Branch 1262 not taken.
✗ Branch 1264 not taken.
✗ Branch 1265 not taken.
✗ Branch 1267 not taken.
✗ Branch 1268 not taken.
✗ Branch 1270 not taken.
✗ Branch 1271 not taken.
✗ Branch 1273 not taken.
✗ Branch 1274 not taken.
✗ Branch 1276 not taken.
✗ Branch 1277 not taken.
✗ Branch 1279 not taken.
✗ Branch 1280 not taken.
✗ Branch 1282 not taken.
✗ Branch 1283 not taken.
✓ Branch 1285 taken 14 times.
✗ Branch 1286 not taken.
✓ Branch 1288 taken 14 times.
✗ Branch 1289 not taken.
✓ Branch 1291 taken 14 times.
✗ Branch 1292 not taken.
✓ Branch 1294 taken 14 times.
✗ Branch 1295 not taken.
✗ Branch 1297 not taken.
✗ Branch 1298 not taken.
✗ Branch 1300 not taken.
✗ Branch 1301 not taken.
✗ Branch 1303 not taken.
✗ Branch 1304 not taken.
✗ Branch 1306 not taken.
✗ Branch 1307 not taken.
✗ Branch 1309 not taken.
✗ Branch 1310 not taken.
✗ Branch 1312 not taken.
✗ Branch 1313 not taken.
✗ Branch 1315 not taken.
✗ Branch 1316 not taken.
✗ Branch 1318 not taken.
✗ Branch 1319 not taken.
234 return const_iterator<T>(static_cast<typename const_iterator<T>::pointer_t>(buffer()));
752 }
753
754 //------------------------------------------------------------------------------
755
756 template<typename T>
757 237 inline image::const_iterator<T> image::cend() const
758 {
759 237 auto itr = begin<T>();
760 237 itr += static_cast<typename const_iterator<T>::difference_type>(this->size_in_bytes() / sizeof(T));
761 237 return itr;
762 }
763
764 //------------------------------------------------------------------------------
765
766 template<typename T>
767 3 auto image::range()
768 {
769 3 auto b = begin<T>();
770 3 auto e = end<T>();
771 3 return boost::make_iterator_range(b, e);
772 }
773
774 //------------------------------------------------------------------------------
775
776 template<typename T>
777 auto image::crange() const
778 {
779 auto b = cbegin<T>();
780 auto e = cend<T>();
781 return boost::make_iterator_range(b, e);
782 }
783
784 //------------------------------------------------------------------------------
785
786 template<typename T>
787 363106 inline T& image::at(index_t _id)
788 {
789
8/16
✓ Branch 1 taken 50860 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 50860 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 50860 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 34060 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 50859 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 56769 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 36070 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 32768 times.
✗ Branch 23 not taken.
264796 return *reinterpret_cast<T*>(this->get_pixel(_id));
790 }
791
792 //------------------------------------------------------------------------------
793
794 template<typename T>
795 6450 inline T image::at(index_t _id) const
796 {
797
12/24
✓ Branch 1 taken 90 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 90 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 90 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 90 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 90 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 90 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 90 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 90 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 90 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 90 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 6000 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 6000 times.
✗ Branch 35 not taken.
6450 return *reinterpret_cast<const T*>(this->get_pixel(_id));
798 }
799
800 //------------------------------------------------------------------------------
801
802 template<typename T>
803 17177747 inline T& image::at(index_t _x, index_t _y, index_t _z, index_t _c)
804 {
805 17177747 const index_t offset = _x + m_size[0] * _y + _z * m_size[0] * m_size[1];
806 17177747 return *(reinterpret_cast<T*>(this->get_pixel(offset)) + _c);
807 }
808
809 //------------------------------------------------------------------------------
810
811 template<typename T>
812 11739 inline T image::at(index_t _x, index_t _y, index_t _z, index_t _c) const
813 {
814 11739 const index_t offset = _x + m_size[0] * _y + _z * m_size[0] * m_size[1];
815 11739 return *(reinterpret_cast<const T*>(this->get_pixel(offset)) + _c);
816 }
817
818 } // namespace sight::data
819