SheafSystem  0.0.0.0
hash_index_space_handle.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 HASH_INDEX_SPACE_HANDLE_H
22 #define HASH_INDEX_SPACE_HANDLE_H
23 
24 #ifndef SHEAF_DLL_SPEC_H
25 #include "SheafSystem/sheaf_dll_spec.h"
26 #endif
27 
28 #ifndef SCATTERED_INSERTION_INDEX_SPACE_HANDLE_H
29 #include "SheafSystem/scattered_insertion_index_space_handle.h"
30 #endif
31 
32 namespace sheaf
33 {
34 
35 class hash_index_space_state;
36 
45 {
46 
47  friend class hash_index_space_state;
48 
49  // ===========================================================
51  // ===========================================================
53 
54 public:
55 
61  static hash_index_space_handle new_space(index_space_family& xid_spaces,
62  const std::string& xname,
63  bool xis_persistent,
64  size_type xcapacity);
65 
66 protected:
67 
68 private:
69 
71 
72 
73  // ===========================================================
75  // ===========================================================
77 
78 public:
79 
84 
89 
94  pod_type xindex);
95 
100  const std::string& xname);
101 
106  hash_index_space_handle& operator=(const hash_index_space_handle& xother);
107 
111  virtual ~hash_index_space_handle();
112 
113 protected:
114 
119 
121 
125  hash_index_space_state& state();
126 
130  const hash_index_space_state& state() const;
131 
132 private:
133 
135 
136 
137  // ===========================================================
139  // ===========================================================
141 
142 public:
143 
144 protected:
145 
146 private:
147 
149 
150 
151  // ===========================================================
153  // ===========================================================
155 
156 public:
157 
158 protected:
159 
160 private:
161 
163 
164 
165  // ===========================================================
167  // ===========================================================
169 
170 public:
171 
176  virtual hash_index_space_handle& operator=(const index_space_handle& xother);
177 
182  virtual hash_index_space_handle* clone() const;
183 
184 protected:
185 
186 private:
187 
189 
190 
191  // ===========================================================
193  // ===========================================================
195 
196 public:
197 
199 
204  virtual bool conforms_to_state(const index_space_collection& xhost,
205  pod_type xlocal_id) const;
206 
207 protected:
208 
209 private:
210 
212 
213 
214  // ===========================================================
216  // ===========================================================
218 
219 public:
220 
224  virtual bool is_ancestor_of(const any *other) const;
225 
229  virtual bool invariant() const;
230 
231 protected:
232 
233 private:
234 
236 
237 };
238 
239 // ===========================================================
240 // NON-MEMBER FUNCTIONS
241 // ===========================================================
242 
243 } // end namespace sheaf
244 
245 #endif // ifndef HASH_INDEX_SPACE_HANDLE_H
scattered_insertion_index_space_state & state()
The mutable id space state (mutable version).
An hash map implementation of class scattered_insertion_index_space_handle. This representation is in...
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
Abstract base class with useful features for all objects.
Definition: any.h:39
pod_index_type pod_type
The "plain old data" index type for this.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
A collection of id space states. This is a virtual class with provides an interface for accessing the...
An hash map implementation of class scattered_insertion_index_space_state. This representation is int...
virtual bool conforms_to_state(const index_space_collection &xhost, pod_type xlocal_id) const
True if this conforms to the handle type required by the state with local scope id xlocal_id in the h...
A handle for a scattered_insertion_index_space_state.
Namespace for the sheaves component of the sheaf system.
Factory and container for a family of id spaces.