Line | Branch | Exec | Source |
---|---|---|---|
1 | // Copyright Contributors to the OpenVDB Project | ||
2 | // SPDX-License-Identifier: MPL-2.0 | ||
3 | |||
4 | #ifndef OPENVDB_TYPES_HAS_BEEN_INCLUDED | ||
5 | #define OPENVDB_TYPES_HAS_BEEN_INCLUDED | ||
6 | |||
7 | #include "version.h" | ||
8 | #include "Platform.h" | ||
9 | #include "TypeList.h" // backwards compat | ||
10 | |||
11 | #ifdef OPENVDB_USE_IMATH_HALF | ||
12 | #ifdef OPENVDB_IMATH_VERSION | ||
13 | #include <Imath/half.h> | ||
14 | #else | ||
15 | #include <OpenEXR/half.h> | ||
16 | #endif | ||
17 | namespace openvdb { | ||
18 | OPENVDB_USE_VERSION_NAMESPACE | ||
19 | namespace OPENVDB_VERSION_NAME { | ||
20 | namespace math { | ||
21 | using half = half; | ||
22 | }}} | ||
23 | #else | ||
24 | #include <openvdb/math/Half.h> | ||
25 | namespace openvdb { | ||
26 | OPENVDB_USE_VERSION_NAMESPACE | ||
27 | namespace OPENVDB_VERSION_NAME { | ||
28 | namespace math { | ||
29 | using half = internal::half; | ||
30 | }}} | ||
31 | #endif | ||
32 | |||
33 | #include <openvdb/math/Math.h> | ||
34 | #include <openvdb/math/BBox.h> | ||
35 | #include <openvdb/math/Quat.h> | ||
36 | #include <openvdb/math/Vec2.h> | ||
37 | #include <openvdb/math/Vec3.h> | ||
38 | #include <openvdb/math/Vec4.h> | ||
39 | #include <openvdb/math/Mat3.h> | ||
40 | #include <openvdb/math/Mat4.h> | ||
41 | #include <openvdb/math/Coord.h> | ||
42 | #include <cstdint> | ||
43 | #include <memory> | ||
44 | #include <type_traits> | ||
45 | |||
46 | |||
47 | namespace openvdb { | ||
48 | OPENVDB_USE_VERSION_NAMESPACE | ||
49 | namespace OPENVDB_VERSION_NAME { | ||
50 | |||
51 | // One-dimensional scalar types | ||
52 | using Index32 = uint32_t; | ||
53 | using Index64 = uint64_t; | ||
54 | using Index = Index32; | ||
55 | using Int16 = int16_t; | ||
56 | using Int32 = int32_t; | ||
57 | using Int64 = int64_t; | ||
58 | using Int = Int32; | ||
59 | using Byte = unsigned char; | ||
60 | using Real = double; | ||
61 | |||
62 | // Two-dimensional vector types | ||
63 | using Vec2R = math::Vec2<Real>; | ||
64 | using Vec2I = math::Vec2<Index32>; | ||
65 | using Vec2f = math::Vec2<float>; | ||
66 | using Vec2H = math::Vec2<math::half>; | ||
67 | using math::Vec2i; | ||
68 | using math::Vec2s; | ||
69 | using math::Vec2d; | ||
70 | |||
71 | // Three-dimensional vector types | ||
72 | using Vec3R = math::Vec3<Real>; | ||
73 | using Vec3I = math::Vec3<Index32>; | ||
74 | using Vec3f = math::Vec3<float>; | ||
75 | using Vec3H = math::Vec3<math::half>; | ||
76 | using Vec3U8 = math::Vec3<uint8_t>; | ||
77 | using Vec3U16 = math::Vec3<uint16_t>; | ||
78 | using math::Vec3i; | ||
79 | using math::Vec3s; | ||
80 | using math::Vec3d; | ||
81 | |||
82 | using math::Coord; | ||
83 | using math::CoordBBox; | ||
84 | using BBoxd = math::BBox<Vec3d>; | ||
85 | |||
86 | // Four-dimensional vector types | ||
87 | using Vec4R = math::Vec4<Real>; | ||
88 | using Vec4I = math::Vec4<Index32>; | ||
89 | using Vec4f = math::Vec4<float>; | ||
90 | using Vec4H = math::Vec4<math::half>; | ||
91 | using math::Vec4i; | ||
92 | using math::Vec4s; | ||
93 | using math::Vec4d; | ||
94 | |||
95 | // Three-dimensional matrix types | ||
96 | using Mat3R = math::Mat3<Real>; | ||
97 | using math::Mat3s; | ||
98 | using math::Mat3d; | ||
99 | |||
100 | // Four-dimensional matrix types | ||
101 | using Mat4R = math::Mat4<Real>; | ||
102 | using math::Mat4s; | ||
103 | using math::Mat4d; | ||
104 | |||
105 | // Quaternions | ||
106 | using QuatR = math::Quat<Real>; | ||
107 | using math::Quats; | ||
108 | using math::Quatd; | ||
109 | |||
110 | // Dummy type for a voxel with a binary mask value, e.g. the active state | ||
111 | class ValueMask {}; | ||
112 | |||
113 | // Use STL shared pointers from OpenVDB 4 on. | ||
114 | template<typename T> using SharedPtr = std::shared_ptr<T>; | ||
115 | template<typename T> using WeakPtr = std::weak_ptr<T>; | ||
116 | |||
117 | /// @brief Return a new shared pointer that points to the same object | ||
118 | /// as the given pointer but with possibly different <TT>const</TT>-ness. | ||
119 | /// @par Example: | ||
120 | /// @code | ||
121 | /// FloatGrid::ConstPtr grid = ...; | ||
122 | /// FloatGrid::Ptr nonConstGrid = ConstPtrCast<FloatGrid>(grid); | ||
123 | /// FloatGrid::ConstPtr constGrid = ConstPtrCast<const FloatGrid>(nonConstGrid); | ||
124 | /// @endcode | ||
125 | template<typename T, typename U> inline SharedPtr<T> | ||
126 | 56078 | ConstPtrCast(const SharedPtr<U>& ptr) { return std::const_pointer_cast<T, U>(ptr); } | |
127 | |||
128 | /// @brief Return a new shared pointer that is either null or points to | ||
129 | /// the same object as the given pointer after a @c dynamic_cast. | ||
130 | /// @par Example: | ||
131 | /// @code | ||
132 | /// GridBase::ConstPtr grid = ...; | ||
133 | /// FloatGrid::ConstPtr floatGrid = DynamicPtrCast<const FloatGrid>(grid); | ||
134 | /// @endcode | ||
135 | template<typename T, typename U> inline SharedPtr<T> | ||
136 | 27 | DynamicPtrCast(const SharedPtr<U>& ptr) { return std::dynamic_pointer_cast<T, U>(ptr); } | |
137 | |||
138 | /// @brief Return a new shared pointer that points to the same object | ||
139 | /// as the given pointer after a @c static_cast. | ||
140 | /// @par Example: | ||
141 | /// @code | ||
142 | /// FloatGrid::Ptr floatGrid = ...; | ||
143 | /// GridBase::Ptr grid = StaticPtrCast<GridBase>(floatGrid); | ||
144 | /// @endcode | ||
145 | template<typename T, typename U> inline SharedPtr<T> | ||
146 | 1515739 | StaticPtrCast(const SharedPtr<U>& ptr) { return std::static_pointer_cast<T, U>(ptr); } | |
147 | |||
148 | |||
149 | //////////////////////////////////////// | ||
150 | |||
151 | |||
152 | /// @brief Integer wrapper, required to distinguish PointIndexGrid and | ||
153 | /// PointDataGrid from Int32Grid and Int64Grid | ||
154 | /// @note @c Kind is a dummy parameter used to create distinct types. | ||
155 | template<typename IntType_, Index Kind> | ||
156 | struct PointIndex | ||
157 | { | ||
158 | static_assert(std::is_integral<IntType_>::value, "PointIndex requires an integer value type"); | ||
159 | |||
160 | using IntType = IntType_; | ||
161 | |||
162 |
39/83✓ Branch 1 taken 22227456 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 586 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 1025 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 4097 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 4096 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 4613 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 4821 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 4098 times.
✓ Branch 26 taken 1838592 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 7170 times.
✓ Branch 29 taken 114688 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 1792 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 4864 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 4609 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 4097 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 4097 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 256 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 4097 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 4096 times.
✗ Branch 53 not taken.
✗ Branch 55 not taken.
✓ Branch 56 taken 1 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 4096 times.
✓ Branch 59 taken 1 times.
✗ Branch 60 not taken.
✓ Branch 61 taken 19968 times.
✓ Branch 62 taken 1 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 512 times.
✓ Branch 65 taken 1 times.
✗ Branch 66 not taken.
✓ Branch 67 taken 4096 times.
✓ Branch 68 taken 1 times.
✗ Branch 69 not taken.
✓ Branch 70 taken 4096 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 4096 times.
✗ Branch 74 not taken.
✓ Branch 76 taken 4096 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 4096 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 4096 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 4096 times.
✗ Branch 86 not taken.
✓ Branch 88 taken 4096 times.
✗ Branch 89 not taken.
✓ Branch 91 taken 4096 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 6144 times.
✗ Branch 95 not taken.
✓ Branch 97 taken 1 times.
✗ Branch 98 not taken.
✓ Branch 100 taken 1 times.
✗ Branch 101 not taken.
|
94249687 | PointIndex(IntType i = IntType(0)): mIndex(i) {} |
163 | |||
164 | /// Explicit type conversion constructor | ||
165 |
48/173✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 76 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 16 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 3 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 25 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✓ Branch 40 taken 76 times.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 14 times.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✓ Branch 48 taken 16 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 16 times.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 16 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 24 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 25 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✓ Branch 69 taken 24 times.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✓ Branch 72 taken 78 times.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✓ Branch 85 taken 3 times.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✓ Branch 91 taken 3 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 730 times.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 97 taken 4 times.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✗ Branch 100 not taken.
✓ Branch 101 taken 1 times.
✗ Branch 102 not taken.
✓ Branch 103 taken 4 times.
✓ Branch 104 taken 1 times.
✗ Branch 105 not taken.
✓ Branch 106 taken 1 times.
✓ Branch 107 taken 1 times.
✗ Branch 108 not taken.
✓ Branch 109 taken 8 times.
✓ Branch 110 taken 1 times.
✗ Branch 111 not taken.
✓ Branch 112 taken 6 times.
✓ Branch 113 taken 1 times.
✗ Branch 114 not taken.
✓ Branch 115 taken 15 times.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
✓ Branch 118 taken 1654104 times.
✓ Branch 119 taken 1 times.
✗ Branch 120 not taken.
✓ Branch 121 taken 32 times.
✓ Branch 122 taken 1 times.
✗ Branch 123 not taken.
✗ Branch 124 not taken.
✓ Branch 125 taken 17 times.
✗ Branch 126 not taken.
✗ Branch 127 not taken.
✓ Branch 128 taken 1 times.
✗ Branch 129 not taken.
✗ Branch 130 not taken.
✓ Branch 131 taken 1 times.
✗ Branch 132 not taken.
✗ Branch 133 not taken.
✓ Branch 134 taken 1 times.
✗ Branch 135 not taken.
✗ Branch 136 not taken.
✓ Branch 137 taken 1 times.
✗ Branch 138 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 taken 4 times.
✗ Branch 158 not taken.
✓ Branch 160 taken 4 times.
✗ Branch 161 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✗ Branch 172 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 taken 3837100 times.
✗ Branch 185 not taken.
✗ Branch 189 not taken.
✗ Branch 190 not taken.
✓ Branch 193 taken 52 times.
✗ Branch 194 not taken.
|
5572229 | template<typename T> explicit PointIndex(T i): mIndex(static_cast<IntType>(i)) {} |
166 | |||
167 |
135/288✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 16 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 16 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 16 times.
✓ Branch 16 taken 4 times.
✓ Branch 17 taken 3851 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 40 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 8211 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 26 times.
✗ Branch 26 not taken.
✓ Branch 27 taken 72 times.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 65532 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✓ Branch 53 taken 16 times.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✓ Branch 56 taken 2 times.
✓ Branch 57 taken 98417 times.
✓ Branch 58 taken 6 times.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✓ Branch 61 taken 29 times.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✓ Branch 64 taken 40000 times.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✓ Branch 69 taken 14 times.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✓ Branch 87 taken 819150 times.
✓ Branch 88 taken 20 times.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✓ Branch 91 taken 40109 times.
✓ Branch 92 taken 91 times.
✗ Branch 93 not taken.
✓ Branch 94 taken 1514 times.
✓ Branch 95 taken 1433 times.
✗ Branch 96 not taken.
✓ Branch 97 taken 10184 times.
✓ Branch 98 taken 305498 times.
✓ Branch 99 taken 13842 times.
✓ Branch 100 taken 18646 times.
✗ Branch 101 not taken.
✓ Branch 102 taken 1032 times.
✓ Branch 103 taken 31608 times.
✓ Branch 104 taken 297 times.
✓ Branch 105 taken 59306 times.
✓ Branch 106 taken 128137 times.
✓ Branch 107 taken 639300 times.
✓ Branch 108 taken 172811 times.
✓ Branch 109 taken 38824 times.
✗ Branch 110 not taken.
✓ Branch 111 taken 60027 times.
✗ Branch 112 not taken.
✓ Branch 113 taken 27 times.
✓ Branch 114 taken 60000 times.
✓ Branch 115 taken 27 times.
✗ Branch 116 not taken.
✓ Branch 117 taken 3647 times.
✗ Branch 118 not taken.
✓ Branch 119 taken 27 times.
✓ Branch 120 taken 20559 times.
✓ Branch 121 taken 27 times.
✗ Branch 122 not taken.
✓ Branch 123 taken 505130 times.
✓ Branch 124 taken 505206 times.
✓ Branch 125 taken 27 times.
✓ Branch 126 taken 1399 times.
✓ Branch 127 taken 168 times.
✗ Branch 128 not taken.
✓ Branch 129 taken 7 times.
✗ Branch 130 not taken.
✓ Branch 131 taken 7 times.
✓ Branch 132 taken 1 times.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✓ Branch 135 taken 511 times.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 138 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 141 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 144 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✗ Branch 147 not taken.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✗ Branch 150 not taken.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✗ Branch 153 not taken.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 157 not taken.
✗ Branch 158 not taken.
✗ Branch 159 not taken.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 162 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 165 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✓ Branch 168 taken 1 times.
✗ Branch 169 not taken.
✗ Branch 170 not taken.
✗ Branch 171 not taken.
✗ Branch 172 not taken.
✗ Branch 173 not taken.
✗ Branch 174 not taken.
✗ Branch 175 not taken.
✗ Branch 176 not taken.
✗ Branch 177 not taken.
✓ Branch 178 taken 1 times.
✓ Branch 179 taken 2656 times.
✓ Branch 180 taken 14610 times.
✓ Branch 181 taken 22669 times.
✓ Branch 182 taken 1430 times.
✓ Branch 183 taken 38 times.
✓ Branch 184 taken 8466 times.
✓ Branch 185 taken 1566 times.
✗ Branch 186 not taken.
✓ Branch 187 taken 68 times.
✓ Branch 188 taken 3682 times.
✓ Branch 189 taken 12 times.
✓ Branch 190 taken 220130 times.
✓ Branch 191 taken 447 times.
✓ Branch 192 taken 64 times.
✓ Branch 193 taken 11 times.
✓ Branch 194 taken 90005 times.
✗ Branch 195 not taken.
✓ Branch 196 taken 2822 times.
✗ Branch 197 not taken.
✓ Branch 198 taken 372519 times.
✓ Branch 199 taken 731 times.
✓ Branch 200 taken 56 times.
✓ Branch 201 taken 9 times.
✓ Branch 202 taken 121 times.
✓ Branch 203 taken 1 times.
✓ Branch 204 taken 1 times.
✓ Branch 205 taken 506 times.
✓ Branch 206 taken 63462 times.
✓ Branch 207 taken 1390136 times.
✓ Branch 208 taken 57 times.
✓ Branch 209 taken 8 times.
✗ Branch 210 not taken.
✓ Branch 211 taken 32 times.
✗ Branch 212 not taken.
✗ Branch 213 not taken.
✓ Branch 214 taken 127872 times.
✓ Branch 215 taken 137 times.
✓ Branch 216 taken 56 times.
✓ Branch 217 taken 8 times.
✓ Branch 218 taken 31755 times.
✓ Branch 219 taken 196 times.
✓ Branch 220 taken 4088 times.
✗ Branch 221 not taken.
✓ Branch 222 taken 174342 times.
✓ Branch 223 taken 8349 times.
✓ Branch 224 taken 59 times.
✓ Branch 225 taken 12 times.
✓ Branch 226 taken 12264 times.
✓ Branch 227 taken 463 times.
✓ Branch 228 taken 76 times.
✓ Branch 229 taken 3 times.
✓ Branch 230 taken 447980 times.
✓ Branch 231 taken 757 times.
✓ Branch 232 taken 56 times.
✓ Branch 233 taken 9 times.
✓ Branch 234 taken 139776 times.
✓ Branch 235 taken 192 times.
✓ Branch 236 taken 1 times.
✗ Branch 237 not taken.
✓ Branch 238 taken 220615 times.
✓ Branch 239 taken 440 times.
✓ Branch 240 taken 56 times.
✓ Branch 241 taken 8 times.
✓ Branch 242 taken 98112 times.
✓ Branch 243 taken 192 times.
✗ Branch 244 not taken.
✓ Branch 245 taken 1 times.
✓ Branch 246 taken 794081 times.
✓ Branch 247 taken 3744 times.
✓ Branch 248 taken 2338 times.
✓ Branch 249 taken 2 times.
✗ Branch 250 not taken.
✓ Branch 251 taken 4 times.
✓ Branch 252 taken 3 times.
✓ Branch 253 taken 1 times.
✗ Branch 254 not taken.
✓ Branch 255 taken 3 times.
✓ Branch 256 taken 3 times.
✗ Branch 257 not taken.
✗ Branch 258 not taken.
✓ Branch 259 taken 3 times.
✓ Branch 260 taken 3 times.
✗ Branch 261 not taken.
✗ Branch 262 not taken.
✗ Branch 263 not taken.
✗ Branch 264 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✗ Branch 271 not taken.
✗ Branch 272 not taken.
✗ Branch 273 not taken.
✗ Branch 274 not taken.
✗ Branch 275 not taken.
✗ Branch 276 not taken.
✗ Branch 277 not taken.
✓ Branch 278 taken 23 times.
✗ Branch 279 not taken.
✓ Branch 282 taken 1 times.
✓ Branch 283 taken 38799 times.
✓ Branch 286 taken 927432 times.
✓ Branch 287 taken 79775 times.
✓ Branch 288 taken 232 times.
✓ Branch 289 taken 2875 times.
✗ Branch 291 not taken.
✗ Branch 292 not taken.
|
99126785 | operator IntType() const { return mIndex; } |
168 | |||
169 | /// Needed to support the <tt>(zeroVal<PointIndex>() + val)</tt> idiom. | ||
170 | template<typename T> | ||
171 | 1272310 | PointIndex operator+(T x) { return PointIndex(mIndex + IntType(x)); } | |
172 | |||
173 | private: | ||
174 | IntType mIndex; | ||
175 | }; | ||
176 | |||
177 | |||
178 | using PointIndex32 = PointIndex<Index32, 0>; | ||
179 | using PointIndex64 = PointIndex<Index64, 0>; | ||
180 | |||
181 | using PointDataIndex32 = PointIndex<Index32, 1>; | ||
182 | using PointDataIndex64 = PointIndex<Index64, 1>; | ||
183 | |||
184 | |||
185 | //////////////////////////////////////// | ||
186 | |||
187 | |||
188 | /// @brief Helper metafunction used to determine if the first template | ||
189 | /// parameter is a specialization of the class template given in the second | ||
190 | /// template parameter | ||
191 | template <typename T, template <typename...> class Template> | ||
192 | struct IsSpecializationOf: public std::false_type {}; | ||
193 | |||
194 | template <typename... Args, template <typename...> class Template> | ||
195 | struct IsSpecializationOf<Template<Args...>, Template>: public std::true_type {}; | ||
196 | |||
197 | |||
198 | //////////////////////////////////////// | ||
199 | |||
200 | |||
201 | template<typename T, bool = IsSpecializationOf<T, math::Vec2>::value || | ||
202 | IsSpecializationOf<T, math::Vec3>::value || | ||
203 | IsSpecializationOf<T, math::Vec4>::value> | ||
204 | struct VecTraits | ||
205 | { | ||
206 | static const bool IsVec = true; | ||
207 | static const int Size = T::size; | ||
208 | using ElementType = typename T::ValueType; | ||
209 | }; | ||
210 | |||
211 | template<typename T> | ||
212 | struct VecTraits<T, false> | ||
213 | { | ||
214 | static const bool IsVec = false; | ||
215 | static const int Size = 1; | ||
216 | using ElementType = T; | ||
217 | }; | ||
218 | |||
219 | template<typename T, bool = IsSpecializationOf<T, math::Quat>::value> | ||
220 | struct QuatTraits | ||
221 | { | ||
222 | static const bool IsQuat = true; | ||
223 | static const int Size = T::size; | ||
224 | using ElementType = typename T::ValueType; | ||
225 | }; | ||
226 | |||
227 | template<typename T> | ||
228 | struct QuatTraits<T, false> | ||
229 | { | ||
230 | static const bool IsQuat = false; | ||
231 | static const int Size = 1; | ||
232 | using ElementType = T; | ||
233 | }; | ||
234 | |||
235 | template<typename T, bool = IsSpecializationOf<T, math::Mat3>::value || | ||
236 | IsSpecializationOf<T, math::Mat4>::value> | ||
237 | struct MatTraits | ||
238 | { | ||
239 | static const bool IsMat = true; | ||
240 | static const int Size = T::size; | ||
241 | using ElementType = typename T::ValueType; | ||
242 | }; | ||
243 | |||
244 | template<typename T> | ||
245 | struct MatTraits<T, false> | ||
246 | { | ||
247 | static const bool IsMat = false; | ||
248 | static const int Size = 1; | ||
249 | using ElementType = T; | ||
250 | }; | ||
251 | |||
252 | template<typename T, bool = VecTraits<T>::IsVec || | ||
253 | QuatTraits<T>::IsQuat || | ||
254 | MatTraits<T>::IsMat> | ||
255 | struct ValueTraits | ||
256 | { | ||
257 | static const bool IsVec = VecTraits<T>::IsVec; | ||
258 | static const bool IsQuat = QuatTraits<T>::IsQuat; | ||
259 | static const bool IsMat = MatTraits<T>::IsMat; | ||
260 | static const bool IsScalar = false; | ||
261 | static const int Size = T::size; | ||
262 | static const int Elements = IsMat ? Size*Size : Size; | ||
263 | using ElementType = typename T::ValueType; | ||
264 | }; | ||
265 | |||
266 | template<typename T> | ||
267 | struct ValueTraits<T, false> | ||
268 | { | ||
269 | static const bool IsVec = false; | ||
270 | static const bool IsQuat = false; | ||
271 | static const bool IsMat = false; | ||
272 | static const bool IsScalar = true; | ||
273 | static const int Size = 1; | ||
274 | static const int Elements = 1; | ||
275 | using ElementType = T; | ||
276 | }; | ||
277 | |||
278 | |||
279 | /// @brief Conversion classes for changing the underlying type of VDB types | ||
280 | /// @{ | ||
281 | template<typename T, typename SubT> struct ConvertElementType { using Type = SubT; }; | ||
282 | template<typename T, typename SubT> struct ConvertElementType<math::Vec2<T>, SubT> { using Type = math::Vec2<SubT>; }; | ||
283 | template<typename T, typename SubT> struct ConvertElementType<math::Vec3<T>, SubT> { using Type = math::Vec3<SubT>; }; | ||
284 | template<typename T, typename SubT> struct ConvertElementType<math::Vec4<T>, SubT> { using Type = math::Vec4<SubT>; }; | ||
285 | template<typename T, typename SubT> struct ConvertElementType<math::Quat<T>, SubT> { using Type = math::Quat<SubT>; }; | ||
286 | template<typename T, typename SubT> struct ConvertElementType<math::Mat3<T>, SubT> { using Type = math::Mat3<SubT>; }; | ||
287 | template<typename T, typename SubT> struct ConvertElementType<math::Mat4<T>, SubT> { using Type = math::Mat4<SubT>; }; | ||
288 | /// @} | ||
289 | |||
290 | namespace types_internal | ||
291 | { | ||
292 | template <size_t Bits, bool Signed> struct int_t; | ||
293 | template <> struct int_t<8ul, true> { using type = int8_t; }; | ||
294 | template <> struct int_t<16ul, true> { using type = int16_t; }; | ||
295 | template <> struct int_t<32ul, true> { using type = int32_t; }; | ||
296 | template <> struct int_t<64ul, true> { using type = int64_t; }; | ||
297 | template <> struct int_t<8ul, false> { using type = uint8_t; }; | ||
298 | template <> struct int_t<16ul, false> { using type = uint16_t; }; | ||
299 | template <> struct int_t<32ul, false> { using type = uint32_t; }; | ||
300 | template <> struct int_t<64ul, false> { using type = uint64_t; }; | ||
301 | |||
302 | template <size_t Bits> struct flt_t; | ||
303 | template <> struct flt_t<16ul> { using type = math::half; }; | ||
304 | template <> struct flt_t<32ul> { using type = float; }; | ||
305 | template <> struct flt_t<64ul> { using type = double; }; | ||
306 | } | ||
307 | |||
308 | /// @brief Promotion classes which provide an interface for elevating and | ||
309 | /// demoting a scalar or VDB type to a higher or lower precision. Integer | ||
310 | /// types preserve their sign. Types promotion are only valid between | ||
311 | /// 8 to 64 bits (long doubles are not supported). | ||
312 | /// @{ | ||
313 | template<typename T> | ||
314 | struct PromoteType | ||
315 | { | ||
316 | private: | ||
317 | template <size_t bits> | ||
318 | using TypeT = typename std::conditional<std::is_integral<T>::value, | ||
319 | types_internal::int_t<bits, std::is_signed<T>::value>, | ||
320 | types_internal::flt_t<std::max(size_t(16), bits)>>::type; | ||
321 | public: | ||
322 | static_assert(sizeof(T) <= 8ul, "Unsupported source type for promotion"); | ||
323 | |||
324 | #define OPENVDB_TARGET_BITS(SHIFT, PROMOTE) \ | ||
325 | std::max(size_t(8), \ | ||
326 | std::min(size_t(64), (PROMOTE ? size_t(8)*(sizeof(T)<<SHIFT) : \ | ||
327 | size_t(8)*(sizeof(T)>>SHIFT)))) | ||
328 | template <size_t Shift = ~0UL> using Promote = typename TypeT<OPENVDB_TARGET_BITS(Shift, true)>::type; | ||
329 | template <size_t Shift = ~0UL> using Demote = typename TypeT<OPENVDB_TARGET_BITS(Shift, false)>::type; | ||
330 | #undef OPENVDB_TARGET_BITS | ||
331 | |||
332 | using Highest = typename TypeT<64ul>::type; | ||
333 | using Lowest = typename TypeT<8ul>::type; | ||
334 | using Next = Promote<1>; | ||
335 | using Previous = Demote<1>; | ||
336 | }; | ||
337 | |||
338 | template <typename T, template <typename> class ContainerT> | ||
339 | struct PromoteContainerType | ||
340 | { | ||
341 | template <size_t Shift = ~0UL> using Promote = ContainerT<typename PromoteType<T>::template Promote<Shift>>; | ||
342 | template <size_t Shift = ~0UL> using Demote = ContainerT<typename PromoteType<T>::template Demote<Shift>>; | ||
343 | using Highest = ContainerT<typename PromoteType<T>::Highest>; | ||
344 | using Lowest = ContainerT<typename PromoteType<T>::Lowest>; | ||
345 | using Next = ContainerT<typename PromoteType<T>::Next>; | ||
346 | using Previous = ContainerT<typename PromoteType<T>::Previous>; | ||
347 | }; | ||
348 | |||
349 | template<typename T> struct PromoteType<math::Vec2<T>> : public PromoteContainerType<T, math::Vec2> {}; | ||
350 | template<typename T> struct PromoteType<math::Vec3<T>> : public PromoteContainerType<T, math::Vec3> {}; | ||
351 | template<typename T> struct PromoteType<math::Vec4<T>> : public PromoteContainerType<T, math::Vec4> {}; | ||
352 | template<typename T> struct PromoteType<math::Quat<T>> : public PromoteContainerType<T, math::Quat> {}; | ||
353 | template<typename T> struct PromoteType<math::Mat3<T>> : public PromoteContainerType<T, math::Mat3> {}; | ||
354 | template<typename T> struct PromoteType<math::Mat4<T>> : public PromoteContainerType<T, math::Mat4> {}; | ||
355 | /// @} | ||
356 | |||
357 | |||
358 | //////////////////////////////////////// | ||
359 | |||
360 | |||
361 | /// @brief CanConvertType<FromType, ToType>::value is @c true if a value | ||
362 | /// of type @a ToType can be constructed from a value of type @a FromType. | ||
363 | template<typename FromType, typename ToType> | ||
364 | struct CanConvertType { enum { value = std::is_constructible<ToType, FromType>::value }; }; | ||
365 | |||
366 | // Specializations for vector types, which can be constructed from values | ||
367 | // of their own ValueTypes (or values that can be converted to their ValueTypes), | ||
368 | // but only explicitly | ||
369 | template<typename T> struct CanConvertType<T, math::Vec2<T> > { enum { value = true }; }; | ||
370 | template<typename T> struct CanConvertType<T, math::Vec3<T> > { enum { value = true }; }; | ||
371 | template<typename T> struct CanConvertType<T, math::Vec4<T> > { enum { value = true }; }; | ||
372 | template<typename T> struct CanConvertType<math::Vec2<T>, math::Vec2<T> > { enum {value = true}; }; | ||
373 | template<typename T> struct CanConvertType<math::Vec3<T>, math::Vec3<T> > { enum {value = true}; }; | ||
374 | template<typename T> struct CanConvertType<math::Vec4<T>, math::Vec4<T> > { enum {value = true}; }; | ||
375 | template<typename T0, typename T1> | ||
376 | struct CanConvertType<T0, math::Vec2<T1> > { enum { value = CanConvertType<T0, T1>::value }; }; | ||
377 | template<typename T0, typename T1> | ||
378 | struct CanConvertType<T0, math::Vec3<T1> > { enum { value = CanConvertType<T0, T1>::value }; }; | ||
379 | template<typename T0, typename T1> | ||
380 | struct CanConvertType<T0, math::Vec4<T1> > { enum { value = CanConvertType<T0, T1>::value }; }; | ||
381 | template<> struct CanConvertType<PointIndex32, PointDataIndex32> { enum {value = true}; }; | ||
382 | template<> struct CanConvertType<PointDataIndex32, PointIndex32> { enum {value = true}; }; | ||
383 | template<typename T> | ||
384 | struct CanConvertType<T, ValueMask> { enum {value = CanConvertType<T, bool>::value}; }; | ||
385 | template<typename T> | ||
386 | struct CanConvertType<ValueMask, T> { enum {value = CanConvertType<bool, T>::value}; }; | ||
387 | |||
388 | |||
389 | //////////////////////////////////////// | ||
390 | |||
391 | |||
392 | /// @brief CopyConstness<T1, T2>::Type is either <tt>const T2</tt> | ||
393 | /// or @c T2 with no @c const qualifier, depending on whether @c T1 is @c const. | ||
394 | /// @details For example, | ||
395 | /// - CopyConstness<int, int>::Type is @c int | ||
396 | /// - CopyConstness<int, const int>::Type is @c int | ||
397 | /// - CopyConstness<const int, int>::Type is <tt>const int</tt> | ||
398 | /// - CopyConstness<const int, const int>::Type is <tt>const int</tt> | ||
399 | template<typename FromType, typename ToType> struct CopyConstness { | ||
400 | using Type = typename std::remove_const<ToType>::type; | ||
401 | }; | ||
402 | |||
403 | /// @cond OPENVDB_DOCS_INTERNAL | ||
404 | template<typename FromType, typename ToType> struct CopyConstness<const FromType, ToType> { | ||
405 | using Type = const ToType; | ||
406 | }; | ||
407 | /// @endcond | ||
408 | |||
409 | |||
410 | //////////////////////////////////////// | ||
411 | |||
412 | |||
413 | // Add new items to the *end* of this list, and update NUM_GRID_CLASSES. | ||
414 | enum GridClass { | ||
415 | GRID_UNKNOWN = 0, | ||
416 | GRID_LEVEL_SET, | ||
417 | GRID_FOG_VOLUME, | ||
418 | GRID_STAGGERED | ||
419 | }; | ||
420 | enum { NUM_GRID_CLASSES = GRID_STAGGERED + 1 }; | ||
421 | |||
422 | static const Real LEVEL_SET_HALF_WIDTH = 3; | ||
423 | |||
424 | /// The type of a vector determines how transforms are applied to it: | ||
425 | /// <dl> | ||
426 | /// <dt><b>Invariant</b> | ||
427 | /// <dd>Does not transform (e.g., tuple, uvw, color) | ||
428 | /// | ||
429 | /// <dt><b>Covariant</b> | ||
430 | /// <dd>Apply inverse-transpose transformation: @e w = 0, ignores translation | ||
431 | /// (e.g., gradient/normal) | ||
432 | /// | ||
433 | /// <dt><b>Covariant Normalize</b> | ||
434 | /// <dd>Apply inverse-transpose transformation: @e w = 0, ignores translation, | ||
435 | /// vectors are renormalized (e.g., unit normal) | ||
436 | /// | ||
437 | /// <dt><b>Contravariant Relative</b> | ||
438 | /// <dd>Apply "regular" transformation: @e w = 0, ignores translation | ||
439 | /// (e.g., displacement, velocity, acceleration) | ||
440 | /// | ||
441 | /// <dt><b>Contravariant Absolute</b> | ||
442 | /// <dd>Apply "regular" transformation: @e w = 1, vector translates (e.g., position) | ||
443 | /// </dl> | ||
444 | enum VecType { | ||
445 | VEC_INVARIANT = 0, | ||
446 | VEC_COVARIANT, | ||
447 | VEC_COVARIANT_NORMALIZE, | ||
448 | VEC_CONTRAVARIANT_RELATIVE, | ||
449 | VEC_CONTRAVARIANT_ABSOLUTE | ||
450 | }; | ||
451 | enum { NUM_VEC_TYPES = VEC_CONTRAVARIANT_ABSOLUTE + 1 }; | ||
452 | |||
453 | |||
454 | /// Specify how grids should be merged during certain (typically multithreaded) operations. | ||
455 | /// <dl> | ||
456 | /// <dt><b>MERGE_ACTIVE_STATES</b> | ||
457 | /// <dd>The output grid is active wherever any of the input grids is active. | ||
458 | /// | ||
459 | /// <dt><b>MERGE_NODES</b> | ||
460 | /// <dd>The output grid's tree has a node wherever any of the input grids' trees | ||
461 | /// has a node, regardless of any active states. | ||
462 | /// | ||
463 | /// <dt><b>MERGE_ACTIVE_STATES_AND_NODES</b> | ||
464 | /// <dd>The output grid is active wherever any of the input grids is active, | ||
465 | /// and its tree has a node wherever any of the input grids' trees has a node. | ||
466 | /// </dl> | ||
467 | enum MergePolicy { | ||
468 | MERGE_ACTIVE_STATES = 0, | ||
469 | MERGE_NODES, | ||
470 | MERGE_ACTIVE_STATES_AND_NODES | ||
471 | }; | ||
472 | |||
473 | |||
474 | //////////////////////////////////////// | ||
475 | |||
476 | |||
477 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
|
6 | template<typename T> const char* typeNameAsString() { return typeid(T).name(); } |
478 | template<> inline const char* typeNameAsString<bool>() { return "bool"; } | ||
479 | template<> inline const char* typeNameAsString<ValueMask>() { return "mask"; } | ||
480 | template<> inline const char* typeNameAsString<math::half>() { return "half"; } | ||
481 | template<> inline const char* typeNameAsString<float>() { return "float"; } | ||
482 | template<> inline const char* typeNameAsString<double>() { return "double"; } | ||
483 | template<> inline const char* typeNameAsString<int8_t>() { return "int8"; } | ||
484 | template<> inline const char* typeNameAsString<uint8_t>() { return "uint8"; } | ||
485 | template<> inline const char* typeNameAsString<int16_t>() { return "int16"; } | ||
486 | template<> inline const char* typeNameAsString<uint16_t>() { return "uint16"; } | ||
487 | template<> inline const char* typeNameAsString<int32_t>() { return "int32"; } | ||
488 | template<> inline const char* typeNameAsString<uint32_t>() { return "uint32"; } | ||
489 | template<> inline const char* typeNameAsString<int64_t>() { return "int64"; } | ||
490 | template<> inline const char* typeNameAsString<Vec2i>() { return "vec2i"; } | ||
491 | template<> inline const char* typeNameAsString<Vec2s>() { return "vec2s"; } | ||
492 | template<> inline const char* typeNameAsString<Vec2d>() { return "vec2d"; } | ||
493 | template<> inline const char* typeNameAsString<Vec3U8>() { return "vec3u8"; } | ||
494 | template<> inline const char* typeNameAsString<Vec3U16>() { return "vec3u16"; } | ||
495 | template<> inline const char* typeNameAsString<Vec3i>() { return "vec3i"; } | ||
496 | template<> inline const char* typeNameAsString<Vec3f>() { return "vec3s"; } | ||
497 | template<> inline const char* typeNameAsString<Vec3d>() { return "vec3d"; } | ||
498 | template<> inline const char* typeNameAsString<Vec4i>() { return "vec4i"; } | ||
499 | template<> inline const char* typeNameAsString<Vec4f>() { return "vec4s"; } | ||
500 | template<> inline const char* typeNameAsString<Vec4d>() { return "vec4d"; } | ||
501 | template<> inline const char* typeNameAsString<std::string>() { return "string"; } | ||
502 | template<> inline const char* typeNameAsString<Mat3s>() { return "mat3s"; } | ||
503 | template<> inline const char* typeNameAsString<Mat3d>() { return "mat3d"; } | ||
504 | template<> inline const char* typeNameAsString<Mat4s>() { return "mat4s"; } | ||
505 | template<> inline const char* typeNameAsString<Mat4d>() { return "mat4d"; } | ||
506 | template<> inline const char* typeNameAsString<math::Quats>() { return "quats"; } | ||
507 | template<> inline const char* typeNameAsString<math::Quatd>() { return "quatd"; } | ||
508 | template<> inline const char* typeNameAsString<PointIndex32>() { return "ptidx32"; } | ||
509 | template<> inline const char* typeNameAsString<PointIndex64>() { return "ptidx64"; } | ||
510 | template<> inline const char* typeNameAsString<PointDataIndex32>() { return "ptdataidx32"; } | ||
511 | template<> inline const char* typeNameAsString<PointDataIndex64>() { return "ptdataidx64"; } | ||
512 | |||
513 | |||
514 | //////////////////////////////////////// | ||
515 | |||
516 | |||
517 | /// @brief This struct collects both input and output arguments to "grid combiner" functors | ||
518 | /// used with the tree::TypedGrid::combineExtended() and combine2Extended() methods. | ||
519 | /// AValueType and BValueType are the value types of the two grids being combined. | ||
520 | /// | ||
521 | /// @see openvdb/tree/Tree.h for usage information. | ||
522 | /// | ||
523 | /// Setter methods return references to this object, to facilitate the following usage: | ||
524 | /// @code | ||
525 | /// CombineArgs<float> args; | ||
526 | /// myCombineOp(args.setARef(aVal).setBRef(bVal).setAIsActive(true).setBIsActive(false)); | ||
527 | /// @endcode | ||
528 | template<typename AValueType, typename BValueType = AValueType> | ||
529 | class CombineArgs | ||
530 | { | ||
531 | public: | ||
532 | using AValueT = AValueType; | ||
533 | using BValueT = BValueType; | ||
534 | |||
535 | 870 | CombineArgs() | |
536 | : mAValPtr(nullptr) | ||
537 | , mBValPtr(nullptr) | ||
538 | , mResultValPtr(&mResultVal) | ||
539 | , mAIsActive(false) | ||
540 | , mBIsActive(false) | ||
541 |
12/21✓ Branch 0 taken 370 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 303 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 20 not taken.
✓ Branch 22 taken 14 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 13 times.
✗ Branch 26 not taken.
|
870 | , mResultIsActive(false) |
542 | { | ||
543 | } | ||
544 | |||
545 | /// Use this constructor when the result value is stored externally. | ||
546 | 300017 | CombineArgs(const AValueType& a, const BValueType& b, AValueType& result, | |
547 | bool aOn = false, bool bOn = false) | ||
548 | : mAValPtr(&a) | ||
549 | , mBValPtr(&b) | ||
550 | , mResultValPtr(&result) | ||
551 | , mAIsActive(aOn) | ||
552 | 300017 | , mBIsActive(bOn) | |
553 | { | ||
554 | this->updateResultActive(); | ||
555 | } | ||
556 | |||
557 | /// Use this constructor when the result value should be stored in this struct. | ||
558 | CombineArgs(const AValueType& a, const BValueType& b, bool aOn = false, bool bOn = false) | ||
559 | : mAValPtr(&a) | ||
560 | , mBValPtr(&b) | ||
561 | , mResultValPtr(&mResultVal) | ||
562 | , mAIsActive(aOn) | ||
563 | , mBIsActive(bOn) | ||
564 | { | ||
565 | this->updateResultActive(); | ||
566 | } | ||
567 | |||
568 | /// Get the A input value. | ||
569 |
4/4✓ Branch 0 taken 74743 times.
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 74743 times.
✓ Branch 3 taken 7 times.
|
1813784 | const AValueType& a() const { return *mAValPtr; } |
570 | /// Get the B input value. | ||
571 |
11/48✓ Branch 0 taken 71564 times.
✓ Branch 1 taken 572868 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 37375 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 37375 times.
✓ Branch 16 taken 74743 times.
✓ Branch 17 taken 7 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 37375 times.
✓ Branch 27 taken 37375 times.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✓ Branch 52 taken 37375 times.
✓ Branch 53 taken 37375 times.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 1 times.
|
1096005 | const BValueType& b() const { return *mBValPtr; } |
572 | //@{ | ||
573 | /// Get the output value. | ||
574 | const AValueType& result() const { return *mResultValPtr; } | ||
575 |
19/126✓ Branch 0 taken 3 times.
✓ Branch 1 taken 19805 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 12276 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 163835 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 98301 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 4095 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 4076 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✓ Branch 50 taken 8190 times.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 1 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✓ Branch 67 taken 1 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✓ Branch 74 taken 1 times.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✓ Branch 81 taken 1 times.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✓ Branch 85 taken 36862 times.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✓ Branch 91 taken 81907 times.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
✗ Branch 96 not taken.
✓ Branch 97 taken 53235 times.
✗ Branch 98 not taken.
✗ Branch 99 not taken.
✗ Branch 100 not taken.
✗ Branch 101 not taken.
✗ Branch 103 not taken.
✓ Branch 104 taken 65534 times.
✗ Branch 105 not taken.
✗ Branch 106 not taken.
✗ Branch 108 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✓ Branch 111 taken 32767 times.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 114 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✓ Branch 117 taken 393204 times.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 120 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✓ Branch 123 taken 425971 times.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 126 not taken.
✗ Branch 127 not taken.
|
1547552 | AValueType& result() { return *mResultValPtr; } |
576 | //@} | ||
577 | |||
578 | /// Set the output value. | ||
579 | 1701666 | CombineArgs& setResult(const AValueType& val) { *mResultValPtr = val; return *this; } | |
580 | |||
581 | /// Redirect the A value to a new external source. | ||
582 |
0/26✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
|
2000625 | CombineArgs& setARef(const AValueType& a) { mAValPtr = &a; return *this; } |
583 | /// Redirect the B value to a new external source. | ||
584 |
10/54✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 6 taken 4 times.
✗ Branch 7 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 1 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✓ Branch 44 taken 1 times.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 56 taken 1 times.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✓ Branch 61 taken 2 times.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✓ Branch 68 taken 1 times.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✓ Branch 73 taken 12 times.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✓ Branch 78 taken 13 times.
✗ Branch 79 not taken.
|
1535273 | CombineArgs& setBRef(const BValueType& b) { mBValPtr = &b; return *this; } |
585 | /// Redirect the result value to a new external destination. | ||
586 |
2/4✓ Branch 15 taken 10 times.
✓ Branch 16 taken 1014 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
369152 | CombineArgs& setResultRef(AValueType& val) { mResultValPtr = &val; return *this; } |
587 | |||
588 | /// @return true if the A value is active | ||
589 |
4/4✓ Branch 0 taken 74743 times.
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 74743 times.
✓ Branch 3 taken 7 times.
|
450541 | bool aIsActive() const { return mAIsActive; } |
590 | /// @return true if the B value is active | ||
591 |
4/4✓ Branch 0 taken 3 times.
✓ Branch 1 taken 74740 times.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 74740 times.
|
450527 | bool bIsActive() const { return mBIsActive; } |
592 | /// @return true if the output value is active | ||
593 |
48/164✓ Branch 0 taken 3033 times.
✓ Branch 1 taken 3623 times.
✓ Branch 2 taken 70148 times.
✓ Branch 3 taken 119292 times.
✓ Branch 4 taken 62309 times.
✓ Branch 5 taken 92827 times.
✓ Branch 6 taken 6 times.
✓ Branch 7 taken 20314 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 12276 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 3 times.
✓ Branch 13 taken 164344 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 98301 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 3 times.
✓ Branch 19 taken 509 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 4095 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 4095 times.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✓ Branch 36 taken 5 times.
✓ Branch 37 taken 4602 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✓ Branch 42 taken 4662 times.
✓ Branch 43 taken 9673 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✓ Branch 48 taken 10 times.
✓ Branch 49 taken 1014 times.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✓ Branch 54 taken 10 times.
✓ Branch 55 taken 1014 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 32767 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 65 taken 32767 times.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✓ Branch 71 taken 32767 times.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✓ Branch 77 taken 32767 times.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
✓ Branch 82 taken 3 times.
✓ Branch 83 taken 509 times.
✗ Branch 84 not taken.
✓ Branch 85 taken 4095 times.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✓ Branch 88 taken 60 times.
✓ Branch 89 taken 6084 times.
✗ Branch 90 not taken.
✓ Branch 91 taken 4076 times.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✓ Branch 94 taken 65 times.
✓ Branch 95 taken 6591 times.
✗ Branch 96 not taken.
✗ Branch 97 not taken.
✗ Branch 98 not taken.
✗ Branch 99 not taken.
✗ Branch 100 not taken.
✓ Branch 101 taken 8190 times.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✗ Branch 105 not taken.
✗ Branch 106 not taken.
✓ Branch 107 taken 8190 times.
✗ Branch 108 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 111 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 114 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✓ Branch 117 taken 4095 times.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 120 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✓ Branch 123 taken 49140 times.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 126 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✓ Branch 129 taken 53235 times.
✗ Branch 130 not taken.
✗ Branch 131 not taken.
✗ Branch 132 not taken.
✓ Branch 133 taken 32767 times.
✗ Branch 134 not taken.
✓ Branch 135 taken 65534 times.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 138 not taken.
✓ Branch 139 taken 32767 times.
✗ Branch 140 not taken.
✓ Branch 141 taken 65534 times.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✗ Branch 144 not taken.
✗ Branch 145 not taken.
✗ Branch 146 not taken.
✓ Branch 147 taken 32767 times.
✗ Branch 148 not taken.
✗ Branch 149 not taken.
✗ Branch 150 not taken.
✗ Branch 151 not taken.
✗ Branch 152 not taken.
✓ Branch 153 taken 393204 times.
✗ Branch 154 not taken.
✗ Branch 155 not taken.
✗ Branch 156 not taken.
✗ Branch 157 not taken.
✗ Branch 158 not taken.
✓ Branch 159 taken 425971 times.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 162 not taken.
✗ Branch 163 not taken.
|
2000113 | bool resultIsActive() const { return mResultIsActive; } |
594 | |||
595 | /// Set the active state of the A value. | ||
596 | 1024 | CombineArgs& setAIsActive(bool b) { mAIsActive = b; updateResultActive(); return *this; } | |
597 | /// Set the active state of the B value. | ||
598 | 1656722 | CombineArgs& setBIsActive(bool b) { mBIsActive = b; updateResultActive(); return *this; } | |
599 | /// Set the active state of the output value. | ||
600 |
0/6✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
300529 | CombineArgs& setResultIsActive(bool b) { mResultIsActive = b; return *this; } |
601 | |||
602 | protected: | ||
603 | /// By default, the result value is active if either of the input values is active, | ||
604 | /// but this behavior can be overridden by calling setResultIsActive(). | ||
605 |
194/726✓ Branch 0 taken 5548 times.
✓ Branch 1 taken 1620 times.
✓ Branch 2 taken 3966 times.
✓ Branch 3 taken 1634 times.
✓ Branch 4 taken 358 times.
✓ Branch 5 taken 5190 times.
✓ Branch 6 taken 1568 times.
✓ Branch 7 taken 3571 times.
✓ Branch 8 taken 1517 times.
✓ Branch 10 taken 370 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 119292 times.
✓ Branch 13 taken 70148 times.
✓ Branch 14 taken 119292 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 303 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 92827 times.
✓ Branch 20 taken 62309 times.
✓ Branch 21 taken 92827 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 20315 times.
✓ Branch 25 taken 5 times.
✓ Branch 26 taken 20312 times.
✓ Branch 27 taken 3 times.
✓ Branch 29 taken 20315 times.
✓ Branch 30 taken 5 times.
✓ Branch 31 taken 20314 times.
✓ Branch 32 taken 1 times.
✓ Branch 34 taken 12276 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 12276 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 12276 times.
✗ Branch 39 not taken.
✓ Branch 41 taken 300017 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 229869 times.
✓ Branch 44 taken 70148 times.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✓ Branch 48 taken 510 times.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 509 times.
✓ Branch 51 taken 1 times.
✓ Branch 52 taken 163835 times.
✓ Branch 53 taken 510 times.
✓ Branch 54 taken 163837 times.
✓ Branch 55 taken 509 times.
✓ Branch 56 taken 1 times.
✓ Branch 57 taken 163835 times.
✗ Branch 58 not taken.
✓ Branch 59 taken 163835 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✓ Branch 62 taken 98301 times.
✗ Branch 63 not taken.
✓ Branch 64 taken 98301 times.
✗ Branch 65 not taken.
✓ Branch 66 taken 98301 times.
✗ Branch 67 not taken.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✓ Branch 72 taken 510 times.
✓ Branch 73 taken 2 times.
✓ Branch 74 taken 509 times.
✓ Branch 75 taken 1 times.
✗ Branch 76 not taken.
✓ Branch 77 taken 510 times.
✓ Branch 78 taken 2 times.
✓ Branch 79 taken 509 times.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✗ Branch 94 not taken.
✓ Branch 96 taken 4095 times.
✗ Branch 97 not taken.
✓ Branch 98 taken 4095 times.
✗ Branch 99 not taken.
✓ Branch 101 taken 4095 times.
✗ Branch 102 not taken.
✓ Branch 103 taken 4095 times.
✗ Branch 104 not taken.
✗ Branch 106 not taken.
✗ Branch 107 not taken.
✗ Branch 108 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 111 not taken.
✗ Branch 113 not taken.
✗ Branch 114 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 117 not taken.
✗ Branch 118 not taken.
✗ Branch 119 not taken.
✗ Branch 120 not taken.
✗ Branch 121 not taken.
✗ Branch 122 not taken.
✓ Branch 123 taken 4095 times.
✗ Branch 124 not taken.
✓ Branch 125 taken 4095 times.
✗ Branch 126 not taken.
✗ Branch 127 not taken.
✓ Branch 128 taken 4095 times.
✗ Branch 129 not taken.
✓ Branch 130 taken 4095 times.
✗ Branch 131 not taken.
✗ Branch 132 not taken.
✗ Branch 133 not taken.
✗ Branch 134 not taken.
✗ Branch 135 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 138 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 141 not taken.
✗ Branch 142 not taken.
✗ Branch 143 not taken.
✓ Branch 144 taken 507 times.
✓ Branch 145 taken 5 times.
✓ Branch 146 taken 505 times.
✓ Branch 147 taken 2 times.
✗ Branch 148 not taken.
✓ Branch 149 taken 507 times.
✓ Branch 150 taken 4100 times.
✓ Branch 151 taken 507 times.
✓ Branch 152 taken 4095 times.
✗ Branch 153 not taken.
✗ Branch 154 not taken.
✓ Branch 155 taken 4095 times.
✗ Branch 156 not taken.
✓ Branch 157 taken 4095 times.
✗ Branch 158 not taken.
✗ Branch 159 not taken.
✗ Branch 160 not taken.
✗ Branch 161 not taken.
✗ Branch 162 not taken.
✗ Branch 163 not taken.
✗ Branch 164 not taken.
✗ Branch 165 not taken.
✗ Branch 166 not taken.
✗ Branch 167 not taken.
✓ Branch 168 taken 5578 times.
✓ Branch 169 taken 4662 times.
✓ Branch 170 taken 5285 times.
✓ Branch 171 taken 293 times.
✗ Branch 172 not taken.
✓ Branch 173 taken 5578 times.
✓ Branch 174 taken 4662 times.
✓ Branch 175 taken 5578 times.
✗ Branch 176 not taken.
✓ Branch 177 taken 4095 times.
✗ Branch 178 not taken.
✓ Branch 179 taken 4095 times.
✗ Branch 180 not taken.
✗ Branch 181 not taken.
✓ Branch 182 taken 4095 times.
✗ Branch 183 not taken.
✓ Branch 184 taken 4095 times.
✗ Branch 185 not taken.
✗ Branch 186 not taken.
✗ Branch 187 not taken.
✗ Branch 188 not taken.
✗ Branch 189 not taken.
✗ Branch 190 not taken.
✗ Branch 191 not taken.
✗ Branch 192 not taken.
✗ Branch 193 not taken.
✗ Branch 194 not taken.
✗ Branch 195 not taken.
✗ Branch 196 not taken.
✗ Branch 197 not taken.
✗ Branch 198 not taken.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 201 not taken.
✗ Branch 202 not taken.
✗ Branch 203 not taken.
✓ Branch 204 taken 1017 times.
✓ Branch 205 taken 7 times.
✓ Branch 206 taken 1011 times.
✓ Branch 207 taken 6 times.
✓ Branch 209 taken 1017 times.
✓ Branch 210 taken 7 times.
✓ Branch 211 taken 1014 times.
✓ Branch 212 taken 3 times.
✗ Branch 213 not taken.
✗ Branch 214 not taken.
✗ Branch 215 not taken.
✗ Branch 216 not taken.
✗ Branch 217 not taken.
✗ Branch 218 not taken.
✗ Branch 219 not taken.
✗ Branch 220 not taken.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✗ Branch 223 not taken.
✗ Branch 224 not taken.
✗ Branch 225 not taken.
✗ Branch 226 not taken.
✓ Branch 228 taken 1017 times.
✓ Branch 229 taken 7 times.
✓ Branch 230 taken 1011 times.
✓ Branch 231 taken 6 times.
✗ Branch 232 not taken.
✓ Branch 233 taken 1017 times.
✓ Branch 234 taken 7 times.
✓ Branch 235 taken 1014 times.
✓ Branch 236 taken 3 times.
✗ Branch 237 not taken.
✗ Branch 238 not taken.
✗ Branch 239 not taken.
✗ Branch 240 not taken.
✗ Branch 241 not taken.
✗ Branch 242 not taken.
✗ Branch 243 not taken.
✗ Branch 244 not taken.
✗ Branch 245 not taken.
✗ Branch 246 not taken.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✗ Branch 249 not taken.
✗ Branch 250 not taken.
✗ Branch 251 not taken.
✗ Branch 252 not taken.
✗ Branch 253 not taken.
✗ Branch 254 not taken.
✗ Branch 255 not taken.
✓ Branch 256 taken 32767 times.
✗ Branch 257 not taken.
✓ Branch 258 taken 32767 times.
✗ Branch 259 not taken.
✓ Branch 261 taken 32767 times.
✗ Branch 262 not taken.
✓ Branch 263 taken 32767 times.
✗ Branch 264 not taken.
✗ Branch 265 not taken.
✗ Branch 266 not taken.
✗ Branch 267 not taken.
✗ Branch 268 not taken.
✗ Branch 269 not taken.
✗ Branch 270 not taken.
✗ Branch 271 not taken.
✗ Branch 272 not taken.
✗ Branch 273 not taken.
✗ Branch 274 not taken.
✗ Branch 275 not taken.
✗ Branch 276 not taken.
✗ Branch 277 not taken.
✗ Branch 278 not taken.
✗ Branch 279 not taken.
✗ Branch 280 not taken.
✗ Branch 281 not taken.
✗ Branch 282 not taken.
✓ Branch 283 taken 32767 times.
✗ Branch 284 not taken.
✓ Branch 285 taken 32767 times.
✗ Branch 286 not taken.
✗ Branch 287 not taken.
✓ Branch 288 taken 32767 times.
✗ Branch 289 not taken.
✓ Branch 290 taken 32767 times.
✗ Branch 291 not taken.
✗ Branch 292 not taken.
✗ Branch 293 not taken.
✗ Branch 294 not taken.
✗ Branch 295 not taken.
✗ Branch 296 not taken.
✗ Branch 297 not taken.
✗ Branch 298 not taken.
✗ Branch 299 not taken.
✗ Branch 300 not taken.
✗ Branch 301 not taken.
✗ Branch 302 not taken.
✗ Branch 303 not taken.
✗ Branch 304 not taken.
✗ Branch 305 not taken.
✗ Branch 306 not taken.
✗ Branch 307 not taken.
✗ Branch 308 not taken.
✗ Branch 309 not taken.
✓ Branch 310 taken 32767 times.
✗ Branch 311 not taken.
✓ Branch 312 taken 32767 times.
✗ Branch 313 not taken.
✗ Branch 314 not taken.
✓ Branch 315 taken 32767 times.
✗ Branch 316 not taken.
✓ Branch 317 taken 32767 times.
✗ Branch 318 not taken.
✗ Branch 319 not taken.
✗ Branch 320 not taken.
✗ Branch 321 not taken.
✗ Branch 322 not taken.
✗ Branch 323 not taken.
✗ Branch 324 not taken.
✗ Branch 325 not taken.
✗ Branch 327 not taken.
✗ Branch 328 not taken.
✗ Branch 329 not taken.
✗ Branch 330 not taken.
✗ Branch 332 not taken.
✗ Branch 333 not taken.
✗ Branch 334 not taken.
✗ Branch 335 not taken.
✗ Branch 336 not taken.
✓ Branch 337 taken 32767 times.
✗ Branch 338 not taken.
✓ Branch 339 taken 32767 times.
✗ Branch 340 not taken.
✗ Branch 341 not taken.
✓ Branch 342 taken 32767 times.
✗ Branch 343 not taken.
✓ Branch 344 taken 32767 times.
✗ Branch 345 not taken.
✗ Branch 346 not taken.
✗ Branch 347 not taken.
✓ Branch 348 taken 4095 times.
✗ Branch 349 not taken.
✓ Branch 350 taken 4095 times.
✗ Branch 351 not taken.
✗ Branch 352 not taken.
✓ Branch 353 taken 4095 times.
✗ Branch 354 not taken.
✓ Branch 355 taken 4095 times.
✗ Branch 356 not taken.
✗ Branch 357 not taken.
✗ Branch 358 not taken.
✗ Branch 359 not taken.
✗ Branch 360 not taken.
✗ Branch 361 not taken.
✗ Branch 362 not taken.
✗ Branch 363 not taken.
✓ Branch 364 taken 509 times.
✓ Branch 365 taken 3 times.
✓ Branch 366 taken 508 times.
✓ Branch 367 taken 1 times.
✗ Branch 368 not taken.
✓ Branch 369 taken 509 times.
✓ Branch 370 taken 3 times.
✓ Branch 371 taken 509 times.
✗ Branch 372 not taken.
✓ Branch 374 taken 4076 times.
✗ Branch 375 not taken.
✓ Branch 376 taken 4076 times.
✗ Branch 377 not taken.
✗ Branch 378 not taken.
✓ Branch 379 taken 4076 times.
✗ Branch 380 not taken.
✓ Branch 381 taken 4076 times.
✗ Branch 382 not taken.
✗ Branch 383 not taken.
✗ Branch 384 not taken.
✗ Branch 385 not taken.
✗ Branch 386 not taken.
✗ Branch 387 not taken.
✓ Branch 388 taken 6102 times.
✓ Branch 389 taken 42 times.
✓ Branch 390 taken 6066 times.
✓ Branch 391 taken 36 times.
✗ Branch 392 not taken.
✓ Branch 393 taken 6102 times.
✓ Branch 394 taken 42 times.
✓ Branch 395 taken 6084 times.
✓ Branch 396 taken 18 times.
✗ Branch 397 not taken.
✗ Branch 398 not taken.
✗ Branch 399 not taken.
✗ Branch 400 not taken.
✗ Branch 401 not taken.
✗ Branch 402 not taken.
✗ Branch 403 not taken.
✗ Branch 405 not taken.
✗ Branch 406 not taken.
✗ Branch 407 not taken.
✗ Branch 408 not taken.
✗ Branch 409 not taken.
✗ Branch 410 not taken.
✗ Branch 411 not taken.
✓ Branch 412 taken 6609 times.
✓ Branch 413 taken 47 times.
✓ Branch 414 taken 6571 times.
✓ Branch 415 taken 38 times.
✓ Branch 417 taken 6609 times.
✓ Branch 418 taken 47 times.
✓ Branch 419 taken 6591 times.
✓ Branch 420 taken 18 times.
✗ Branch 421 not taken.
✗ Branch 422 not taken.
✗ Branch 423 not taken.
✗ Branch 424 not taken.
✗ Branch 425 not taken.
✗ Branch 426 not taken.
✗ Branch 427 not taken.
✗ Branch 429 not taken.
✗ Branch 430 not taken.
✗ Branch 431 not taken.
✗ Branch 432 not taken.
✗ Branch 433 not taken.
✗ Branch 434 not taken.
✗ Branch 435 not taken.
✓ Branch 436 taken 8190 times.
✗ Branch 437 not taken.
✓ Branch 438 taken 8190 times.
✗ Branch 439 not taken.
✓ Branch 441 taken 8190 times.
✗ Branch 442 not taken.
✓ Branch 443 taken 8190 times.
✗ Branch 444 not taken.
✗ Branch 445 not taken.
✗ Branch 446 not taken.
✗ Branch 447 not taken.
✗ Branch 448 not taken.
✗ Branch 449 not taken.
✗ Branch 450 not taken.
✗ Branch 451 not taken.
✗ Branch 453 not taken.
✗ Branch 454 not taken.
✗ Branch 455 not taken.
✗ Branch 456 not taken.
✗ Branch 457 not taken.
✗ Branch 458 not taken.
✗ Branch 459 not taken.
✗ Branch 460 not taken.
✗ Branch 461 not taken.
✓ Branch 462 taken 8190 times.
✗ Branch 463 not taken.
✓ Branch 464 taken 8190 times.
✗ Branch 465 not taken.
✗ Branch 466 not taken.
✓ Branch 467 taken 8190 times.
✗ Branch 468 not taken.
✓ Branch 469 taken 8190 times.
✗ Branch 470 not taken.
✗ Branch 471 not taken.
✓ Branch 472 taken 8190 times.
✗ Branch 473 not taken.
✗ Branch 474 not taken.
✗ Branch 475 not taken.
✗ Branch 476 not taken.
✗ Branch 477 not taken.
✗ Branch 478 not taken.
✗ Branch 479 not taken.
✗ Branch 480 not taken.
✗ Branch 481 not taken.
✗ Branch 482 not taken.
✗ Branch 483 not taken.
✗ Branch 484 not taken.
✗ Branch 485 not taken.
✗ Branch 486 not taken.
✗ Branch 487 not taken.
✗ Branch 488 not taken.
✗ Branch 489 not taken.
✗ Branch 490 not taken.
✗ Branch 491 not taken.
✗ Branch 492 not taken.
✗ Branch 493 not taken.
✗ Branch 494 not taken.
✗ Branch 495 not taken.
✗ Branch 496 not taken.
✗ Branch 497 not taken.
✗ Branch 498 not taken.
✗ Branch 499 not taken.
✗ Branch 500 not taken.
✗ Branch 501 not taken.
✗ Branch 502 not taken.
✗ Branch 503 not taken.
✗ Branch 504 not taken.
✗ Branch 505 not taken.
✗ Branch 506 not taken.
✗ Branch 507 not taken.
✗ Branch 508 not taken.
✗ Branch 509 not taken.
✗ Branch 510 not taken.
✗ Branch 511 not taken.
✗ Branch 512 not taken.
✗ Branch 513 not taken.
✗ Branch 514 not taken.
✗ Branch 515 not taken.
✗ Branch 516 not taken.
✗ Branch 517 not taken.
✗ Branch 518 not taken.
✗ Branch 519 not taken.
✗ Branch 520 not taken.
✗ Branch 521 not taken.
✗ Branch 522 not taken.
✗ Branch 523 not taken.
✗ Branch 524 not taken.
✗ Branch 525 not taken.
✗ Branch 526 not taken.
✗ Branch 527 not taken.
✗ Branch 528 not taken.
✗ Branch 529 not taken.
✗ Branch 530 not taken.
✗ Branch 531 not taken.
✗ Branch 532 not taken.
✗ Branch 533 not taken.
✗ Branch 534 not taken.
✓ Branch 535 taken 4095 times.
✗ Branch 536 not taken.
✓ Branch 537 taken 4095 times.
✗ Branch 538 not taken.
✗ Branch 539 not taken.
✓ Branch 540 taken 4095 times.
✗ Branch 541 not taken.
✓ Branch 542 taken 4095 times.
✗ Branch 543 not taken.
✓ Branch 544 taken 32767 times.
✗ Branch 545 not taken.
✓ Branch 546 taken 32767 times.
✗ Branch 547 not taken.
✗ Branch 548 not taken.
✓ Branch 549 taken 32767 times.
✗ Branch 550 not taken.
✓ Branch 551 taken 32767 times.
✗ Branch 552 not taken.
✗ Branch 553 not taken.
✗ Branch 554 not taken.
✗ Branch 555 not taken.
✗ Branch 556 not taken.
✗ Branch 557 not taken.
✗ Branch 558 not taken.
✗ Branch 559 not taken.
✓ Branch 561 taken 49140 times.
✗ Branch 562 not taken.
✓ Branch 563 taken 49140 times.
✗ Branch 564 not taken.
✗ Branch 565 not taken.
✓ Branch 566 taken 49140 times.
✗ Branch 567 not taken.
✓ Branch 568 taken 81907 times.
✗ Branch 569 not taken.
✓ Branch 570 taken 32767 times.
✗ Branch 571 not taken.
✗ Branch 572 not taken.
✓ Branch 573 taken 32767 times.
✗ Branch 574 not taken.
✓ Branch 575 taken 32767 times.
✗ Branch 576 not taken.
✗ Branch 578 not taken.
✗ Branch 579 not taken.
✗ Branch 580 not taken.
✗ Branch 581 not taken.
✗ Branch 582 not taken.
✗ Branch 583 not taken.
✗ Branch 584 not taken.
✗ Branch 585 not taken.
✗ Branch 586 not taken.
✓ Branch 587 taken 53235 times.
✗ Branch 588 not taken.
✓ Branch 589 taken 53235 times.
✗ Branch 590 not taken.
✓ Branch 592 taken 53235 times.
✗ Branch 593 not taken.
✓ Branch 594 taken 53235 times.
✗ Branch 595 not taken.
✗ Branch 597 not taken.
✗ Branch 598 not taken.
✗ Branch 599 not taken.
✗ Branch 600 not taken.
✗ Branch 601 not taken.
✗ Branch 602 not taken.
✗ Branch 603 not taken.
✗ Branch 604 not taken.
✗ Branch 605 not taken.
✗ Branch 606 not taken.
✗ Branch 607 not taken.
✗ Branch 608 not taken.
✗ Branch 609 not taken.
✗ Branch 610 not taken.
✗ Branch 611 not taken.
✗ Branch 612 not taken.
✓ Branch 613 taken 65534 times.
✗ Branch 614 not taken.
✓ Branch 615 taken 65534 times.
✗ Branch 616 not taken.
✗ Branch 617 not taken.
✓ Branch 618 taken 65534 times.
✗ Branch 619 not taken.
✓ Branch 620 taken 65534 times.
✗ Branch 621 not taken.
✗ Branch 622 not taken.
✗ Branch 623 not taken.
✗ Branch 624 not taken.
✗ Branch 625 not taken.
✗ Branch 626 not taken.
✗ Branch 627 not taken.
✗ Branch 628 not taken.
✗ Branch 629 not taken.
✗ Branch 630 not taken.
✗ Branch 631 not taken.
✗ Branch 632 not taken.
✗ Branch 633 not taken.
✗ Branch 634 not taken.
✗ Branch 635 not taken.
✗ Branch 636 not taken.
✓ Branch 637 taken 65534 times.
✗ Branch 638 not taken.
✓ Branch 639 taken 65534 times.
✗ Branch 640 not taken.
✗ Branch 641 not taken.
✓ Branch 642 taken 65534 times.
✗ Branch 643 not taken.
✓ Branch 644 taken 65534 times.
✗ Branch 645 not taken.
✗ Branch 646 not taken.
✓ Branch 647 taken 65534 times.
✗ Branch 648 not taken.
✗ Branch 649 not taken.
✗ Branch 650 not taken.
✗ Branch 651 not taken.
✗ Branch 652 not taken.
✗ Branch 653 not taken.
✗ Branch 654 not taken.
✗ Branch 655 not taken.
✗ Branch 656 not taken.
✗ Branch 657 not taken.
✗ Branch 658 not taken.
✗ Branch 659 not taken.
✗ Branch 660 not taken.
✗ Branch 661 not taken.
✗ Branch 662 not taken.
✗ Branch 663 not taken.
✗ Branch 664 not taken.
✗ Branch 665 not taken.
✓ Branch 666 taken 32767 times.
✗ Branch 667 not taken.
✓ Branch 668 taken 32767 times.
✗ Branch 669 not taken.
✓ Branch 671 taken 32767 times.
✗ Branch 672 not taken.
✓ Branch 673 taken 32767 times.
✗ Branch 674 not taken.
✗ Branch 676 not taken.
✗ Branch 677 not taken.
✗ Branch 678 not taken.
✗ Branch 679 not taken.
✗ Branch 680 not taken.
✗ Branch 681 not taken.
✗ Branch 683 not taken.
✗ Branch 684 not taken.
✗ Branch 685 not taken.
✗ Branch 686 not taken.
✗ Branch 687 not taken.
✗ Branch 688 not taken.
✓ Branch 690 taken 393204 times.
✗ Branch 691 not taken.
✓ Branch 692 taken 393204 times.
✗ Branch 693 not taken.
✓ Branch 695 taken 393204 times.
✗ Branch 696 not taken.
✓ Branch 697 taken 393204 times.
✗ Branch 698 not taken.
✗ Branch 700 not taken.
✗ Branch 701 not taken.
✗ Branch 702 not taken.
✗ Branch 703 not taken.
✗ Branch 704 not taken.
✗ Branch 705 not taken.
✗ Branch 707 not taken.
✗ Branch 708 not taken.
✗ Branch 709 not taken.
✗ Branch 710 not taken.
✗ Branch 711 not taken.
✗ Branch 712 not taken.
✓ Branch 714 taken 425971 times.
✗ Branch 715 not taken.
✓ Branch 716 taken 425971 times.
✗ Branch 717 not taken.
✓ Branch 719 taken 425971 times.
✗ Branch 720 not taken.
✓ Branch 721 taken 425971 times.
✗ Branch 722 not taken.
✗ Branch 724 not taken.
✗ Branch 725 not taken.
✗ Branch 726 not taken.
✗ Branch 727 not taken.
✗ Branch 728 not taken.
✗ Branch 729 not taken.
✗ Branch 731 not taken.
✗ Branch 732 not taken.
✗ Branch 733 not taken.
✗ Branch 734 not taken.
✗ Branch 735 not taken.
✗ Branch 736 not taken.
✗ Branch 738 not taken.
✗ Branch 739 not taken.
✗ Branch 740 not taken.
✗ Branch 741 not taken.
✗ Branch 743 not taken.
✗ Branch 744 not taken.
✗ Branch 745 not taken.
✗ Branch 746 not taken.
✗ Branch 748 not taken.
✗ Branch 749 not taken.
✗ Branch 750 not taken.
✗ Branch 751 not taken.
✗ Branch 753 not taken.
✗ Branch 754 not taken.
✗ Branch 755 not taken.
✗ Branch 756 not taken.
✗ Branch 757 not taken.
✗ Branch 758 not taken.
✗ Branch 760 not taken.
✗ Branch 761 not taken.
✗ Branch 762 not taken.
✗ Branch 763 not taken.
✗ Branch 764 not taken.
✗ Branch 765 not taken.
✗ Branch 767 not taken.
✗ Branch 768 not taken.
|
5722283 | void updateResultActive() { mResultIsActive = mAIsActive || mBIsActive; } |
606 | |||
607 | const AValueType* mAValPtr; // pointer to input value from A grid | ||
608 | const BValueType* mBValPtr; // pointer to input value from B grid | ||
609 | AValueType mResultVal; // computed output value (unused if stored externally) | ||
610 | AValueType* mResultValPtr; // pointer to either mResultVal or an external value | ||
611 | bool mAIsActive, mBIsActive; // active states of A and B values | ||
612 | bool mResultIsActive; // computed active state (default: A active || B active) | ||
613 | }; | ||
614 | |||
615 | |||
616 | /// This struct adapts a "grid combiner" functor to swap the A and B grid values | ||
617 | /// (e.g., so that if the original functor computes a + 2 * b, the adapted functor | ||
618 | /// will compute b + 2 * a). | ||
619 | template<typename ValueType, typename CombineOp> | ||
620 | struct SwappedCombineOp | ||
621 | { | ||
622 |
1/24✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
361 | SwappedCombineOp(CombineOp& _op): op(_op) {} |
623 | |||
624 |
1/2✓ Branch 0 taken 300017 times.
✗ Branch 1 not taken.
|
300017 | void operator()(CombineArgs<ValueType>& args) |
625 | { | ||
626 | CombineArgs<ValueType> swappedArgs(args.b(), args.a(), args.result(), | ||
627 | args.bIsActive(), args.aIsActive()); | ||
628 | 300017 | op(swappedArgs); | |
629 | args.setResultIsActive(swappedArgs.resultIsActive()); | ||
630 | 300017 | } | |
631 | |||
632 | CombineOp& op; | ||
633 | }; | ||
634 | |||
635 | |||
636 | //////////////////////////////////////// | ||
637 | |||
638 | |||
639 | /// @brief Tag dispatch class that distinguishes shallow copy constructors | ||
640 | /// from deep copy constructors | ||
641 | class ShallowCopy {}; | ||
642 | /// @brief Tag dispatch class that distinguishes topology copy constructors | ||
643 | /// from deep copy constructors | ||
644 | class TopologyCopy {}; | ||
645 | /// @brief Tag dispatch class that distinguishes constructors that deep copy | ||
646 | class DeepCopy {}; | ||
647 | /// @brief Tag dispatch class that distinguishes constructors that steal | ||
648 | class Steal {}; | ||
649 | /// @brief Tag dispatch class that distinguishes constructors during file input | ||
650 | class PartialCreate {}; | ||
651 | |||
652 | } // namespace OPENVDB_VERSION_NAME | ||
653 | } // namespace openvdb | ||
654 | |||
655 | |||
656 | #endif // OPENVDB_TYPES_HAS_BEEN_INCLUDED | ||
657 |