equal
deleted
inserted
replaced
35 template <typename Node> |
35 template <typename Node> |
36 class StopOnNullCondition : public AllStatic { |
36 class StopOnNullCondition : public AllStatic { |
37 public: |
37 public: |
38 static bool has_next(const Node* node) { |
38 static bool has_next(const Node* node) { |
39 return node != NULL; |
39 return node != NULL; |
|
40 } |
|
41 }; |
|
42 |
|
43 template <typename Node> |
|
44 class StopOnEmptyCondition : public AllStatic { |
|
45 public: |
|
46 static bool has_next(const Node* node) { |
|
47 return node != NULL && !node->empty(); |
40 } |
48 } |
41 }; |
49 }; |
42 |
50 |
43 template <typename List, template <typename> class ContinuationPredicate> |
51 template <typename List, template <typename> class ContinuationPredicate> |
44 class Navigator { |
52 class Navigator { |
81 class NavigatorStopOnNull : public Navigator<List, StopOnNullCondition> { |
89 class NavigatorStopOnNull : public Navigator<List, StopOnNullCondition> { |
82 public: |
90 public: |
83 NavigatorStopOnNull(List& list, jfr_iter_direction direction = forward) : Navigator<List, StopOnNullCondition>(list, direction) {} |
91 NavigatorStopOnNull(List& list, jfr_iter_direction direction = forward) : Navigator<List, StopOnNullCondition>(list, direction) {} |
84 }; |
92 }; |
85 |
93 |
|
94 template <typename List> |
|
95 class NavigatorStopOnEmpty : public Navigator<List, StopOnEmptyCondition> { |
|
96 public: |
|
97 NavigatorStopOnEmpty(List& list, jfr_iter_direction direction = forward) : Navigator<List, StopOnEmptyCondition>(list, direction) {} |
|
98 }; |
|
99 |
86 template<typename List, template <typename> class Navigator, typename AP = StackObj> |
100 template<typename List, template <typename> class Navigator, typename AP = StackObj> |
87 class IteratorHost : public AP { |
101 class IteratorHost : public AP { |
88 private: |
102 private: |
89 Navigator<List> _navigator; |
103 Navigator<List> _navigator; |
90 |
104 |
102 class StopOnNullIterator : public IteratorHost<List, NavigatorStopOnNull, AP> { |
116 class StopOnNullIterator : public IteratorHost<List, NavigatorStopOnNull, AP> { |
103 public: |
117 public: |
104 StopOnNullIterator(List& list, jfr_iter_direction direction = forward) : IteratorHost<List, NavigatorStopOnNull, AP>(list, direction) {} |
118 StopOnNullIterator(List& list, jfr_iter_direction direction = forward) : IteratorHost<List, NavigatorStopOnNull, AP>(list, direction) {} |
105 }; |
119 }; |
106 |
120 |
|
121 template<typename List, typename AP = StackObj> |
|
122 class StopOnEmptyIterator : public IteratorHost<List, NavigatorStopOnEmpty, AP> { |
|
123 public: |
|
124 StopOnEmptyIterator(List& list, jfr_iter_direction direction = forward) : IteratorHost<List, NavigatorStopOnEmpty, AP>(list, direction) {} |
|
125 }; |
|
126 |
107 #endif // SHARE_JFR_UTILITIES_JFRITERATOR_HPP |
127 #endif // SHARE_JFR_UTILITIES_JFRITERATOR_HPP |