SheafSystem  0.0.0.0
jcb_ed.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 JCB_ED_H
22 #define JCB_ED_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef JCB_H
29 #include "SheafSystem/jcb.h"
30 #endif
31 
32 namespace fiber_bundle
33 {
34  class ed;
35 
36 //==============================================================================
37 // CLASS JDB_ED_LITE
38 //==============================================================================
39 
44 class SHEAF_DLL_SPEC jcb_ed_lite : public jcb_lite
45 {
46  //============================================================================
48  //============================================================================
50 
51 public:
52 
56  jcb_ed_lite();
57 
61  jcb_ed_lite(const jcb_ed_lite& xother);
62 
66  jcb_ed_lite& operator=(const jcb_ed_lite& xother);
67 
71  virtual ~jcb_ed_lite();
72 
76  jcb_ed_lite(const row_dofs_type& xrow_dofs);
77 
81  jcb_ed_lite& operator=(const row_dofs_type& xrow_dofs);
82 
83 protected:
84 private:
85 
87 
88 
89  //============================================================================
91  //============================================================================
93 
94 public:
95 protected:
96 private:
97 
99 
100 
101  //============================================================================
103  //============================================================================
105 
106 public:
107 protected:
108 private:
109 
111 
112 
113  //============================================================================
115  //============================================================================
117 
118 public:
119 protected:
120 private:
121 
123 
124 
125  //============================================================================
127  //============================================================================
129 
130 public:
131 
135  virtual const std::string& class_name() const;
136 
140  static const std::string& static_class_name();
141 
145  virtual jcb_ed_lite* clone() const;
146 
147 protected:
148 private:
149 
151 
152 
153  //============================================================================
155  //============================================================================
157 
158 public:
159 
163  virtual bool is_ancestor_of(const any_lite& xother) const;
164 
168  bool invariant() const;
169 
170 protected:
171 private:
172 
174 };
175 
176 //==============================================================================
177 // CLASS JDB_ED
178 //==============================================================================
179 
184 
185 class SHEAF_DLL_SPEC jcb_ed : public jcb
186 {
187 
188  // ===========================================================
190  // ===========================================================
192 
193 public:
194 
198  static const poset_path& standard_schema_path();
199 
203  static void make_standard_schema(namespace_poset& xns);
204 
211  static host_type& new_host(namespace_type& xns,
212  const poset_path& xhost_path,
213  const poset_path& xschema_path,
214  const poset_path& xdomain_path,
215  const poset_path& xrange_path,
216  bool xauto_access);
217 
218 protected:
219 
220 private:
221 
223 
224 
225  //============================================================================
227  //============================================================================
229 
230 public:
231 
235  typedef ed domain_type;
236 
240  typedef ed range_type;
241 
246 
250  jcb_ed();
251 
256  jcb_ed(const poset_state_handle* xhost, pod_index_type xhub_id);
257 
262  jcb_ed(const poset_state_handle* xhost, const scoped_index& xid);
263 
268  jcb_ed(const poset_state_handle* xhost, const std::string& xname);
269 
273  explicit jcb_ed(abstract_poset_member* xother);
274 
278  jcb_ed(poset_state_handle* xhost, bool xauto_access = true);
279 
283  virtual jcb_ed& operator=(const abstract_poset_member& xother);
284 
288  jcb_ed& operator=(const jcb_ed& xother);
289 
293  ~jcb_ed();
294 
298  virtual const volatile_type& lite_prototype() const;
299 
303  virtual volatile_type* lite_type() const;
304 
305 
306  //============================================================================
308  //============================================================================
310 
311 public:
312 protected:
313 private:
314 
316 
317 
318  //============================================================================
320  //============================================================================
322 
323 public:
324 
325 protected:
326 
327 private:
328 
330 
331 
332  //============================================================================
334  //============================================================================
336 
337 public:
338 
342  virtual const std::string& class_name() const;
343 
347  static const std::string& static_class_name();
348 
352  virtual jcb_ed* clone() const;
353 
359  inline jcb_ed* clone(bool xnew_state, bool xauto_access = true) const
360  {
361  return static_cast<jcb_ed*>(jcb::clone(xnew_state, xauto_access));
362  }
363 
364 protected:
365 private:
366 
368 
369 
370  //============================================================================
372  //============================================================================
374 
375 public:
376 
380  bool is_ancestor_of(const any* xother) const;
381 
385  bool invariant() const;
386 
387 protected:
388 private:
389 
391 };
392 
393 } // namespace fiber_bundle
394 
395 #endif // ifndef JCB_ED_H
Abstract jacobian for d dimensional Euclidean space (volatile version).
Definition: jcb_ed.h:44
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...
ed domain_type
The type of domain vector space.
Definition: jcb_ed.h:235
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 volatile objects.
Definition: any_lite.h:48
Abstract base class with useful features for all objects.
Definition: any.h:39
Abstract jacobian class (volatile version).
Definition: jcb.h:54
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
Abstract jacobian class.
Definition: jcb.h:229
virtual jcb * clone() const
Make a new handle, no state instance of current.
Definition: jcb.cc:1276
Euclidean vector space of dimension d (peresistent version).
Definition: ed.h:210
An abstract space of Jacobians.
Definition: jcb_space.h:46
jcb_ed_lite volatile_type
The associated volatile type.
Definition: jcb_ed.h:245
int_type pod_index_type
The plain old data index type.
Definition: pod_types.h:49
ed range_type
The type of range vector space.
Definition: jcb_ed.h:240
jcb_ed * 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: jcb_ed.h:359
Abstract jacobian for d dimensional Euclidean space (persistent version).
Definition: jcb_ed.h:185
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