SheafSystem  0.0.0.0
at0_space.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 at0_space.
19 
20 #ifndef AT0_SPACE_H
21 #define AT0_SPACE_H
22 
23 #ifndef SHEAF_DLL_SPEC_H
24 #include "SheafSystem/sheaf_dll_spec.h"
25 #endif
26 
27 #ifndef ATP_SPACE_H
28 #include "SheafSystem/atp_space.h"
29 #endif
30 
31 namespace fiber_bundle
32 {
33 
34  using namespace sheaf;
35 
36  class at0;
37 
38 
42 class SHEAF_DLL_SPEC at0_space : public atp_space
43 {
44  friend class fiber_bundles_namespace;
45 
46 public:
47 
48  // ===========================================================
50  // ===========================================================
52 
53 public:
54 
58  typedef at0 member_type;
59 
63  static const std::string& standard_schema_poset_name();
64 
68  static const poset_path& standard_schema_path();
69 
74  static at0_space& new_table(namespace_type& xhost,
75  const poset_path& xpath,
76  const poset_path& xschema_path,
77  bool xauto_access);
78 
79 protected:
80 
85  at0_space();
86 
90  at0_space(const at0_space& xother) { };
91 
95  virtual ~at0_space();
96 
100  at0_space(at0* xtop, at0* xbottom);
101 
102 private:
103 
105 
106  // ===========================================================
108  // ===========================================================
110 
111 public:
112 
113 protected:
114 
118  virtual size_type covariant_subposet_ct() const;
119 
120 private:
121 
123 
124  // ===========================================================
126  // ===========================================================
128 
129 public:
130 
131  using vd_space::is_vector;
132 
136  virtual bool is_vector(pod_index_type xmbr_id, bool xauto_access) const;
137 
139 
143  virtual void put_is_vector(pod_index_type xmbr_id, bool xauto_access);
144 
145  using vd_space::is_covector;
146 
150  virtual bool is_covector(pod_index_type xmbr_id, bool xauto_access) const;;
151 
153 
157  virtual void put_is_covector(pod_index_type xmbr_id, bool xauto_access);
158 
159 protected:
160 
161 private:
162 
164 
165 
166  // ===========================================================
168  // ===========================================================
170 
171 public:
172 
173 protected:
174 
175 private:
176 
180  static bool make_prototype();
181 
183 
184  // ===========================================================
186  // ===========================================================
188 
189 public:
190 
194  virtual poset_type type_id() const;
195 
199  virtual const char* class_name() const;
200 
204  virtual pod_index_type prereq_id(int xi) const;
205 
206 protected:
207 
212  {
213  return const_cast<at0_space&>(*this);
214  };
215 
216 private:
217 
219 
220  // ===========================================================
222  // ===========================================================
224 
225 public:
226 
227 protected:
228 
229 private:
230 
232 
233 
234  // ===========================================================
236  // ===========================================================
238 
239 public:
240 
244  virtual bool is_ancestor_of(const any* xother) const;
245 
250  virtual at0_space* clone() const;
251 
255  virtual bool invariant() const;
256 
257 protected:
258 private:
259 
261 
262 };
263 
264 
265 } // namespace fiber_bundle
266 
267 
268 #endif // AT0_SPACE_H
virtual void put_is_covector(pod_index_type xmbr_id, bool xauto_access)
Sets is_covector true for the member with id xmbr_id.
Definition: vd_space.cc:573
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
A space of scalars viewed as an antisymmetric tensor space of degree 0.
Definition: at0_space.h:42
An abstract antisymmetric tensor space of degree p.
Definition: atp_space.h:42
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 member_type
The type of member associated with this space.
Definition: at0_space.h:58
virtual bool is_vector(pod_index_type xmbr_id, bool xauto_access) const
True if and only if the member with id xmbr_id is a vector (as opposed to a covector).
Definition: vd_space.cc:363
virtual void put_is_vector(pod_index_type xmbr_id, bool xauto_access)
Sets is_vector true for the member with id xmbr_id.
Definition: vd_space.cc:441
at0_space & operator=(const poset_state_handle &xother)
Assignment operator; disabled.
Definition: at0_space.h:211
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 bool is_covector(pod_index_type xmbr_id, bool xauto_access) const
True if and only if the member with id xmbr_id is a covector.
Definition: vd_space.cc:495
at0_space(const at0_space &xother)
Copy constructor; disabled.
Definition: at0_space.h:90
Namespace for the fiber_bundles component of the sheaf system.