SheafSystem  0.0.0.0
filtered_depth_first_iterator.h
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 
18 // Interface for class filtered_depth_first_iterator
19 
20 
21 #ifndef FILTERED_DEPTH_FIRST_ITERATOR_H
22 #define FILTERED_DEPTH_FIRST_ITERATOR_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef DEPTH_FIRST_ITERATOR_H
29 #include "SheafSystem/depth_first_iterator.h"
30 #endif
31 
32 #ifndef POSET_STATE_HANDLE_H
33 #include "SheafSystem/poset_state_handle.h"
34 #endif
35 
36 #ifndef SUBPOSET_H
37 #include "SheafSystem/subposet.h"
38 #endif
39 
40 #ifndef TOTAL_POSET_MEMBER_H
41 #include "SheafSystem/total_poset_member.h"
42 #endif
43 
44 namespace sheaf
45 {
46 
47 class zn_to_bool;
48 
49 
77 {
78 
79 public:
80 
81  // CANONICAL MEMBERS
82 
88 
93 
98 
103 
107  virtual bool is_ancestor_of(const any* other) const;
108 
112  virtual filtered_depth_first_iterator* clone() const;
113 
117  bool invariant() const;
118 
119  // OTHER CONSTRUCTORS
120 
127  bool xdown,
128  bool xstrict,
129  order_type xorder);
130 
137  const subposet& xfilter,
138  bool xdown,
139  bool xstrict,
140  order_type xorder);
141 
148  pod_index_type xfilter_index,
149  bool xdown,
150  bool xstrict,
151  order_type xorder);
152 
159  const scoped_index& xfilter_index,
160  bool xdown,
161  bool xstrict,
162  order_type xorder);
163 
170  const std::string& xfilter_name,
171  bool xdown,
172  bool xstrict,
173  order_type xorder);
174 
175  // ITERATOR FACET
176 
180  virtual void put_anchor(const abstract_poset_member* xanchor);
181 
185  virtual void put_anchor(pod_index_type xanchor_index);
186 
190  void put_anchor(const scoped_index& xanchor_index);
191 
195  void put_descending(bool xdescending);
196 
200  void put_strict(bool xstrict);
201 
205  void put_filter(const subposet& xfilter);
206 
210  void put_filter(const std::string& xfilter_name);
211 
215  void put_filter(pod_index_type xfilter_index);
216 
220  void put_filter(const scoped_index& xfilter_index);
221 
222 protected:
223 
224 private:
225 
226 };
227 
228 } // namespace sheaf
229 
230 #endif // ifndef FILTERED_DEPTH_FIRST_ITERATOR_H
A client handle for a subposet.
Definition: subposet.h:86
order_type
The types of order in which the iterator will visit the members of the poset. Determines which action...
Abstract base class with useful features for all objects.
Definition: any.h:39
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.
An abstract client handle for a member of a poset.