SheafSystem  0.0.0.0
atp_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 atp_space.
19 
20 #ifndef ATP_SPACE_H
21 #define ATP_SPACE_H
22 
23 #ifndef SHEAF_DLL_SPEC_H
24 #include "SheafSystem/sheaf_dll_spec.h"
25 #endif
26 
27 #ifndef TP_SPACE_H
28 #include "SheafSystem/tp_space.h"
29 #endif
30 
31 namespace fiber_bundle
32 {
33 
34  using namespace sheaf;
35 
36  class atp;
37 
38 
42 class SHEAF_DLL_SPEC atp_space : public tp_space
43 {
44  friend class fiber_bundles_namespace;
45 
46 public:
47 
48  // ===========================================================
50  // ===========================================================
52 
53 public:
54 
58  typedef atp member_type;
59 
63  static const std::string& standard_schema_poset_name();
64 
68  static const poset_path& standard_schema_path();
69 
70  using tp_space::d;
71 
76  static int d(const namespace_poset& xns, int xp, const poset_path& xvector_space_path, bool xauto_access);
77 
84  static atp_space& new_table(namespace_type& xhost,
85  const poset_path& xpath,
86  const poset_path& xschema_path,
87  int xp,
88  const poset_path& xvector_space_path,
89  bool xauto_access);
90 
95  bool is_p_form(pod_index_type xmbr_id, bool xauto_access) const;
96 
101  bool is_p_form(const scoped_index& xmbr_id, bool xauto_access) const;
102 
107  void put_is_p_form(pod_index_type xmbr_id, bool xauto_access);
108 
113  void put_is_p_form(const scoped_index& xmbr_id, bool xauto_access);
114 
119  bool is_p_vector(pod_index_type xmbr_id, bool xauto_access) const;
120 
125  bool is_p_vector(const scoped_index& xmbr_id, bool xauto_access) const;
126 
131  void put_is_p_vector(pod_index_type xmbr_id, bool xauto_access);
132 
137  void put_is_p_vector(const scoped_index& xmbr_id, bool xauto_access);
138 
139 protected:
140 
145  atp_space();
146 
150  atp_space(const atp_space& xother) { };
151 
155  virtual ~atp_space();
156 
160  atp_space(atp* xtop, atp* xbottom);
161 
162 private:
163 
165 
166  // ===========================================================
168  // ===========================================================
170 
171 public:
172 
176  virtual int d(int xp, int xdd) const;
177 
182  virtual tensor_variance round_variance(const tensor_variance& xvariance) const;
183 
184 protected:
185 
189  virtual size_type covariant_subposet_ct() const;
190 
191 private:
192 
194 
195 
196  // ===========================================================
198  // ===========================================================
200 
201 public:
202 
203 protected:
204 
205 private:
206 
210  static bool make_prototype();
211 
213 
214  // ===========================================================
216  // ===========================================================
218 
219 public:
220 
224  virtual poset_type type_id() const;
225 
229  virtual const char* class_name() const;
230 
231 protected:
232 
237  {
238  return const_cast<atp_space&>(*this);
239  };
240 
241 private:
242 
244 
245  // ===========================================================
247  // ===========================================================
249 
250 public:
251 
252 protected:
253 
254 private:
255 
257 
258 
259  // ===========================================================
261  // ===========================================================
263 
264 public:
265 
269  virtual bool is_ancestor_of(const any* xother) const;
270 
275  virtual atp_space* clone() const;
276 
280  virtual bool invariant() const;
281 
282 protected:
283 private:
284 
286 
287 };
288 
289 
290 } // namespace fiber_bundle
291 
292 
293 #endif // ATP_SPACE_H
atp_space & operator=(const poset_state_handle &xother)
Assignment operator; disabled.
Definition: atp_space.h:236
The "type" of a tensor; specifies the degree and the co- or contra-variance for each index of a tenso...
An antisymmetric tensor of degree p.
Definition: atp.h:190
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
An abstract antisymmetric tensor space of degree p.
Definition: atp_space.h:42
atp_space(const atp_space &xother)
Copy constructor; disabled.
Definition: atp_space.h:150
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
atp member_type
The type of member associated with this space.
Definition: atp_space.h:58
int d() const
The dimension.
Definition: vd_space.cc:174
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.
An abstract tensor space of degree p.
Definition: tp_space.h:47
Namespace for the fiber_bundles component of the sheaf system.