SheafSystem  0.0.0.0
sec_at0_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_AT0_SPACE_H
22 #define SEC_AT0_SPACE_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_ATP_SPACE_H
29 #include "SheafSystem/sec_atp_space.h"
30 #endif
31 
32 namespace sheaf
33 {
34 class namespace_poset;
35 }
36 
37 namespace fiber_bundle
38 {
39 using namespace sheaf;
40 
41 class sec_at0;
42 class at0;
43 
48 class SHEAF_DLL_SPEC sec_at0_space : public sec_atp_space
49 {
50  friend class fiber_bundles_namespace;
51 
52  // ===========================================================
54  // ===========================================================
56 
57 public:
58 
63 
67  typedef at0 fiber_type;
68 
73 
78  static sec_at0_space& new_table(namespace_type& xhost,
79  const poset_path& xpath,
80  const poset_path& xschema_path,
81  bool xauto_access);
82 
83 
84 protected:
85 
90  sec_at0_space();
91 
95  sec_at0_space(const sec_at0_space& xother) { };
96 
100  virtual ~sec_at0_space();
101 
105  sec_at0_space(sec_at0* xtop, sec_at0* xbottom);
106 
107 private:
108 
110 
111 
112  // ===========================================================
114  // ===========================================================
116 
117 public:
118 
119 protected:
120 
121 private:
122 
124 
125 
126  // ===========================================================
128  // ===========================================================
130 
131 public:
132 
133 protected:
134 
135 private:
136 
138 
139 
140  // ===========================================================
142  // ===========================================================
144 
145 public:
146 
147  using sec_vd_space::is_vector;
148 
152  virtual bool is_vector(pod_index_type xmbr_id, bool xauto_access) const;
153 
154  using sec_vd_space::put_is_vector;
155 
159  virtual void put_is_vector(pod_index_type xmbr_id, bool xauto_access);
160 
161  using sec_vd_space::is_covector;
162 
166  virtual bool is_covector(pod_index_type xmbr_id, bool xauto_access) const;;
167 
168  using sec_vd_space::put_is_covector;
169 
173  virtual void put_is_covector(pod_index_type xmbr_id, bool xauto_access);
174 
175 protected:
176 
180  virtual size_type covariant_subposet_ct() const;
181 
182 private:
183 
185 
186 
187  // ===========================================================
189  // ===========================================================
191 
192 public:
193 
194 protected:
195 
196 private:
197 
199 
200 
201  // ===========================================================
203  // ===========================================================
205 
206 public:
207 
208 protected:
209 
210 private:
211 
215  static bool make_prototype();
216 
218 
219 
220  // ===========================================================
222  // ===========================================================
224 
225 public:
226 
230  virtual poset_type type_id() const;
231 
235  virtual const char* class_name() const;
236 
240  virtual pod_index_type prereq_id(int xi) const;
241 
242 protected:
243 
248  {
249  return const_cast<sec_at0_space&>(*this);
250  };
251 
252 private:
253 
255 
256 
257  // ===========================================================
259  // ===========================================================
261 
262 public:
263 
264 protected:
265 
266 private:
267 
269 
270 
271  // ===========================================================
273  // ===========================================================
275 
276 public:
277 
281  virtual bool is_ancestor_of(const any* xother) const;
282 
287  virtual sec_at0_space* clone() const;
288 
292  virtual bool invariant() const;
293 
294 protected:
295 
296 private:
297 
299 
300 };
301 
302 
303 } // namespace fiber_bundle
304 
305 
306 #endif // SEC_AT0_SPACE_H
sec_at0_space & operator=(const poset_state_handle &xother)
Assignment operator; disabled.
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
sec_at0 member_type
The type of member associated with this space.
Definition: sec_at0_space.h:62
Abstract base class with useful features for all objects.
Definition: any.h:39
A space of scalars viewed as an antisymmetric tensor section space of degree 0.
Definition: sec_at0_space.h:48
An abstract antisymmetric tensor section space of degree p.
Definition: sec_atp_space.h:47
A scalar viewed as an antisymmetric tensor of degree 0. As the degree is 0 there is nothing to be sym...
Definition: at0.h:424
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
at0 fiber_type
The fiber type.
Definition: sec_at0_space.h:67
sec_at0 scalar_type
The scalar type definition.
Definition: sec_at0_space.h:72
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.
sec_at0_space(const sec_at0_space &xother)
Copy constructor; disabled.
Definition: sec_at0_space.h:95
Namespace for the fiber_bundles component of the sheaf system.
Antisymetric tensor of degree 0. As the degree is 0 there is nothing to be symmetric or antisymmetric...
Definition: sec_at0.h:51