SheafSystem  0.0.0.0
sec_atp_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_ATP_SPACE_H
22 #define SEC_ATP_SPACE_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SEC_TP_SPACE_H
29 #include "SheafSystem/sec_tp_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_atp;
42 class atp;
43 
47 class SHEAF_DLL_SPEC sec_atp_space : public sec_tp_space
48 {
49  friend class fiber_bundles_namespace;
50 
51  // ===========================================================
53  // ===========================================================
55 
56 public:
57 
62 
66  typedef atp fiber_type;
67 
73  static sec_atp_space& new_table(namespace_type& xhost,
74  const poset_path& xpath,
75  const poset_path& xschema_path,
76  const poset_path& xvector_space_path,
77  bool xauto_access);
78 
83  bool is_p_form(pod_index_type xmbr_id, bool xauto_access) const;
84 
89  bool is_p_form(const scoped_index& xmbr_id, bool xauto_access) const;
90 
95  void put_is_p_form(pod_index_type xmbr_id, bool xauto_access);
96 
101  void put_is_p_form(const scoped_index& xmbr_id, bool xauto_access);
102 
107  bool is_p_vector(pod_index_type xmbr_id, bool xauto_access) const;
108 
113  bool is_p_vector(const scoped_index& xmbr_id, bool xauto_access) const;
114 
119  void put_is_p_vector(pod_index_type xmbr_id, bool xauto_access);
120 
125  void put_is_p_vector(const scoped_index& xmbr_id, bool xauto_access);
126 
127 protected:
128 
133  sec_atp_space();
134 
138  sec_atp_space(const sec_atp_space& xother) { };
139 
143  virtual ~sec_atp_space();
144 
148  sec_atp_space(sec_atp* xtop, sec_atp* xbottom);
149 
150 private:
151 
153 
154 
155  // ===========================================================
157  // ===========================================================
159 
160 public:
161 
162  using sec_tp_space::d;
163 
167  virtual int d(int xp, int xdd) const;
168 
173  virtual tensor_variance round_variance(const tensor_variance& xvariance) const;
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 
213 
214 
215  // ===========================================================
217  // ===========================================================
219 
220 public:
221 
222 protected:
223 
224 private:
225 
229  static bool make_prototype();
230 
232 
233 
234  // ===========================================================
236  // ===========================================================
238 
239 public:
240 
244  virtual poset_type type_id() const;
245 
249  virtual const char* class_name() const;
250 
251 protected:
252 
257  {
258  return const_cast<sec_atp_space&>(*this);
259  };
260 
261 private:
262 
264 
265 
266  // ===========================================================
268  // ===========================================================
270 
271 public:
272 
273 protected:
274 
275 private:
276 
278 
279 
280  // ===========================================================
282  // ===========================================================
284 
285 public:
286 
290  virtual bool is_ancestor_of(const any* xother) const;
291 
296  virtual sec_atp_space* clone() const;
297 
301  virtual bool invariant() const;
302 
303 protected:
304 
305 private:
306 
308 
309 };
310 
311 
312 } // namespace fiber_bundle
313 
314 
315 #endif // SEC_ATP_SPACE_H
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 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_atp_space & operator=(const poset_state_handle &xother)
Assignment operator; disabled.
sec_atp member_type
The type of member associated with this space.
Definition: sec_atp_space.h:61
Abstract base class with useful features for all objects.
Definition: any.h:39
An abstract antisymmetric tensor section space of degree p.
Definition: sec_atp_space.h:47
An abstract tensor section space of degree p.
Definition: sec_tp_space.h:53
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
A section of a bundle with fiber type atp.
Definition: sec_atp.h:48
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
atp fiber_type
The fiber type.
Definition: sec_atp_space.h:66
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_atp_space(const sec_atp_space &xother)
Copy constructor; disabled.
Namespace for the fiber_bundles component of the sheaf system.