SheafSystem  0.0.0.0
binary_section_space_schema_poset.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 BINARY_SECTION_SPACE_SCHEMA_POSET_H
22 #define BINARY_SECTION_SPACE_SCHEMA_POSET_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SECTION_SPACE_SCHEMA_POSET_H
29 #include "SheafSystem/section_space_schema_poset.h"
30 #endif
31 
32 #ifndef ARRAY_POSET_DOF_MAP_H
33 #include "SheafSystem/array_poset_dof_map.h"
34 #endif
35 
36 namespace sheaf
37 {
38 class namespace_poset;
39 class namespace_poset_member;
40 }
41 
42 namespace fiber_bundle
43 {
44 
45 class sec_rep_descriptor;
46 
66 {
67  friend class fiber_bundles_namespace;
68  friend class sheaf::namespace_poset; // Qualification needed by g++ 4.2.2
69 
70  // ===========================================================
72  // ===========================================================
74 
75 public:
76 
82  static binary_section_space_schema_poset& new_table(namespace_type& xhost,
83  const poset_path& xpath,
84  const poset_path& xschema_path,
85  const poset_path& xbase_path,
86  const poset_path& xfiber_path,
87  const poset_path& xrep_path,
88  bool xauto_access);
89 
90 
91 protected:
92 
97 
102 
107 
111  static bool make_prototype();
112 
113 private:
114 
116 
117 
118  // ===========================================================
120  // ===========================================================
122 
123 public:
124 
125  using section_space_schema_poset::get_index_from_components;
126 
131  virtual pod_index_type
132  get_index_from_components(pod_index_type xbase_space_id,
133  pod_index_type xfiber_schema_id) const;
134 
135 protected:
136 
137 private:
138 
140 
141 
142  // ===========================================================
144  // ===========================================================
146 
147 public:
148 
152  virtual poset_type type_id() const;
153 
157  virtual const char* class_name() const;
158 
159 protected:
160 
161  using section_space_schema_poset::new_state;
162 
167  virtual void new_state(const poset_path& xpath, const schema_poset_member& xschema, array_poset_dof_map& xdof_map);
168 
169 private:
170 
172 
173 
174  // ===========================================================
176  // ===========================================================
178 
179 public:
180 
182 
186  virtual bool contains_link(pod_index_type xgreater,
187  pod_index_type xlesser) const;
188 
190 
195  virtual size_type cover_ct(bool xlower, pod_index_type xhub_id) const;
196 
198 
202  virtual bool le(pod_index_type xgreater, pod_index_type xlesser) const;
203 
205 
209  virtual bool leqv(pod_index_type xgreater, pod_index_type xlesser) const;
210 
212 
216  virtual bool is_jem(pod_index_type xhub_id, pod_index_type xother) const;
217 
219 
223  virtual pod_index_type greatest_jem(pod_index_type xhub_id) const;
224 
226 
230  virtual pod_index_type least_jem(pod_index_type xhub_id) const;
231 
233 
237  virtual void merge_jems(pod_index_type xjem1, pod_index_type xjem2);
238 
239 protected:
240 
241 private:
242 
244 
245 
246  // ===========================================================
248  // ===========================================================
250 
251 public:
252 
259  virtual schema_poset_member*
260  new_schema_handle(const std::string& xid_space_name,
261  pod_index_type xschema_member_ext_id,
262  pod_index_type xbase_space_ext_id,
263  pod_index_type xfiber_schema_ext_id,
264  pod_index_type xlocal_schema_ext_id);
265 
266  // Note that we can not covariantly redefine the return type
267  // of new_schema_handle without including binary_section_space_schema_member.h,
268  // which causes a cyclic dependency between the poset and member classes.
269 
270 protected:
271 
272 private:
273 
275 
276 
277  // ===========================================================
279  // ===========================================================
281 
282 public:
283 
287  virtual bool is_ancestor_of(const any* other) const;
288 
292  virtual bool invariant() const;
293 
294 protected:
295 
300  virtual binary_section_space_schema_poset* clone() const;
301 
306  {
307  return const_cast<binary_section_space_schema_poset&>(*this);
308  };
309 
310 private:
311 
313 };
314 
315 } // namespace fiber_bundle
316 
317 #endif // BINARY_SECTION_SPACE_SCHEMA_POSET_H
virtual const char * class_name() const
The name of this class.
binary_section_space_schema_poset(const binary_section_space_schema_poset &xother)
Copy constructor; disabled.
virtual schema_poset_member * new_schema_handle(const std::string &xid_space_name, pod_index_type xschema_member_ext_id, pod_index_type xbase_space_ext_id, pod_index_type xfiber_schema_ext_id, pod_index_type xlocal_schema_ext_id)
Creates a member handle of the type appropriate for members of this when used as a schema...
virtual size_type cover_ct(bool xlower, pod_index_type xmbr_hub_id) const
The number of members in the lower cover (xlower true) or upper cover (xlower false) of the member wi...
namespace_poset * clone() const
Virtual constructor; creates a new handle of the same actual type as this, attached to the same state...
The default name space; a poset which contains other posets as members.
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
poset_type
Identifiers for poset types.
Definition: poset_type.h:41
A client handle for a general, abstract partially order set.
A path defined by a poset name and a member name separated by a forward slash (&#39;/&#39;). For example: "cell_definitions/triangle".
Definition: poset_path.h:48
A schema poset for a section space. A binary Cartesian product subspace of the binary tensor product ...
virtual bool le(pod_index_type xgreater, pod_index_type xlesser) const
True if hub id xlesser is less than or equal to hub id xgreater.
virtual bool is_jem(pod_index_type xmbr_hub_id, pod_index_type xother_hub_id) const
True if hub id xother_hub_id is join equivalent to hub id xmbr_hub_id.
Abstract base class with useful features for all objects.
Definition: any.h:39
virtual bool contains_link(pod_index_type xgreater, pod_index_type xlesser) const
True if there is a cover link between hub id xgreater and hub id xlesser.
virtual void merge_jems(pod_index_type xjem1, pod_index_type xjem2)
Merge the join-equivalence class of hub id xjem2 under that of hub id xjem1.
void new_state(const std::string &xname)
Creates a new namespace state with name xname and attaches this to it.
binary_section_space_schema_poset & operator=(const poset_state_handle &xother)
Assignment operator; disabled.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
virtual poset_type type_id() const
Identifier for the type of this poset.
virtual bool is_ancestor_of(const any *other) const
True if other conforms to this.
An abstract schema poset for a section space. A Cartesian product subspace of the tensor product of a...
bool invariant() const
Class invariant.
virtual pod_index_type greatest_jem(pod_index_type xmbr_hub_id) const
The hub id of the largest member which is join-equivalent to hub id xmbr_hub_id.
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.
virtual pod_index_type least_jem(pod_index_type xmbr_hub_id) const
The hub id of the smallest member which is join-equivalent to hub id xmbr_hub_id. ...
virtual bool leqv(pod_index_type xgreater, pod_index_type xlesser) const
True if hub id xlesser is less than or equivalent to hub id xgreater.
An array representation of abstract class poset_dof_map.
Namespace for the fiber_bundles component of the sheaf system.
A client handle for a poset member which has been prepared for use as a schema.