SheafSystem  0.0.0.0
sec_tuple_space.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 SEC_TUPLE_SPACE_H
22 #define SEC_TUPLE_SPACE_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_REP_SPACE_H
29 #include "SheafSystem/sec_rep_space.h"
30 #endif
31 
32 #ifndef TUPLE_TABLE_DOFS_TYPE_H
33 #include "SheafSystem/tuple_table_dofs_type.h"
34 #endif
35 
36 namespace sheaf
37 {
38 class namespace_poset;
39 }
40 
41 namespace fiber_bundle
42 {
43 using namespace sheaf;
44 
45 class sec_tuple;
46 class tuple;
47 class fiber_bundles_namespace;
48 
49 
53 class SHEAF_DLL_SPEC sec_tuple_space : public sec_rep_space
54 {
55  friend class fiber_bundles_namespace;
56 
57  // ===========================================================
59  // ===========================================================
61 
62 public:
63 
68 
73 
77  typedef tuple fiber_type;
78 
83 
88 
93  static bool fiber_schema_conforms(const namespace_poset& xns,
94  const poset_path& xsection_schema_path,
95  const poset_path& xfiber_schema_path,
96  bool xauto_access);
97 
102  template <typename F>
103  static bool fiber_space_conforms(const namespace_poset& xns, const poset_path& xsection_schema_path, bool xauto_access);
104 
109  static sec_tuple_space& new_table(namespace_type& xhost,
110  const poset_path& xpath,
111  const poset_path& xschema_path,
112  bool xauto_access);
113 
114  //============================================================================
115  // TABLE DOFS
116  //============================================================================
117 
121  int factor_ct() const;
122 
126  int factor_ct(bool xauto_access) const;
127 
128 
129 protected:
130 
135  sec_tuple_space();
136 
140  sec_tuple_space(const sec_tuple_space& xother) { };
141 
145  virtual ~sec_tuple_space();
146 
150  sec_tuple_space(sec_tuple* xtop, sec_tuple* xbottom);
151 
152 private:
153 
155 
156 
157  // ===========================================================
159  // ===========================================================
161 
162 public:
163 
164 protected:
165 
166 private:
167 
171  static bool make_prototype();
172 
174 
175 
176  // ===========================================================
178  // ===========================================================
180 
181 public:
182 
186  virtual poset_type type_id() const;
187 
191  virtual const char* class_name() const;
192 
193 protected:
194 
199  {
200  return const_cast<sec_tuple_space&>(*this);
201  };
202 
203 private:
204 
206 
207 
208  // ===========================================================
210  // ===========================================================
212 
213 public:
214 
215 protected:
216 
217 private:
218 
220 
221 
222  // ===========================================================
224  // ===========================================================
226 
227 public:
228 
232  virtual bool is_ancestor_of(const any* xother) const;
233 
238  virtual sec_tuple_space* clone() const;
239 
243  virtual bool invariant() const;
244 
245 protected:
246 
247 private:
248 
250 
251 };
252 
253 
254 } // namespace fiber_bundle
255 
256 
257 #endif // SEC_TUPLE_SPACE_H
A Cartesian product section space.
sec_tuple scalar_type
The scalar type definition.
Table dofs type for class tuple_table_dofs_type.
sec_tuple_space & operator=(const poset_state_handle &xother)
Assignment operator; disabled.
A section of a bundle with fiber type tuple.
Definition: sec_tuple.h:53
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
Abstract base class with useful features for all objects.
Definition: any.h:39
tuple_table_dofs_type table_dofs_type
The table dofs type defined by the standard schema.
sec_tuple_space(const sec_tuple_space &xother)
Copy constructor; disabled.
sec_tuple member_type
The type of member associated with this space.
fiber_bundles_namespace namespace_type
The type of namespace for this type of member.
A member of a Cartesian product space; a tuple of attributes (persistent version).
Definition: tuple.h:191
tuple fiber_type
The fiber type.
Namespace for the sheaves component of the sheaf system.
void tuple(pod_index_type x, size_type xj_ub, pod_index_type &xi, pod_index_type &xj)
Ordinal to 2-tuple conversion.
Namespace for the fiber_bundles component of the sheaf system.
A handle for a poset whose members are numerical representations of sections of a fiber bundle...
Definition: sec_rep_space.h:61