7 #ifndef PXR_EXEC_VDF_MASKED_ITERATOR_H
8 #define PXR_EXEC_VDF_MASKED_ITERATOR_H
42 template<
class IteratorType, VdfMaskedIteratorMode mode>
57 template<
typename... Args>
68 return _iterator.operator*();
74 return _iterator.IsAtEnd();
80 _iterator.AdvanceToEnd();
91 void _AdvanceToIndexWithVisitMask();
94 IteratorType _iterator;
102 template<
class IteratorType, VdfMaskedIteratorMode mode>
103 template<
typename... Args>
106 _iterator(context, std::forward<Args>(
args)...),
107 _visitMaskIterator(visitMask.
begin())
110 if (visitMask.
GetSize() == 0) {
111 _iterator.AdvanceToEnd();
114 _AdvanceToIndexWithVisitMask();
117 template<
class IteratorType, VdfMaskedIteratorMode mode>
121 _iterator.operator++();
122 _AdvanceToIndexWithVisitMask();
126 template<
class IteratorType, VdfMaskedIteratorMode mode>
141 while (!_iterator.IsAtEnd()) {
144 Vdf_GetIteratorIndex(_iterator));
145 if (*_visitMaskIterator < idx) {
146 _visitMaskIterator.AdvanceTo(idx);
154 if (visitIdx > idx || visitIdx < idx) {
161 if (visitIdx == idx || visitIdx < idx) {
166 _iterator.operator++();
VdfMaskedIterator & operator++()
friend int Vdf_GetIteratorIndex(const VdfMaskedIterator &it)
VdfMaskedIterator(const VdfContext &context, const VdfMask &visitMask, Args &&...args)
_BaseIterator::value_type value_type
#define PXR_NAMESPACE_OPEN_SCOPE
A VdfMask is placed on connections to specify the data flowing through them.
reference operator*() const
IteratorType::value_type value_type
IteratorType::reference reference
PcpNodeRef_ChildrenIterator begin(const PcpNodeRef::child_const_range &r)
Support for range-based for loops for PcpNodeRef children ranges.
#define PXR_NAMESPACE_CLOSE_SCOPE
**If you just want to fire and args
that also have some descendant prim *whose name begins with which in turn has a child named baz where *the predicate and *a name There is also one special expression reference