SheafSystem  0.0.0.0
triorder_itr.h
Go to the documentation of this file.
1 
2 //
3 // Copyright (c) 2014 Limit Point Systems, Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 
20 
21 #ifndef TRIORDER_ITR_H
22 #define TRIORDER_ITR_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef FILTERED_DEPTH_FIRST_ITR_H
29 #include "SheafSystem/filtered_depth_first_itr.h"
30 #endif
31 
32 namespace sheaf
33 {
34 
40 
41 template <typename T>
42 class SHEAF_DLL_SPEC triorder_itr : public filtered_depth_first_itr<T>
43 {
44  // ===========================================================
46  // ===========================================================
48 
49 public:
50 
55  triorder_itr();
56 
60  triorder_itr(const triorder_itr& xother);
61 
65  ~triorder_itr();
66 
67  // OTHER CONSTRUCTORS
68 
74  triorder_itr(const abstract_poset_member& xanchor,
75  bool xdown,
76  bool xstrict);
77 
83  triorder_itr(const abstract_poset_member& xanchor,
84  const subposet& xfilter,
85  bool xdown,
86  bool xstrict);
87 
93  triorder_itr(const abstract_poset_member& xanchor,
94  pod_index_type xfilter_index,
95  bool xdown,
96  bool xstrict);
97 
103  triorder_itr(const abstract_poset_member& xanchor,
104  const scoped_index& xfilter_index,
105  bool xdown,
106  bool xstrict);
107 
113  triorder_itr(const abstract_poset_member& xanchor,
114  const std::string& xfilter_name,
115  bool xdown,
116  bool xstrict);
117 
118 protected:
119 
120 private:
121 
123 
124 
125  // ===========================================================
127  // ===========================================================
129 
130 public:
131 
135  virtual bool is_ancestor_of(const any* other) const;
136 
140  virtual triorder_itr* clone() const;
141 
145  bool invariant() const;
146 
147 protected:
148 
149 private:
150 
152 };
153 
154 
159 
164 
169 
170 
171 #endif // ifndef TRIORDER_ITR_H
172 
173 } // namespace sheaf
A client handle for a subposet.
Definition: subposet.h:86
The general depth-first iterator over the intersection of a subposet filter with a directional (up or...
Abstract base class with useful features for all objects.
Definition: any.h:39
Specialization of the filtered depth-first iterator which exposes all three actions to the client; th...
Definition: triorder_itr.h:42
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
Namespace for the sheaves component of the sheaf system.
triorder_itr< unordered::unordered_set< pod_index_type > > unordered_set_triorder_itr
Triorder_itr<T> using unordered_set for _has_visited markers.
Definition: triorder_itr.h:168
An abstract client handle for a member of a poset.
triorder_itr< std::set< pod_index_type > > set_triorder_itr
Triorder_itr<T> using set for _has_visited markers.
Definition: triorder_itr.h:163
triorder_itr< zn_to_bool > zn_to_bool_triorder_itr
Triorder_itr<T> using zn_to_bool for _has_visited markers.
Definition: triorder_itr.h:158