SheafSystem  0.0.0.0
index_space_collection.cc
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 #include "SheafSystem/abstract_product_structure.h"
22 #include "SheafSystem/index_space_collection.h"
23 #include "SheafSystem/assert_contract.h"
24 #include "SheafSystem/explicit_index_space_state.h"
25 #include "SheafSystem/hub_index_space_handle.h"
26 #include "SheafSystem/index_space_family.h"
27 #include "SheafSystem/index_space_iterator.h"
28 #include "SheafSystem/scoped_index.h"
29 
30 // ===========================================================
31 // INDEX_SPACE_COLLECTION FACET
32 // ===========================================================
33 
34 // PUBLIC MEMBER FUNCTIONS
35 
38 {
39  // Preconditions:
40 
41  // Body:
42 
43  // nothing to do.
44 
45  // Postconditions:
46 
47  // Exit:
48 
49  return;
50 }
51 
52 bool
54 operator==(const index_space_collection& xother) const
55 {
56  // Preconditions:
57 
58  require(is_ancestor_of(&xother));
59 
60  // Body:
61 
62  bool result = false; // Just to silence compiler warnings.
63 
64  is_abstract();
65 
66  // Postconditions:
67 
68  // Exit
69 
70  return result;
71 }
72 
73 bool
75 contains(pod_type xlocal_id) const
76 {
77  // Preconditions:
78 
79  // Body:
80 
81  bool result = false; // Just to silence compiler warnings.
82 
83  is_abstract();
84 
85  // Postconditions:
86 
87  ensure(is_basic_query);
88 
89  // Exit:
90 
91  return result;
92 }
93 
94 bool
96 contains_family(pod_type xspace_id) const
97 {
98  // Preconditions:
99 
100  // Body:
101 
102  bool result = false; // Just to silence compiler warnings.
103 
104  is_abstract();
105 
106  // Postconditions:
107 
108  ensure(is_basic_query);
109 
110  // Exit:
111 
112  return result;
113 }
114 
118 {
119  // Preconditions:
120 
121  // Body:
122 
123  pod_type result = 0; // Just to silence compiler warnings.
124 
125  is_abstract();
126 
127  // Postconditions:
128 
129  ensure(!is_valid(result) || contains(result));
130 
131  // Exit:
132 
133  return result;
134 }
135 
138 family_scope(pod_type xlocal_id) const
139 {
140  // Preconditions:
141 
142  // Body:
143 
144  pod_type result = 0; // Just to silence compiler warnings.
145 
146  is_abstract();
147 
148  // Postconditions:
149 
150  ensure(!is_valid(result) || contains_family(result));
151 
152  // Exit:
153 
154  return result;
155 }
156 
159 deep_size(bool xinclude_shallow) const
160 {
161  // Preconditions:
162 
163  // Body:
164 
165  size_type result = 0; // To silence the compiler
166 
167  is_abstract();
168 
169  // Postconditions:
170 
171  ensure(result >= 0);
172 
173  // Exit:
174 
175  return result;
176 }
177 
178 // PROTECTED MEMBER FUNCTIONS
179 
182 {
183  // Preconditions:
184 
185  // Body:
186 
187  // Postconditions:
188 
189  ensure(invariant());
190 
191  // Exit:
192 
193  return;
194 }
195 
199 {
200  // Preconditions:
201 
202  require(is_ancestor_of(&xother));
203 
204  // Body:
205 
206  is_abstract();
207 
208  // Postconditions:
209 
210  ensure(invariant());
211  ensure((*this) == xother);
212 
213  // Exit:
214 
215  return *this;
216 }
217 
220 explicit_state(pod_type xlocal_id) const
221 {
222  // Preconditions:
223 
224  // Body:
225 
226  explicit_index_space_state* result = 0; // Just to silence compiler warnings.
227 
228  is_abstract();
229 
230  // Postconditions:
231 
232  ensure(is_basic_query);
233 
234  // Exit:
235 
236  return result;
237 }
238 
239 // PRIVATE MEMBER FUNCTIONS
240 
241 
242 // ===========================================================
243 // INDEX SPACE FACET
244 // ===========================================================
245 
246 // PUBLIC MEMBER FUNCTIONS
247 
250 id_spaces() const
251 {
252  // Preconditions:
253 
254  // Body:
255 
256  const index_space_family* result = 0; // Just to silence compiler warnings.
257 
258  is_abstract();
259 
260  // Postconditions:
261 
262  ensure(is_basic_query);
263 
264  // Exit:
265 
266  return *result;
267 }
268 
272 {
273  // Preconditions:
274 
275  // Body:
276 
277  index_space_family* result = 0; // Just to silence compiler warnings.
278 
279  is_abstract();
280 
281  // Postconditions:
282 
283  ensure(is_basic_query);
284 
285  // Exit:
286 
287  return *result;
288 }
289 
293 {
294  // Preconditions:
295 
296  // Body:
297 
298  const hub_index_space_handle& result = id_spaces().hub_id_space();
299 
300  // Postconditions:
301 
302  ensure(is_basic_query);
303 
304  // Exit:
305 
306  return result;
307 }
308 
311 ct(pod_type xlocal_id) const
312 {
313  // Preconditions:
314 
315  require(contains(xlocal_id));
316 
317  // Body:
318 
319  size_type result = 0; // Just to silence compiler warnings.
320 
321  is_abstract();
322 
323  // Postconditions:
324 
325  ensure(is_basic_query);
326 
327  // Exit:
328 
329  return result;
330 }
331 
332 bool
334 is_empty(pod_type xlocal_id) const
335 {
336  // Preconditions:
337 
338  require(contains(xlocal_id));
339 
340  // Body:
341 
342  bool result = (ct(xlocal_id) == 0);
343 
344  // Postconditions:
345 
346  ensure(is_basic_query);
347 
348  // Exit:
349 
350  return result;
351 }
352 
355 begin(pod_type xlocal_id) const
356 {
357  // Preconditions:
358 
359  require(contains(xlocal_id));
360 
361  // Body:
362 
363  pod_type result = 0; // Just to silence compiler warnings.
364 
365  is_abstract();
366 
367  // Postconditions:
368 
369  ensure(is_basic_query);
370 
371  // Exit:
372 
373  return result;
374 }
375 
378 end(pod_type xlocal_id) const
379 {
380  // Preconditions:
381 
382  require(contains(xlocal_id));
383 
384  // Body:
385 
386  pod_type result = 0; // Just to silence compiler warnings.
387 
388  is_abstract();
389 
390  // Postconditions:
391 
392  ensure(is_basic_query);
393 
394  // Exit:
395 
396  return result;
397 }
398 
399 bool
401 is_gathered(pod_type xlocal_id) const
402 {
403  // Preconditions:
404 
405  require(contains(xlocal_id));
406 
407  // Body:
408 
409  bool result = (begin(xlocal_id) == 0) && (end(xlocal_id) == ct(xlocal_id));
410 
411  // Postconditions:
412 
413  ensure(is_basic_query);
414 
415  // Exit:
416 
417  return result;
418 }
419 
420 bool
422 contains(pod_type xlocal_id, pod_type xid) const
423 {
424  // Preconditions:
425 
426  require(contains(xlocal_id));
427 
428  // Body:
429 
430  bool result = false; // Just to silence compiler warnings.
431 
432  is_abstract();
433 
434  // Postconditions:
435 
436  ensure(is_basic_query);
437 
438  // Exit:
439 
440  return result;
441 }
442 
443 bool
445 contains(pod_type xlocal_id, const scoped_index& xid) const
446 {
447  // Preconditions:
448 
449  require(contains(xlocal_id));
450 
451  // Body:
452 
453  bool result = contains_hub(xlocal_id, xid.hub_pod());
454 
455  // Postconditions:
456 
457  ensure(is_basic_query);
458 
459  // Exit:
460 
461  return result;
462 }
463 
464 bool
466 contains_hub(pod_type xlocal_id, pod_type xid) const
467 {
468  // Preconditions:
469 
470  require(contains(xlocal_id));
471 
472  // Body:
473 
474  bool result = contains_unglued_hub(xlocal_id, xid);
475 
476  // Postconditions:
477 
478  ensure(is_basic_query);
479 
480  // Exit:
481 
482  return result;
483 }
484 
485 bool
488 {
489  // Preconditions:
490 
491  require(contains(xlocal_id));
492 
493  // Body:
494 
495  bool result = false; // Just to silence compiler warnings.
496 
497  is_abstract();
498 
499  // Postconditions:
500 
501  ensure(is_basic_query);
502 
503  // Exit:
504 
505  return result;
506 }
507 
508 bool
510 contains_glued_hub(pod_type xlocal_id, pod_type xid) const
511 {
512  // Preconditions:
513 
514  require(contains(xlocal_id));
515 
516  // Body:
517 
518  bool result =
520 
521  // Postconditions:
522 
523  ensure(is_basic_query);
524 
525  // Exit:
526 
527  return result;
528 }
529 
530 bool
532 contains(pod_type xlocal_id, pod_type xid, const scoped_index& xhub_id) const
533 {
534  // Preconditions:
535 
536  require(contains(xlocal_id));
537 
538  // Body:
539 
540  bool result = contains(xlocal_id, xid, xhub_id.hub_pod());
541 
542  // Postconditions:
543 
544  ensure(is_basic_query);
545 
546  // Exit:
547 
548  return result;
549 }
550 
551 bool
553 contains(pod_type xlocal_id, pod_type xid, pod_type xhub_id) const
554 {
555  // Preconditions:
556 
557  require(contains(xlocal_id));
558 
559  // Body:
560 
561  bool result = false; // Just to silence compiler warnings.
562 
563  is_abstract();
564 
565  // Postconditions:
566 
567  ensure(is_basic_query);
568 
569  // Exit:
570 
571  return result;
572 }
573 
576 pod(pod_type xlocal_id, pod_type xid) const
577 {
578  // Preconditions:
579 
580  require(contains(xlocal_id));
581 
582  // Body:
583 
584  pod_type result = 0; // Just to silence compiler warnings.
585 
586  is_abstract();
587 
588  // Postconditions:
589 
590  ensure(!is_valid(result) || contains(xlocal_id, result));
591 
592  // Exit:
593 
594  return result;
595 }
596 
599 pod(pod_type xlocal_id, const scoped_index& xid) const
600 {
601  // Preconditions:
602 
603  require(contains(xlocal_id));
604 
605  // Body:
606 
607  pod_type result = pod(xlocal_id, xid.hub_pod());
608 
609  // Postconditions:
610 
611  ensure(!is_valid(result) || contains(xlocal_id, result));
612 
613  // Exit:
614 
615  return result;
616 }
617 
620 hub_pod(pod_type xlocal_id, pod_type xid) const
621 {
622  // Preconditions:
623 
624  require(contains(xlocal_id));
625 
626  // Body:
627 
628  pod_type result = unglued_hub_pod(xlocal_id, xid);
629 
630  // Postconditions:
631 
632  ensure(!is_valid(result) || contains_hub(xlocal_id, result));
633 
634  // Exit:
635 
636  return result;
637 }
638 
641 unglued_hub_pod(pod_type xlocal_id, pod_type xid) const
642 {
643  // Preconditions:
644 
645  require(contains(xlocal_id));
646 
647  // Body:
648 
649  pod_type result = 0; // Just to silence compiler warnings.
650 
651  is_abstract();
652 
653  // Postconditions:
654 
655  ensure(!is_valid(result) || contains_unglued_hub(xlocal_id, result));
656 
657  // Exit:
658 
659  return result;
660 }
661 
664 glued_hub_pod(pod_type xlocal_id, pod_type xid) const
665 {
666  // Preconditions:
667 
668  require(contains(xlocal_id));
669 
670  // Body:
671 
672  pod_type result =
673  hub_id_space().glued_hub_pod(unglued_hub_pod(xlocal_id, xid));
674 
675  // Postconditions:
676 
677  ensure(!is_valid(result) || contains_glued_hub(xlocal_id, result));
678 
679  // Exit:
680 
681  return result;
682 }
683 
684 bool
686 is_persistent(pod_type xlocal_id) const
687 {
688  // Preconditions:
689 
690  require(contains(xlocal_id));
691 
692  // Body:
693 
694  bool result = false; // Just to silence compiler warnings.
695 
696  is_abstract();
697 
698  // Postconditions:
699 
700  ensure(is_basic_query);
701 
702  // Exit:
703 
704  return result;
705 }
706 
707 // PROTECTED MEMBER FUNCTIONS
708 
709 // PRIVATE MEMBER FUNCTIONS
710 
711 
712 // ===========================================================
713 // PRODUCT STRUCTURE FACET
714 // ===========================================================
715 
716 // PUBLIC MEMBER FUNCTIONS
717 
718 void
721  const abstract_product_structure& xproduct)
722 {
723  // Preconditions:
724 
725  require(contains(xlocal_id));
726 
727  // Body:
728 
729  is_abstract();
730 
731  // Postconditions:
732 
733  ensure(has_product_structure(xlocal_id));
734 
735  // Exit:
736 
737  return;
738 }
739 
740 void
743 {
744  // Preconditions:
745 
746  require(contains(xlocal_id));
747 
748  // Body:
749 
750  is_abstract();
751 
752  // Postconditions:
753 
754  ensure(!has_product_structure(xlocal_id));
755 
756  // Exit:
757 
758  return;
759 }
760 
763 product_structure(pod_type xlocal_id) const
764 {
765  // Preconditions:
766 
767  require(contains(xlocal_id));
768  require(has_product_structure(xlocal_id));
769 
770  // Body:
771 
772  const abstract_product_structure* result = 0; // Just to silence compiler warnings.
773 
774  is_abstract();
775 
776  // Postconditions:
777 
778  ensure(is_basic_query);
779 
780  // Exit:
781 
782  return *result;
783 }
784 
788 {
789  // Preconditions:
790 
791  require(contains(xlocal_id));
792  require(has_product_structure(xlocal_id));
793 
794  // Body:
795 
796  abstract_product_structure* result = 0; // Just to silence compiler warnings.
797 
798  is_abstract();
799 
800  // Postconditions:
801 
802  ensure(is_basic_query);
803 
804  // Exit:
805 
806  return *result;
807 }
808 
809 bool
812 {
813  // Preconditions:
814 
815  require(contains(xlocal_id));
816 
817  // Body:
818 
819  bool result = false; // Just to silence compiler warnings.
820 
821  is_abstract();
822 
823  // Postconditions:
824 
825  ensure(is_basic_query);
826 
827  // Exit:
828 
829  return result;
830 }
831 
832 // PROTECTED MEMBER FUNCTIONS
833 
834 // PRIVATE MEMBER FUNCTIONS
835 
836 
837 // ===========================================================
838 // HANDLE POOL FACET
839 // ===========================================================
840 
841 // PUBLIC MEMBER FUNCTIONS
842 
845 get_id_space(pod_type xlocal_id) const
846 {
847  // Preconditions:
848 
849  require(contains(xlocal_id));
850 
851  // Body:
852 
853  index_space_handle* result = 0; // Just to silence compiler warnings.
854 
855  is_abstract();
856 
857  // Postconditions:
858 
859  ensure(result->is_attached());
860 
861  // Exit:
862 
863  return *result;
864 }
865 
866 void
869 {
870  // Preconditions:
871 
872  require(allocated_id_space(xid_space));
873 
874  // Body:
875 
876  is_abstract();
877 
878  // Postconditions:
879 
880  ensure(is_basic_query);
881 
882  // Exit:
883 
884  return;
885 }
886 
887 bool
889 allocated_id_space(const index_space_handle& xid_space) const
890 {
891  // Preconditions:
892 
893  // Body:
894 
895  bool result = false; // Just to silence compiler warnings.
896 
897  is_abstract();
898 
899  // Postconditions:
900 
901  ensure(is_basic_query);
902 
903  // Exit:
904 
905  return result;
906 }
907 
908 // PROTECTED MEMBER FUNCTIONS
909 
910 // PRIVATE MEMBER FUNCTIONS
911 
912 
913 // ===========================================================
914 // HANDLE POOL FACET
915 // ===========================================================
916 
917 // PUBLIC MEMBER FUNCTIONS
918 
922 {
923  // Preconditions:
924 
925  require(contains(xspace_id));
926 
927  // Body:
928 
929  index_space_iterator* result = 0; // Just to silence compiler warnings.
930 
931  is_abstract();
932 
933  // Postconditions:
934 
935  ensure(result->is_attached());
936 
937  // Exit:
938 
939  return *result;
940 }
941 
942 void
945 {
946  // Preconditions:
947 
948  require(allocated_id_space_iterator(xitr));
949 
950  // Body:
951 
952  is_abstract();
953 
954  // Postconditions:
955 
956  ensure(is_basic_query);
957 
958  // Exit:
959 
960  return;
961 }
962 
963 bool
966 {
967  // Preconditions:
968 
969  // Body:
970 
971  bool result = false; // Just to silence compiler warnings.
972 
973  is_abstract();
974 
975  // Postconditions:
976 
977  ensure(is_basic_query);
978 
979  // Exit:
980 
981  return result;
982 }
983 
984 // PROTECTED MEMBER FUNCTIONS
985 
986 // PRIVATE MEMBER FUNCTIONS
987 
988 
989 // ===========================================================
990 // ANY FACET
991 // ===========================================================
992 
993 // PUBLIC MEMBER FUNCTIONS
994 
995 bool
997 is_ancestor_of(const any *other) const
998 {
999  // Preconditions:
1000 
1001  require(other != 0);
1002 
1003  // Body:
1004 
1005  // True if other conforms to this
1006 
1007  bool result = dynamic_cast<const index_space_collection*>(other) != 0;
1008 
1009  // Postconditions:
1010 
1011  // Exut:
1012 
1013  return result;
1014 }
1015 
1016 bool
1018 invariant() const
1019 {
1020  bool result = true;
1021 
1022  if(invariant_check())
1023  {
1024  // Prevent recursive calls to invariant
1025 
1027 
1028  // Must satisfy base class invariant
1029 
1030  invariance(any::invariant());
1031 
1032  // Invariances for this class:
1033 
1034  // Finished, turn invariant checking back on.
1035 
1037  }
1038 
1039  // Exit
1040 
1041  return result;
1042 }
1043 
1044 // PROTECTED MEMBER FUNCTIONS
1045 
1046 // PRIVATE MEMBER FUNCTIONS
1047 
1048 
1049 // ===========================================================
1050 // NON-MEMBER FUNCTIONS
1051 // ===========================================================
1052 
virtual pod_type glued_hub_pod(pod_type xid) const
The pod index in the hub id space equivalent to xid in this id space. synonym for unglued_hub_pod(xid...
virtual bool invariant() const
Class invariant, intended to be redefined in each descendant. See below for template for invariant in...
Definition: any.cc:153
virtual void new_product_structure(pod_type xlocal_id, const abstract_product_structure &xproduct)=0
Creates a new product structure for the id space with id xlocal_id by cloning the product structure...
virtual bool allocated_id_space_iterator(const index_space_iterator &xitr) const =0
True if and only if id space iterator xitr was allocated by the iterator pool.
An abstract class that defines the product structure for an id space.
An abstract iterator over the ids of an id space.
bool is_empty(pod_type xlocal_id) const
True if there are no ids in the space with id xlocal_id.
virtual bool contains_family(pod_type xspace_id) const =0
True if this collection contains the id space with family id xspace_id.
virtual pod_type family_scope(pod_type xlocal_id) const =0
Id relative to the id space family equivalent to the local id xlocal_id.
virtual size_type deep_size(bool xinclude_shallow) const =0
The deep size of this.
bool contains_glued_hub(pod_type xlocal_id, pod_type xid) const
True if the space with id xlocal_id contains an id equivalent to xid in the glued hub id space...
virtual void delete_product_structure(pod_type xlocal_id)=0
Deletes the product structure for the id space with id xlocal_id.
virtual pod_type end(pod_type xlocal_id) const =0
Ending id of the space with id xlocal_id.
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
pod_index_type pod_type
The "plain old data" index type for this.
virtual bool allocated_id_space(const index_space_handle &xid_space) const =0
True if and only if id space handle xid_space was allocated by the handle pool.
virtual index_space_collection & operator=(const index_space_collection &xother)=0
Assignment operator.
virtual bool is_attached() const =0
True if this handle is attached to a state.
An implementation of class sum_index_space_handle that has a primary sum id space state...
virtual bool contains_unglued_hub(pod_type xlocal_id, pod_type xid) const =0
True if the space with id xlocal_id contains an id equivalent to xid in the unglued hub id space...
virtual explicit_index_space_state * explicit_state(pod_type xlocal_id) const =0
The explicit id space state for id xlocal_id. Returns null if there is no explicit id space for xloca...
virtual const index_space_family & id_spaces() const =0
The id space family for this (const version).
const hub_index_space_handle & hub_id_space() const
The hub id space.
virtual bool has_product_structure(pod_type xlocal_id) const =0
True if the id space with id xlocal_id has a product structure.
virtual pod_type local_scope(pod_type xspace_id) const =0
Id relative to this collection equivalent to the id space family id xspace_id.
Abstract base class with useful features for all objects.
Definition: any.h:39
virtual pod_type begin(pod_type xlocal_id) const =0
Beginning id of the space with id xlocal_id.
An immutable abstract state for a space of alternate integer identifiers (aliases) for a subset of th...
An index within the external ("client") scope of a given id space.
Definition: scoped_index.h:116
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
Definition: sheaf.h:52
virtual size_type ct(pod_type xlocal_id) const =0
The number of members for the id space with id xlocal_id.
virtual pod_type pod(pod_type xlocal_id, pod_type xid) const =0
The pod index in the space with id xlocal_id equivalent to xid in the hub id space.
pod_type glued_hub_pod(pod_type xlocal_id, pod_type xid) const
The pod index in the unglued hub id space equivalent to xid in the id space with id xlocal_id...
virtual bool is_persistent(pod_type xlocal_id) const =0
True if the id space with id xlocal_id should be written to disk.
virtual pod_type unglued_hub_pod(pod_type xlocal_id, pod_type xid) const =0
The pod index in the glued hub id space equivalent to xid in the id space with id xlocal_id...
A collection of id space states. This is a virtual class with provides an interface for accessing the...
void disable_invariant_check() const
Disable invariant check. Intended for preventing recursive calls to invariant and for suppressing inv...
Definition: any.h:97
virtual const abstract_product_structure & product_structure(pod_type xlocal_id) const =0
The product structure for the id space with id xlocal_id (const version).
virtual bool contains(pod_type xlocal_id) const =0
True if this collection contains the id space with local id xlocal_id.
virtual bool is_ancestor_of(const any *other) const
Conformance test; true if other conforms to this.
virtual bool operator==(const index_space_collection &xother) const =0
True if this is equivalent to xother.
virtual ~index_space_collection()
Destructor.
virtual bool is_attached() const =0
True if this iterator is attached to a state.
bool invariant_check() const
True if invariant checking is enabled.
Definition: any.h:79
bool is_gathered(pod_type xlocal_id) const
True if begin(xlocal_id) == 0 and end(xlocal_id) == ct(xlocal_id).
virtual index_space_handle & get_id_space(pod_type xlocal_id) const =0
Allocates an id space handle from the handle pool attached to state with id xlocal_id.
virtual index_space_iterator & get_id_space_iterator(pod_type xlocal_id) const =0
Allocates an id space iterator from the iterator pool attached to state with id xlocal_id.
virtual void release_id_space_iterator(index_space_iterator &xitr) const =0
Returns the id space iterator xitr to the iterator pool.
Factory and container for a family of id spaces.
pod_type hub_pod(pod_type xlocal_id, pod_type xid) const
The pod index in the glued hub id space equivalent to xid in the id space with id xlocal_id...
index_space_collection()
Default constructor.
bool contains_hub(pod_type xlocal_id, pod_type xid) const
True if the space with id xlocal_id contains an id equivalent to xid in the hub id space...
virtual bool invariant() const
Class invariant.
SHEAF_DLL_SPEC bool is_valid(pod_index_type xpod_index)
True if an only if xpod_index is valid.
Definition: pod_types.cc:37
void enable_invariant_check() const
Enable invariant checking.
Definition: any.h:87
virtual void release_id_space(index_space_handle &xid_space) const =0
Returns the id space handle xid_space to the handle pool.
const hub_index_space_handle & hub_id_space() const
The hub id space of this family.
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.
Definition: scoped_index.h:710