SheafSystem  0.0.0.0
tuple_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 tuple_space.
19 
20 #ifndef TUPLE_SPACE_H
21 #define TUPLE_SPACE_H
22 
23 #ifndef SHEAF_DLL_SPEC_H
24 #include "SheafSystem/sheaf_dll_spec.h"
25 #endif
26 
27 #ifndef POSET_H
28 #include "SheafSystem/poset.h"
29 #endif
30 
31 #ifndef TUPLE_TABLE_DOFS_TYPE_H
32 #include "SheafSystem/tuple_table_dofs_type.h"
33 #endif
34 
35 
36 namespace sheaf
37 {
38  class namespace_poset;
39 }
40 
41 namespace fiber_bundle
42 {
43 
44  using namespace sheaf;
45 
46  class fiber_bundles_namespace;
47  class tuple;
48 
52 class SHEAF_DLL_SPEC tuple_space : public poset
53 {
54  friend class fiber_bundles_namespace;
55 
56  // ===========================================================
58  // ===========================================================
60 
61 public:
62 
67 
71  typedef tuple member_type;
72 
76  static const std::string& standard_schema_poset_name();
77 
81  static const poset_path& standard_schema_path();
82 
87 
93  static tuple_space& new_table(namespace_type& xhost,
94  const poset_path& xpath,
95  const poset_path& xschema_path,
96  int xfactor_ct,
97  bool xauto_access);
98 
99  //============================================================================
100  // TABLE DOFS
101  //============================================================================
102 
106  int factor_ct() const;
107 
111  int factor_ct(bool xauto_access) const;
112 
113 
114 protected:
115 
120  tuple_space();
121 
125  tuple_space(const tuple_space& xother) { };
126 
130  virtual ~tuple_space();
131 
135  tuple_space(tuple* xtop, tuple* xbottom);
136 
137 private:
138 
140 
141  // ===========================================================
143  // ===========================================================
145 
146 public:
147 
148 protected:
149 
150 private:
151 
155  static bool make_prototype();
156 
158 
159  // ===========================================================
161  // ===========================================================
163 
164 public:
165 
169  virtual poset_type type_id() const;
170 
174  virtual const char* class_name() const;
175 
176 protected:
177 
182  {
183  return const_cast<tuple_space&>(*this);
184  };
185 
186 private:
187 
189 
190  // ===========================================================
192  // ===========================================================
194 
195 public:
196 
200  virtual bool is_ancestor_of(const any* xother) const;
201 
206  virtual tuple_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 // TUPLE_SPACE_H
tuple_space & operator=(const poset_state_handle &xother)
Assignment operator; disabled.
Definition: tuple_space.h:181
Table dofs type for class tuple_table_dofs_type.
tuple member_type
The type of member associated with this space.
Definition: tuple_space.h:71
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
A Cartesian product space.
Definition: tuple_space.h:52
tuple_space(const tuple_space &xother)
Copy constructor; disabled.
Definition: tuple_space.h:125
Abstract base class with useful features for all objects.
Definition: any.h:39
A client handle for a mutable partially ordered set.
Definition: poset.h:40
tuple_table_dofs_type table_dofs_type
The table dofs type defined by the standard schema.
Definition: tuple_space.h:86
A member of a Cartesian product space; a tuple of attributes (persistent version).
Definition: tuple.h:191
Namespace for the sheaves component of the sheaf system.
void tuple(pod_index_type x, size_type xj_ub, pod_index_type &xi, pod_index_type &xj)
Ordinal to 2-tuple conversion.
fiber_bundles_namespace namespace_type
The type of namespace for this type of member.
Definition: tuple_space.h:66
Namespace for the fiber_bundles component of the sheaf system.