SheafSystem  0.0.0.0
at1.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 AT1_H
22 #define AT1_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef ATP_H
29 #include "SheafSystem/atp.h"
30 #endif
31 
32 namespace fiber_bundle
33 {
34  class at1_space;
35 
36 //==============================================================================
37 // CLASS AT1_LITE
38 //==============================================================================
39 
44 class SHEAF_DLL_SPEC at1_lite : public atp_lite
45 {
46  //============================================================================
48  //============================================================================
50 
51 public:
52 
56  at1_lite();
57 
61  at1_lite(const at1_lite& xother);
62 
66  at1_lite& operator=(const at1_lite& xother);
67 
71  virtual ~at1_lite();
72 
76  at1_lite(const row_dofs_type& xrow_dofs);
77 
81  at1_lite& operator=(const row_dofs_type& xrow_dofs);
82 
83 
84 protected:
85 private:
86 
88 
89 
90  //============================================================================
92  //============================================================================
94 
95 public:
96 protected:
97 private:
98 
100 
101 
102  //============================================================================
104  //============================================================================
106 
107 public:
108 
114  enum static_const_int {P = 1};
115 
119  virtual int p() const;
120 
121 
122 protected:
123 private:
124 
126 
127 
128  //============================================================================
130  //============================================================================
132 
133 public:
134 protected:
135 private:
136 
138 
139 
140  //============================================================================
142  //============================================================================
144 
145 public:
146 protected:
147 private:
148 
150 
151 
152  //============================================================================
154  //============================================================================
156 
157 public:
158 
162  virtual const std::string& class_name() const;
163 
167  static const std::string& static_class_name();
168 
172  virtual at1_lite* clone() const;
173 
174 protected:
175 private:
176 
178 
179  //============================================================================
181  //============================================================================
183 
184 public:
185 
189  virtual bool is_ancestor_of(const any_lite& xother) const;
190 
194  bool invariant() const;
195 
196 
197 protected:
198 private:
199 
201 };
202 
203 //==============================================================================
204 // CLASS AT1
205 //==============================================================================
206 
211 class SHEAF_DLL_SPEC at1 : public atp
212 {
213  // ===========================================================
215  // ===========================================================
217 
218 public:
219 
224 
228  static const poset_path& standard_schema_path();
229 
233  static void make_standard_schema(namespace_poset& xns);
234 
240  static host_type& new_host(namespace_type& xns,
241  const poset_path& xhost_path,
242  const poset_path& xschema_path,
243  const poset_path& xscalar_space_path,
244  bool xauto_access);
245 
246 protected:
247 
248 private:
249 
251 
252 
253  //============================================================================
255  //============================================================================
257 
258 public:
259 
260  // Typedefs:
261 
266 
270  at1();
271 
276  at1(const poset_state_handle* xhost, pod_index_type xhub_id);
277 
282  at1(const poset_state_handle* xhost, const scoped_index& xid);
283 
288  at1(const poset_state_handle* xhost, const std::string& xname);
289 
293  explicit at1(abstract_poset_member* xother);
294 
298  at1(poset_state_handle* xhost, bool xauto_access = true);
299 
303  virtual at1& operator=(const abstract_poset_member& xother);
304 
308  at1& operator=(const at1& xother);
309 
313  virtual ~at1();
314 
318  virtual const volatile_type& lite_prototype() const;
319 
323  virtual volatile_type* lite_type() const;
324 
325 protected:
326 private:
327 
329 
330 
331  //============================================================================
333  //============================================================================
335 
336 public:
337 protected:
338 private:
339 
341 
342 
343  //============================================================================
345  //============================================================================
347 
348 public:
349 
355  enum static_const_int {P = 1};
356 
357 protected:
358 private:
359 
361 
362 
363  //============================================================================
365  //============================================================================
367 
368 public:
369 protected:
370 private:
371 
373 
374  //============================================================================
376  //============================================================================
378 
379 public:
380 
384  virtual const std::string& class_name() const;
385 
389  static const std::string& static_class_name();
390 
396  inline at1* clone(bool xnew_state, bool xauto_access = true) const
397  {
398  return static_cast<at1*>(atp::clone(xnew_state, xauto_access));
399  }
400 
401 protected:
402 private:
403 
405 
406 
407  // ===========================================================
409  // ===========================================================
411 
412 public:
413 
417  host_type* host() const;
418 
422  virtual bool host_is_ancestor_of(const poset_state_handle* other) const;
423 
424 protected:
425 
426 private:
427 
429 
430  //============================================================================
432  //============================================================================
434 
435 public:
436 
440  bool is_ancestor_of(const any* xother) const;
441 
445  virtual at1* clone() const;
446 
450  bool invariant() const;
451 
452 protected:
453 private:
454 
456 };
457 
458 } // namespace fiber_bundle
459 
460 #endif // ifndef AT1_H
An antisymmetric tensor of degree p.
Definition: atp.h:190
The default name space; a poset which contains other posets as members.
A general antisymmetric tensor of degree 1 over an abstract vector space (persistent version)...
Definition: at1.h:211
The standard fiber bundles name space; extends the standard sheaves namespace by defining base space...
A general antisymmetric tensor of degree 1 over an abstract vector space (volatile version)...
Definition: at1.h:44
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
static_const_int
The tensor degree (static version)
Definition: at1.h:355
An antisymmetric tensor of degree p over an abstract vector space (volatile version).
Definition: atp.h:44
Abstract base class with useful features for all volatile objects.
Definition: any_lite.h:48
Abstract base class with useful features for all objects.
Definition: any.h:39
static_const_int
The tensor degree (static version)
Definition: at1.h:114
at1_lite volatile_type
The associated volatile type.
Definition: at1.h:265
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
at1 * clone(bool xnew_state, bool xauto_access=true) const
Make a new handle instance of current. Attach the new instance to a new state if xnew_state is true...
Definition: at1.h:396
An abstract vector space viewed as an antisymmetric tensor space of degree 1.
Definition: at1_space.h:42
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
virtual atp * clone() const
Make a new handle, no state instance of current.
Definition: atp.cc:899
An abstract client handle for a member of a poset.
Namespace for the fiber_bundles component of the sheaf system.
Row dofs type for class vd.
Definition: vd.h:61
at1_space host_type
The type of host poset.
Definition: at1.h:223