Skip to content

Commit 375175b

Browse files
committed
Extend AdaptiveTree to add an AdaptiveAccessor
Signed-off-by: Dan Bailey <danbailey@ilm.com>
1 parent 19ea1ec commit 375175b

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

openvdb/openvdb/adaptive/AdaptiveGrid.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,21 @@ namespace OPENVDB_VERSION_NAME {
1919

2020
namespace adaptive {
2121

22+
template <typename TreeT>
23+
class AdaptiveAccessor
24+
{
25+
public:
26+
using ValueType = typename TreeT::ValueType;
27+
28+
explicit AdaptiveAccessor(TreeT& tree):
29+
mTree(tree) { }
30+
31+
TreeT& tree() const { return mTree; }
32+
33+
private:
34+
TreeT& mTree;
35+
};
36+
2237

2338
template<typename _ValueType>
2439
class AdaptiveTree final: public TreeBase
@@ -32,6 +47,11 @@ class AdaptiveTree final: public TreeBase
3247

3348
static const Index DEPTH = 1;
3449

50+
using Accessor = AdaptiveAccessor<AdaptiveTree>;
51+
using ConstAccessor = AdaptiveAccessor<const AdaptiveTree>;
52+
using UnsafeAccessor = Accessor;
53+
using ConstUnsafeAccessor = ConstAccessor;
54+
3555
AdaptiveTree() = default;
3656

3757
AdaptiveTree& operator=(const AdaptiveTree&) = delete; // disallow assignment
@@ -145,6 +165,14 @@ class AdaptiveTree final: public TreeBase
145165
/// Return the total number of active tiles.
146166
Index64 activeTileCount() const override { OPENVDB_THROW(NotImplementedError, ""); }
147167

168+
//
169+
// Accessor methods
170+
//
171+
Accessor getAccessor() { return Accessor(*this); }
172+
UnsafeAccessor getUnsafeAccessor() { return UnsafeAccessor(*this); }
173+
ConstAccessor getAccessor() const { return ConstAccessor(*this); }
174+
ConstAccessor getConstAccessor() const { return ConstAccessor(*this); }
175+
ConstUnsafeAccessor getConstUnsafeAccessor() const { return ConstUnsafeAccessor(*this); }
148176

149177
//
150178
// I/O methods

0 commit comments

Comments
 (0)