SheafSystem  0.0.0.0
explicit_crg_interval.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 EXPLICIT_CRG_INTERVAL_H
22 #define EXPLICIT_CRG_INTERVAL_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef CRG_INTERVAL_H
29 #include "SheafSystem/crg_interval.h"
30 #endif
31 
32 namespace sheaf
33 {
34 
35 template <typename T>
36 class factory;
37 
41 class SHEAF_DLL_SPEC explicit_crg_interval : public crg_interval
42 {
43 
44  friend class namespace_poset;
45 
46  // ===========================================================
48  // ===========================================================
50 
51 public:
52 
57 
61  virtual ~explicit_crg_interval();
62 
63 protected:
64 
65 private:
66 
68 
69 
70  // ===========================================================
72  // ===========================================================
74 
75 public:
76 
77 protected:
78 
79 private:
80 
82 
83 
84  // ===========================================================
86  // ===========================================================
88 
89 public:
90 
91 protected:
92 
96  virtual void initialize_lower_covers();
97 
101  virtual void initialize_upper_covers();
102 
103 private:
104 
106 
107 
108  // ===========================================================
110  // ===========================================================
112 
113 public:
114 
115 protected:
116 
117 private:
118 
120 
121 
122  // ===========================================================
124  // ===========================================================
126 
127 public:
128 
133  virtual const std::string& class_name() const;
134 
135 protected:
136 
137 private:
138 
142  static bool make_prototype();
143 
145 
146 
147  // ===========================================================
149  // ===========================================================
151 
152 public:
153 
157  virtual bool is_ancestor_of(const any* other) const;
158 
163  virtual explicit_crg_interval* clone() const;
164 
168  virtual bool invariant() const;
169 
170 protected:
171 
172 private:
173 
175 };
176 
177 // ===========================================================
178 // NON-MEMBER FUNCTIONS
179 // ===========================================================
180 
185 SHEAF_DLL_SPEC
186 size_t deep_size(const explicit_crg_interval& xp, bool xinclude_shallow = true);
187 
188 } // namespace sheaf
189 
190 #endif // ifndef EXPLICIT_CRG_INTERVAL_H
The default name space; a poset which contains other posets as members.
Abstract base class with useful features for all objects.
Definition: any.h:39
Abstract emulator for an interval of cover relation graph members.
Definition: crg_interval.h:70
SHEAF_DLL_SPEC size_t deep_size(const dof_descriptor_array &xp, bool xinclude_shallow=true)
The deep size of the referenced object of type dof_descriptor_array.
Namespace for the sheaves component of the sheaf system.
Implementation of crg_interval for explicit members of the poset.