SheafSystem  0.0.0.0
at1_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 at1_space.
19 
20 #ifndef AT1_SPACE_H
21 #define AT1_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 at1;
37 
38 
42 class SHEAF_DLL_SPEC at1_space : public atp_space
43 {
44  friend class fiber_bundles_namespace;
45 
46 public:
47 
48  // ===========================================================
50  // ===========================================================
52 
53 public:
54 
58  typedef at1 member_type;
59 
63  static const std::string& standard_schema_poset_name();
64 
68  static const poset_path& standard_schema_path();
69 
75  static at1_space& new_table(namespace_type& xhost,
76  const poset_path& xpath,
77  const poset_path& xschema_path,
78  const poset_path& xscalar_space_path,
79  bool xauto_access);
80 
81 protected:
82 
87  at1_space();
88 
92  at1_space(const at1_space& xother) { };
93 
97  virtual ~at1_space();
98 
102  at1_space(at1* xtop, at1* xbottom);
103 
104 private:
105 
107 
108  // ===========================================================
110  // ===========================================================
112 
113 public:
114 
115 protected:
116 
117 private:
118 
120 
121 
122  // ===========================================================
124  // ===========================================================
126 
127 public:
128 
129 protected:
130 
131 private:
132 
136  static bool make_prototype();
137 
139 
140  // ===========================================================
142  // ===========================================================
144 
145 public:
146 
150  virtual poset_type type_id() const;
151 
155  virtual const char* class_name() const;
156 
160  virtual pod_index_type prereq_id(int xi) const;
161 
162 protected:
163 
168  {
169  return const_cast<at1_space&>(*this);
170  };
171 
172 private:
173 
175 
176  // ===========================================================
178  // ===========================================================
180 
181 public:
182 
183 protected:
184 
185 private:
186 
188 
189 
190  // ===========================================================
192  // ===========================================================
194 
195 public:
196 
200  virtual bool is_ancestor_of(const any* xother) const;
201 
206  virtual at1_space* clone() const;
207 
211  virtual bool invariant() const;
212 
213 protected:
214 private:
215 
217 
218 };
219 
220 
221 } // namespace fiber_bundle
222 
223 
224 #endif // AT1_SPACE_H
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...
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
at1_space & operator=(const poset_state_handle &xother)
Assignment operator; disabled.
Definition: at1_space.h:167
Abstract base class with useful features for all objects.
Definition: any.h:39
at1_space(const at1_space &xother)
Copy constructor; disabled.
Definition: at1_space.h:92
An abstract antisymmetric tensor space of degree p.
Definition: atp_space.h:42
An abstract vector space viewed as an antisymmetric tensor space of degree 1.
Definition: at1_space.h:42
at1 member_type
The type of member associated with this space.
Definition: at1_space.h:58
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.
Namespace for the fiber_bundles component of the sheaf system.