Loading...
Searching...
No Matches
indexedDataIterator.h
Go to the documentation of this file.
1//
2// Copyright 2025 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_EXEC_VDF_INDEXED_DATA_ITERATOR_H
8#define PXR_EXEC_VDF_INDEXED_DATA_ITERATOR_H
9
11
12#include "pxr/pxr.h"
13
14#include <iterator>
15#include <vector>
16
17PXR_NAMESPACE_OPEN_SCOPE
18
28template <typename IteratedType>
30{
31public:
32 using BaseIterator = typename std::vector<IteratedType>::const_iterator;
33
34 using iterator_category = std::forward_iterator_tag;
35 using value_type = typename BaseIterator::value_type;
36 using reference = typename BaseIterator::reference;
37 using pointer = typename BaseIterator::pointer;
38 using difference_type = typename BaseIterator::difference_type;
39
40 // Only default construction is publicly allowed, and the resulting
41 // object is invalid.
42 VdfIndexedDataIterator() = default;
43
44 reference operator*() const { return *_baseIterator; }
45 pointer operator->() const { return &(*_baseIterator); }
46
47 VdfIndexedDataIterator &operator++() {
48 ++_baseIterator;
49 return *this;
50 }
51
52 VdfIndexedDataIterator operator++(int) {
54 ++_baseIterator;
55 return r;
56 }
57
58 bool operator==(const VdfIndexedDataIterator &rhs) const {
59 return _baseIterator == rhs._baseIterator;
60 }
61
62 bool operator!=(const VdfIndexedDataIterator &rhs) const {
63 return _baseIterator != rhs._baseIterator;
64 }
65
66private:
67 // Allow VdfIndexedData (only) to construct these.
68 template <typename T>
69 friend class VdfIndexedData;
70
71 explicit VdfIndexedDataIterator(const BaseIterator& iter) :
72 _baseIterator(iter) {}
73
74 // The underlying base iterator
75 BaseIterator _baseIterator;
76};
77
78PXR_NAMESPACE_CLOSE_SCOPE
79
80#endif // #ifndef PXR_EXEC_VDF_INDEXED_DATA_ITERATOR_H
This is a simple "iterator filter" that erases the type and traits of the container used by VdfIndexe...