SheafSystem  0.0.0.0
sec_stp_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_STP_SPACE_H
22 #define SEC_STP_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_stp;
42 class stp;
43 
47 class SHEAF_DLL_SPEC sec_stp_space : public sec_tp_space
48 {
49  friend class fiber_bundles_namespace;
50 
51  // ===========================================================
53  // ===========================================================
55 
56 public:
57 
62 
66  typedef stp fiber_type;
67 
72 
78  static sec_stp_space& new_table(namespace_type& xhost,
79  const poset_path& xpath,
80  const poset_path& xschema_path,
81  const poset_path& xvector_space_path,
82  bool xauto_access);
83 
84 protected:
85 
90  sec_stp_space();
91 
95  sec_stp_space(const sec_stp_space& xother) { };
96 
100  virtual ~sec_stp_space();
101 
105  sec_stp_space(sec_stp* xtop, sec_stp* xbottom);
106 
107 private:
108 
110 
111 
112  // ===========================================================
114  // ===========================================================
116 
117 public:
118 
119  using sec_tp_space::d;
120 
124  virtual int d(int xp, int xdd) const;
125 
130  virtual tensor_variance round_variance(const tensor_variance& xvariance) const;
131 
132 protected:
133 
137  virtual size_type covariant_subposet_ct() const;
138 
139 private:
140 
142 
143 
144  // ===========================================================
146  // ===========================================================
148 
149 public:
150 
151 protected:
152 
153 private:
154 
156 
157 
158  // ===========================================================
160  // ===========================================================
162 
163 public:
164 
165 protected:
166 
167 private:
168 
170 
171 
172  // ===========================================================
174  // ===========================================================
176 
177 public:
178 
179 protected:
180 
181 private:
182 
186  static bool make_prototype();
187 
189 
190 
191  // ===========================================================
193  // ===========================================================
195 
196 public:
197 
201  virtual poset_type type_id() const;
202 
206  virtual const char* class_name() const;
207 
208 protected:
209 
214  {
215  return const_cast<sec_stp_space&>(*this);
216  };
217 
218 private:
219 
221 
222 
223  // ===========================================================
225  // ===========================================================
227 
228 public:
229 
230 protected:
231 
232 private:
233 
235 
236 
237  // ===========================================================
239  // ===========================================================
241 
242 public:
243 
247  virtual bool is_ancestor_of(const any* xother) const;
248 
253  virtual sec_stp_space* clone() const;
254 
258  virtual bool invariant() const;
259 
260 protected:
261 
262 private:
263 
265 
266 };
267 
268 
269 } // namespace fiber_bundle
270 
271 
272 #endif // SEC_STP_SPACE_H
An abstract symmetric tensor section space of degree p.
Definition: sec_stp_space.h:47
A symmetric tensor of degree p over an abstract vector space.
Definition: stp.h:190
The "type" of a tensor; specifies the degree and the co- or contra-variance for each index of a tenso...
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
sec_stp_space(const sec_stp_space &xother)
Copy constructor; disabled.
Definition: sec_stp_space.h:95
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
stp fiber_type
The fiber type.
Definition: sec_stp_space.h:66
Abstract base class with useful features for all objects.
Definition: any.h:39
An abstract tensor section space of degree p.
Definition: sec_tp_space.h:53
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
A section of a bundle with fiber type stp.
Definition: sec_stp.h:48
sec_stp member_type
The type of member associated with this space.
Definition: sec_stp_space.h:61
sec_stp scalar_type
The scalar type definition.
Definition: sec_stp_space.h:71
Namespace for the sheaves component of the sheaf system.
Namespace for the fiber_bundles component of the sheaf system.
sec_stp_space & operator=(const poset_state_handle &xother)
Assignment operator; disabled.