7 #ifndef PXR_USD_PCP_ITERATOR_H
8 #define PXR_USD_PCP_ITERATOR_H
25 class PcpPrimIndex_Graph;
40 explicit _PtrProxy(
const PcpNodeRef& nodeRef) : _nodeRef(nodeRef) {}
71 advanced.advance(index);
72 return advanced.dereference();
76 return -distance_to(other);
103 result.advance(increment);
109 result.advance(-decrement);
128 return !equal(other);
133 return _nodeIdx < other._nodeIdx;
138 return _nodeIdx <= other._nodeIdx;
143 return _nodeIdx > other._nodeIdx;
148 return _nodeIdx >= other._nodeIdx;
154 _graph(graph), _nodeIdx(nodeIdx) {}
156 void increment() { ++_nodeIdx; }
157 void decrement() { --_nodeIdx; }
163 return (_graph == other._graph) & (_nodeIdx == other._nodeIdx);
170 PcpPrimIndex_Graph* _graph =
nullptr;
200 explicit _PtrProxy(
const SdfSite& site) : _site(site) {}
232 advanced.advance(index);
233 return advanced.dereference();
237 return -distance_to(other);
264 result.advance(increment);
270 result.advance(-decrement);
289 return !equal(other);
294 return _pos < other._pos;
299 return _pos <= other._pos;
304 return _pos > other._pos;
309 return _pos >= other._pos;
347 return (--tmp).GetNode();
353 return (--tmp)._GetSiteRef();
393 advanced.advance(index);
394 return advanced.dereference();
398 return -distance_to(other);
425 result.advance(increment);
431 result.advance(-decrement);
450 return !equal(other);
455 return _pos < other._pos;
460 return _pos <= other._pos;
465 return _pos > other._pos;
470 return _pos >= other._pos;
498 :
public std::reverse_iterator<PcpPropertyIterator>
508 return (--tmp).GetNode();
514 return (--tmp).IsLocal();
521 #define PCP_DEFINE_RANGE(Range, Iterator, ReverseIterator) \
522 typedef std::pair<Iterator, Iterator> Range; \
524 inline Iterator begin(Range &range) { return range.first; } \
525 inline Iterator begin(const Range &range) { return range.first; } \
526 inline Iterator end(Range &range) { return range.second; } \
527 inline Iterator end(const Range &range) { return range.second; } \
530 struct Tf_IteratorInterface<Range, false> { \
531 typedef Iterator IteratorType; \
532 static IteratorType Begin(Range &c) { return c.first; } \
533 static IteratorType End(Range &c) { return c.second; } \
537 struct Tf_IteratorInterface<const Range, false> { \
538 typedef Iterator IteratorType; \
539 static IteratorType Begin(Range const &c) { return c.first; } \
540 static IteratorType End(Range const &c) { return c.second; } \
544 struct Tf_IteratorInterface<Range, true> { \
545 typedef ReverseIterator IteratorType; \
546 static IteratorType Begin(Range &c) \
547 { return IteratorType(c.second); } \
548 static IteratorType End(Range &c) \
549 { return IteratorType(c.first); } \
553 struct Tf_IteratorInterface<const Range, true> { \
554 typedef ReverseIterator IteratorType; \
555 static IteratorType Begin(Range const &c) \
556 { return IteratorType(c.second); } \
557 static IteratorType End(Range const &c) \
558 { return IteratorType(c.first); } \
562 struct Tf_ShouldIterateOverCopy<Range> : std::true_type {}; \
565 struct Tf_ShouldIterateOverCopy<const Range> : std::true_type {}
602 #endif // PXR_USD_PCP_ITERATOR_H
bool operator<(const PcpPrimIterator &other) const
bool operator>=(const PcpNodeIterator &other) const
difference_type operator-(const PcpPrimIterator &other) const
PcpNodeIterator operator++(int)
PcpNodeIterator()=default
Constructs an invalid iterator.
PcpNodeIterator operator-(const difference_type decrement) const
PcpPrimIterator & operator-=(const difference_type decrement)
PcpPropertyReverseIterator(const PcpPropertyIterator &iter)
reference operator*() const
PcpPropertyIterator & operator+=(const difference_type increment)
PCP_API PcpPropertyIterator()
Constructs an invalid iterator.
PcpNodeRef GetNode() const
bool operator!=(const PcpPropertyIterator &other) const
PcpPropertyIterator operator-(const difference_type decrement) const
#define PXR_NAMESPACE_OPEN_SCOPE
PcpNodeIterator & operator++()
bool operator<(const PcpNodeIterator &other) const
PcpPrimIterator & operator++()
PcpPropertyIterator & operator--()
bool operator!=(const PcpNodeIterator &other) const
PcpNodeIterator & operator--()
PCP_API PcpNodeRef GetNode() const
Returns the PcpNode from which the current prim originated.
pointer operator->() const
bool operator==(const PcpPropertyIterator &other) const
IMATH_HOSTDEVICE constexpr bool equal(T1 a, T2 b, T3 t) IMATH_NOEXCEPT
PcpNodeIterator operator--(int)
bool operator<=(const PcpPropertyIterator &other) const
**But if you need a result
bool operator!=(const PcpPrimIterator &other) const
bool operator<=(const PcpNodeIterator &other) const
difference_type operator-(const PcpNodeIterator &other) const
PcpPrimIterator & operator+=(const difference_type increment)
PcpNodeRef GetNode() const
PcpPropertyReverseIterator()
PcpPrimIterator operator++(int)
const SdfPropertySpecHandle value_type
reference operator*() const
bool operator<=(const PcpPrimIterator &other) const
bool operator==(const PcpNodeIterator &other) const
std::random_access_iterator_tag iterator_category
PcpNodeIterator operator+(const difference_type increment) const
#define TF_DEV_AXIOM(cond)
const SdfPropertySpecHandle & reference
PcpPropertyReverseIterator ReverseIteratorType
std::ptrdiff_t difference_type
reference operator[](const difference_type index) const
PcpPrimIterator operator-(const difference_type decrement) const
bool operator==(const PcpPrimIterator &other) const
PcpPropertyIterator & operator-=(const difference_type decrement)
#define PCP_DEFINE_RANGE(Range, Iterator, ReverseIterator)
PcpNodeIterator & operator-=(const difference_type decrement)
bool operator<(const PcpPropertyIterator &other) const
std::ptrdiff_t difference_type
PcpPrimReverseIterator(const PcpPrimIterator &iter)
reference operator[](const difference_type index) const
PcpPrimReverseIterator ReverseIteratorType
PcpPrimIterator & operator--()
constexpr size_t PCP_INVALID_INDEX
PCP_API PcpNodeIterator & MoveToNextSubtree()
difference_type operator-(const PcpPropertyIterator &other) const
PcpNodeReverseIterator ReverseIteratorType
PcpPropertyIterator operator++(int)
bool operator>(const PcpNodeIterator &other) const
PcpPropertyRange RangeType
pointer operator->() const
bool operator>(const PcpPrimIterator &other) const
Pcp_SdSiteRef _GetSiteRef() const
#define PXR_NAMESPACE_CLOSE_SCOPE
PcpNodeIterator & operator+=(const difference_type increment)
bool operator>(const PcpPropertyIterator &other) const
PCP_API bool IsLocal() const
std::random_access_iterator_tag iterator_category
Pcp_CompressedSdSite GetCompressedSdSite(size_t layerIndex) const
reference operator[](const difference_type index) const
pointer operator->() const
reference operator*() const
std::ptrdiff_t difference_type
PcpNodeReverseIterator(const PcpNodeIterator &iter)
PCP_API PcpPrimIterator()
Constructs an invalid iterator.
PCP_API PcpNodeRef GetNode() const
Returns the PcpNode from which the current property originated.
PcpPropertyIterator operator+(const difference_type increment) const
const SdfPropertySpecHandle * pointer
PcpPrimIterator operator--(int)
std::random_access_iterator_tag iterator_category
PcpPropertyIterator operator--(int)
bool operator>=(const PcpPropertyIterator &other) const
PcpPropertyIterator & operator++()
PCP_API Pcp_SdSiteRef _GetSiteRef() const
PcpPrimIterator operator+(const difference_type increment) const
bool operator>=(const PcpPrimIterator &other) const