21 #ifndef SCOPED_INDEX_H 22 #define SCOPED_INDEX_H 24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 28 #ifndef ASSERT_CONTRACT_H 29 #include "SheafSystem/assert_contract.h" 32 #ifndef ERROR_MESSAGE_H 33 #include "SheafSystem/error_message.h" 36 #ifndef HUB_INDEX_SPACE_HANDLE_H 37 #include "SheafSystem/hub_index_space_handle.h" 40 #ifndef INDEX_SPACE_FAMILY_H 41 #include "SheafSystem/index_space_family.h" 44 #ifndef INDEX_TRAITS_H 45 #include "SheafSystem/index_traits.h" 48 #ifndef NAMESPACE_SCHEMA_MEMBER_INDEX_H 49 #include "SheafSystem/namespace_schema_member_index.h" 52 #ifndef NAMESPACE_MEMBER_INDEX_H 53 #include "SheafSystem/namespace_member_index.h" 56 #ifndef PRIMITIVE_ATTRIBUTES_H 57 #include "SheafSystem/primitive_attributes.h" 60 #ifndef PRIMITIVES_SCHEMA_MEMBER_INDEX_H 61 #include "SheafSystem/primitives_schema_member_index.h" 64 #ifndef STANDARD_DOF_TUPLE_INDEX_H 65 #include "SheafSystem/standard_dof_tuple_index.h" 68 #ifndef STANDARD_MEMBER_INDEX_H 69 #include "SheafSystem/standard_member_index.h" 72 #ifndef STANDARD_SUBPOSET_INDEX_H 73 #include "SheafSystem/standard_subposet_index.h" 76 #ifndef STANDARD_VERSION_INDEX_H 77 #include "SheafSystem/standard_version_index.h" 80 #ifndef STD_IOSTREAM_H 81 #include "SheafSystem/std_iostream.h" 85 #include "SheafSystem/std_set.h" 88 #ifndef STD_UNORDERED_MAP_H 89 #include "SheafSystem/std_unordered_map.h" 93 #include "SheafSystem/std_limits.h" 99 class poset_state_handle;
135 _scope_id(invalid_pod()),
145 ensure(!is_scoped());
157 : _id_spaces(&xid_space.id_spaces()),
158 _scope_id(xid_space.index()),
171 ensure(same_scope(xid_space));
183 : _id_spaces(&xid_space.id_spaces()),
184 _scope_id(xid_space.index()),
197 ensure(same_scope(xid_space));
198 ensure(pod() == xpod);
209 : _id_spaces(&xid_space.id_spaces()),
210 _scope_id(xid_space.index()),
211 _pod(xid_space.pod(xother))
224 ensure(same_scope(xid_space));
225 ensure( !
is_valid() || (*
this) ==~ xother);
237 _scope_id(invalid_pod())
248 ensure((*this).is_identical_to(xother));
301 if(xother._id_spaces != 0)
305 _id_spaces = xother._id_spaces;
306 _scope_id = xother._scope_id;
313 _scope_id = invalid_pod();
322 ensure((*this).is_identical_to(xother));
341 _scope_id = xid_space.
index();
347 ensure(pod() == xpod);
348 ensure(same_scope(xid_space));
362 require(is_scoped());
385 require(is_scoped());
393 _pod = _id_spaces->hub_pod(_scope_id, _pod);
397 _scope_id = _id_spaces->hub_id_space().index();
406 ensure(is_hub_scope());
450 _scope_id = xid_space.
index();
454 ensure(same_scope(xid_space));
466 return is_scoped() && (_id_spaces == xother._id_spaces) && (_scope_id == xother._scope_id);
474 return is_scoped() && (_id_spaces == &xid_space.
id_spaces()) && (_scope_id == xid_space.
index());
482 return is_scoped() && xother.
is_scoped() &&
483 (_id_spaces == xother._id_spaces);
492 (_id_spaces == &(xid_space.
id_spaces()));
502 require(is_scoped());
520 require(is_scoped());
538 require(is_scoped());
546 return _id_spaces->get_id_space(_scope_id);
556 require(is_scoped());
557 require(same_scope(xid_space));
561 _id_spaces->release_id_space(xid_space);
577 return is_scoped() &&
578 (_id_spaces->hub_id_space().index() == _scope_id);
586 return is_scoped() && _id_spaces->contains(_scope_id, _pod);
594 return (_id_spaces != 0) && _id_spaces->contains(_scope_id);
605 require(is_scoped());
610 _pod = _id_spaces->pod(_scope_id, xother.
hub_pod());
614 ensure( !
is_valid() || (*
this) ==~ xother);
629 require(is_scoped());
634 xother._pod = xother._id_spaces->
pod(xother._scope_id, this->hub_pod());
638 ensure( !xother.
is_valid() || (*this) ==~ xother);
672 const pod_type&
pod()
const 684 require(is_scoped());
692 ensure(pod() == xpod);
714 require(is_scoped());
728 require(is_scoped());
742 require(is_scoped());
756 result.pod = hub_pod();
765 return hub_pod() == xother.pod;
773 return hub_pod() != xother.pod;
781 return hub_pod() < xother.pod;
790 return hub_pod() <= xother.pod;
798 return hub_pod() > xother.pod;
807 return hub_pod() >= xother.pod;
840 result = (_pod != invalid_pod());
859 _pod = invalid_pod();
917 (_pod == xother._pod) &&
918 (_id_spaces == xother._id_spaces) &&
919 (_scope_id == xother._scope_id);
938 require(is_scoped());
947 result = (hub_pod() == xother.
hub_pod());
951 ensure(is_basic_query);
970 result = is_identical_to(xother);
974 ensure(is_basic_query);
992 result = !is_identical_to(xother);
1008 require(same_scope(xother));
1012 bool result = (_pod < xother._pod);
1016 ensure(is_basic_query);
1030 require(same_scope(xother));
1034 bool result = (_pod <= xother._pod);
1038 ensure(is_basic_query);
1052 require(same_scope(xother));
1056 bool result = (_pod > xother._pod);
1060 ensure(is_basic_query);
1074 require(same_scope(xother));
1078 bool result = (_pod >= xother._pod);
1082 ensure(is_basic_query);
1098 require(same_id_space_family(xbegin));
1102 pod_index_type lpod = xbegin._id_spaces->
pod(xbegin._scope_id, this->hub_pod());
1104 bool result = ((xbegin.
pod() <= lpod) && (xend.
pod() > lpod));
1142 ensure(result.
pod() == (pod() + id_spaces().pod(scope_id(), xother)));
1157 require(is_scoped());
1161 define_old_variable(pod_type old_pod = pod());
1164 _pod += _id_spaces->
pod(_scope_id, xother.
hub_pod());
1168 ensure(pod() == (old_pod + id_spaces().pod(scope_id(), xother)));
1169 ensure(&result ==
this);
1187 define_old_variable(pod_type old_pod = pod());
1194 ensure(pod() == (old_pod + 1));
1195 ensure(&result ==
this);
1213 define_old_variable(pod_type old_pod = pod());
1221 ensure(pod() == (old_pod + 1));
1222 ensure(result.
pod() == old_pod);
1236 result._pod = -_pod;
1247 require(is_scoped());
1256 ensure(result.
pod() == (pod() - id_spaces().pod(scope_id(), xother)));
1271 require(is_scoped());
1275 define_old_variable(pod_type old_pod = pod());
1278 _pod -= _id_spaces->
pod(_scope_id, xother.
hub_pod());
1282 ensure(pod() == (old_pod - id_spaces().pod(scope_id(), xother)));
1283 ensure(&result ==
this);
1301 define_old_variable(pod_type old_pod = pod());
1308 ensure(pod() == (old_pod - 1));
1309 ensure(&result ==
this);
1327 define_old_variable(pod_type old_pod = pod());
1335 ensure(pod() == (old_pod - 1));
1336 ensure(result.
pod() == old_pod);
1351 require(is_scoped());
1360 ensure(result.
pod() == (pod() * id_spaces().pod(scope_id(), xother)));
1375 require(is_scoped());
1379 define_old_variable(pod_type old_pod = pod());
1382 _pod *= _id_spaces->
pod(_scope_id, xother.
hub_pod());
1386 ensure(pod() == (old_pod * id_spaces().pod(scope_id(), xother)));
1387 ensure(&result ==
this);
1401 require(xother.
pod() != 0);
1410 ensure(result.pod() == (pod() / xother.
pod()));
1425 require(is_scoped());
1426 require(id_spaces().pod(scope_id(), xother) != 0);
1430 define_old_variable(pod_type old_pod = pod());
1433 _pod /= _id_spaces->
pod(_scope_id, xother.
hub_pod());
1437 ensure(pod() == (old_pod / id_spaces().pod(scope_id(), xother)));
1438 ensure(&result ==
this);
1452 require(is_scoped());
1453 require(id_spaces().pod(scope_id(), xother) != 0);
1462 ensure(result.
pod() == (pod() % id_spaces().pod(scope_id(), xother)));
1478 require(is_scoped());
1479 require(id_spaces().pod(scope_id(), xother) != 0);
1483 define_old_variable(pod_type old_pod = pod());
1486 _pod %= _id_spaces->
pod(_scope_id, xother.
hub_pod());
1490 ensure(pod() == (old_pod % id_spaces().pod(scope_id(), xother)));
1491 ensure(&result ==
this);
1531 : _id_spaces(&xid_space.id_spaces()),
1532 _scope_id(xid_space.index()),
1535 ensure((x == NOT_A_PRIMITIVE_TYPE) == (!
is_valid()));
1545 require(is_scoped());
1624 : _id_spaces(&xid_space.id_spaces()),
1625 _scope_id(xid_space.index()),
1628 ensure((x == NOT_A_STANDARD_MEMBER_INDEX) == (!
is_valid()));
1638 require(is_scoped());
1717 : _id_spaces(&xid_space.id_spaces()),
1718 _scope_id(xid_space.index()),
1721 ensure((x == NOT_A_PRIMITIVES_SCHEMA_MEMBER_INDEX) == (!
is_valid()));
1731 require(is_scoped());
1810 : _id_spaces(&xid_space.id_spaces()),
1811 _scope_id(xid_space.index()),
1814 ensure((x == NOT_A_NAMESPACE_SCHEMA_MEMBER_INDEX) == (!
is_valid()));
1824 require(is_scoped());
1903 : _id_spaces(&xid_space.id_spaces()),
1904 _scope_id(xid_space.index()),
1907 ensure((x == NOT_A_NAMESPACE_MEMBER_INDEX) == (!
is_valid()));
1917 require(is_scoped());
1996 : _id_spaces(&xid_space.id_spaces()),
1997 _scope_id(xid_space.index()),
2000 ensure((x == NOT_A_STANDARD_SUBPOSET_INDEX) == (!
is_valid()));
2010 require(is_scoped());
2089 : _id_spaces(&xid_space.id_spaces()),
2090 _scope_id(xid_space.index()),
2093 ensure((x == NOT_A_STANDARD_VERSION_INDEX) == (!
is_valid()));
2103 require(is_scoped());
2182 : _id_spaces(&xid_space.id_spaces()),
2183 _scope_id(xid_space.index()),
2186 ensure((x == NOT_A_STANDARD_DOF_TUPLE_INDEX) == (!
is_valid()));
2196 require(is_scoped());
2275 : _id_spaces(&xid_space.id_spaces()),
2276 _scope_id(xid_space.index()),
2277 _pod(static_cast<pod_type>(xother))
2288 require(is_scoped());
2292 _pod =
static_cast<pod_type
>(xother);
2306 return _pod ==
static_cast<pod_type
>(xother);
2314 return _pod !=
static_cast<pod_type
>(xother);
2322 return _pod < static_cast<pod_type>(xother);
2330 return _pod <= static_cast<pod_type>(xother);
2338 return _pod >
static_cast<pod_type
>(xother);
2346 return _pod >=
static_cast<pod_type
>(xother);
2354 _pod +=
static_cast<pod_type
>(xother);
2364 return result += xother;
2372 _pod -=
static_cast<pod_type
>(xother);
2382 return result -= xother;
2390 _pod *=
static_cast<pod_type
>(xother);
2400 return result *= xother;
2408 _pod /=
static_cast<pod_type
>(xother);
2418 return result /= xother;
2426 _pod %=
static_cast<pod_type
>(xother);
2436 return result %= xother;
2457 : _id_spaces(&xid_space.id_spaces()),
2458 _scope_id(xid_space.index()),
2459 _pod(static_cast<pod_type>(xother))
2470 require(is_scoped());
2474 _pod =
static_cast<pod_type
>(xother);
2488 return _pod ==
static_cast<pod_type
>(xother);
2496 return _pod !=
static_cast<pod_type
>(xother);
2504 return _pod < static_cast<pod_type>(xother);
2512 return _pod <= static_cast<pod_type>(xother);
2520 return _pod >
static_cast<pod_type
>(xother);
2528 return _pod >=
static_cast<pod_type
>(xother);
2536 _pod +=
static_cast<pod_type
>(xother);
2546 return result += xother;
2554 _pod -=
static_cast<pod_type
>(xother);
2564 return result -= xother;
2572 _pod *=
static_cast<pod_type
>(xother);
2582 return result *= xother;
2590 _pod /=
static_cast<pod_type
>(xother);
2600 return result /= xother;
2608 _pod %=
static_cast<pod_type
>(xother);
2618 return result %= xother;
2639 : _id_spaces(&xid_space.id_spaces()),
2640 _scope_id(xid_space.index()),
2641 _pod(static_cast<pod_type>(xother))
2652 require(is_scoped());
2656 _pod =
static_cast<pod_type
>(xother);
2670 return _pod ==
static_cast<pod_type
>(xother);
2678 return _pod !=
static_cast<pod_type
>(xother);
2686 return _pod < static_cast<pod_type>(xother);
2694 return _pod <= static_cast<pod_type>(xother);
2702 return _pod >
static_cast<pod_type
>(xother);
2710 return _pod >=
static_cast<pod_type
>(xother);
2718 _pod +=
static_cast<pod_type
>(xother);
2728 return result += xother;
2736 _pod -=
static_cast<pod_type
>(xother);
2746 return result -= xother;
2754 _pod *=
static_cast<pod_type
>(xother);
2764 return result *= xother;
2772 _pod /=
static_cast<pod_type
>(xother);
2782 return result /= xother;
2790 _pod %=
static_cast<pod_type
>(xother);
2800 return result %= xother;
2821 : _id_spaces(&xid_space.id_spaces()),
2822 _scope_id(xid_space.index()),
2823 _pod(static_cast<pod_type>(xother))
2834 require(is_scoped());
2838 _pod =
static_cast<pod_type
>(xother);
2852 return _pod ==
static_cast<pod_type
>(xother);
2860 return _pod !=
static_cast<pod_type
>(xother);
2868 return _pod < static_cast<pod_type>(xother);
2876 return _pod <= static_cast<pod_type>(xother);
2884 return _pod >
static_cast<pod_type
>(xother);
2892 return _pod >=
static_cast<pod_type
>(xother);
2900 _pod +=
static_cast<pod_type
>(xother);
2910 return result += xother;
2918 _pod -=
static_cast<pod_type
>(xother);
2928 return result -= xother;
2936 _pod *=
static_cast<pod_type
>(xother);
2946 return result *= xother;
2954 _pod /=
static_cast<pod_type
>(xother);
2964 return result /= xother;
2972 _pod %=
static_cast<pod_type
>(xother);
2982 return result %= xother;
3003 : _id_spaces(&xid_space.id_spaces()),
3004 _scope_id(xid_space.index()),
3005 _pod(static_cast<pod_type>(xother))
3016 require(is_scoped());
3020 _pod =
static_cast<pod_type
>(xother);
3034 return _pod ==
static_cast<pod_type
>(xother);
3042 return _pod !=
static_cast<pod_type
>(xother);
3050 return _pod < static_cast<pod_type>(xother);
3058 return _pod <= static_cast<pod_type>(xother);
3066 return _pod >
static_cast<pod_type
>(xother);
3074 return _pod >=
static_cast<pod_type
>(xother);
3082 _pod +=
static_cast<pod_type
>(xother);
3092 return result += xother;
3100 _pod -=
static_cast<pod_type
>(xother);
3110 return result -= xother;
3118 _pod *=
static_cast<pod_type
>(xother);
3128 return result *= xother;
3136 _pod /=
static_cast<pod_type
>(xother);
3146 return result /= xother;
3154 _pod %=
static_cast<pod_type
>(xother);
3164 return result %= xother;
3185 : _id_spaces(&xid_space.id_spaces()),
3186 _scope_id(xid_space.index()),
3187 _pod(static_cast<pod_type>(xother))
3198 require(is_scoped());
3202 _pod =
static_cast<pod_type
>(xother);
3216 return _pod ==
static_cast<pod_type
>(xother);
3224 return _pod !=
static_cast<pod_type
>(xother);
3232 return _pod < static_cast<pod_type>(xother);
3240 return _pod <= static_cast<pod_type>(xother);
3248 return _pod >
static_cast<pod_type
>(xother);
3256 return _pod >=
static_cast<pod_type
>(xother);
3264 _pod +=
static_cast<pod_type
>(xother);
3274 return result += xother;
3282 _pod -=
static_cast<pod_type
>(xother);
3292 return result -= xother;
3300 _pod *=
static_cast<pod_type
>(xother);
3310 return result *= xother;
3318 _pod /=
static_cast<pod_type
>(xother);
3328 return result /= xother;
3336 _pod %=
static_cast<pod_type
>(xother);
3346 return result %= xother;
3367 : _id_spaces(&xid_space.id_spaces()),
3368 _scope_id(xid_space.index()),
3369 _pod(static_cast<pod_type>(xother))
3380 require(is_scoped());
3384 _pod =
static_cast<pod_type
>(xother);
3398 return _pod ==
static_cast<pod_type
>(xother);
3406 return _pod !=
static_cast<pod_type
>(xother);
3414 return _pod < static_cast<pod_type>(xother);
3422 return _pod <= static_cast<pod_type>(xother);
3430 return _pod >
static_cast<pod_type
>(xother);
3438 return _pod >=
static_cast<pod_type
>(xother);
3446 _pod +=
static_cast<pod_type
>(xother);
3456 return result += xother;
3464 _pod -=
static_cast<pod_type
>(xother);
3474 return result -= xother;
3482 _pod *=
static_cast<pod_type
>(xother);
3492 return result *= xother;
3500 _pod /=
static_cast<pod_type
>(xother);
3510 return result /= xother;
3518 _pod %=
static_cast<pod_type
>(xother);
3528 return result %= xother;
3549 : _id_spaces(&xid_space.id_spaces()),
3550 _scope_id(xid_space.index()),
3551 _pod(static_cast<pod_type>(xother))
3562 require(is_scoped());
3566 _pod =
static_cast<pod_type
>(xother);
3580 return _pod ==
static_cast<pod_type
>(xother);
3588 return _pod !=
static_cast<pod_type
>(xother);
3596 return _pod < static_cast<pod_type>(xother);
3604 return _pod <= static_cast<pod_type>(xother);
3612 return _pod >
static_cast<pod_type
>(xother);
3620 return _pod >=
static_cast<pod_type
>(xother);
3628 _pod +=
static_cast<pod_type
>(xother);
3638 return result += xother;
3646 _pod -=
static_cast<pod_type
>(xother);
3656 return result -= xother;
3664 _pod *=
static_cast<pod_type
>(xother);
3674 return result *= xother;
3682 _pod /=
static_cast<pod_type
>(xother);
3692 return result /= xother;
3700 _pod %=
static_cast<pod_type
>(xother);
3710 return result %= xother;
3768 static pod_type
pod(
const index_type& xindex)
3770 return xindex.
pod();
3776 static void put_pod(index_type& xindex, pod_type& xpod)
3787 return index_type::INVALID();
3826 SHEAF_BEGIN_UNORDERED_NAMESPACE
3831 template<>
struct SHEAF_DLL_SPEC hash<
sheaf::scoped_index>
3836 SHEAF_END_UNORDERED_NAMESPACE
3841 #endif // ifndef SCOPED_INDEX_H bool operator<(unsigned int xother) const
True if this is less than unsigned int xother.
bool operator!=(standard_version_index x) const
True if this does not have the same value as standard_version_index x.
scoped_index operator%(unsigned int xother) const
This modulo unsigned int xother.
primitives_schema_member_index
Ids for standard poset members.
bool operator<(signed char xother) const
True if this is less than signed char xother.
scoped_index & operator+=(int xother)
This := this + int xother.
bool operator<=(standard_dof_tuple_index x) const
True if this is less than or equal to standard_dof_tuple_index x.
bool operator>=(const scoped_index &xother) const
True if this is greater than or equal to xother.
bool is_valid() const
True if this is a valid id.
scoped_index(namespace_member_index x, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
bool operator==(long int xother) const
True if this has the same value as long int xother.
bool operator<(unsigned long int xother) const
True if this is less than unsigned long int xother.
scoped_index(standard_version_index x, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
scoped_index & operator%=(unsigned long int xother)
This := this modulo unsigned long int xother.
bool operator>(standard_version_index x) const
True if this is greater than standard_version_index x.
bool operator>(unsigned long int xother) const
True if this is greater than unsigned long int xother.
pod_type pod(const std::string &xname, pod_type xid) const
The pod index in the space with name xname equivalent to xid in the hub id space. ...
bool operator>=(long int xother) const
True if this is greater than or equal to long int xother.
bool operator>=(standard_version_index x) const
True if this is greater than or equal to standard_version_index x.
scoped_index & operator/=(int xother)
This := this / int xother.
scoped_index operator*(unsigned char xother) const
This * unsigned char xother.
scoped_index operator%(long int xother) const
This modulo long int xother.
bool operator>(primitive_type x) const
True if this is greater than primitive_type x.
bool operator>(short int xother) const
True if this is greater than short int xother.
bool in_scope() const
True if and only if scope() contains an entry for pod().
bool operator!=(namespace_member_index x) const
True if this does not have the same value as namespace_member_index x.
const pod_type & pod() const
The "plain old data" storage of this; the value in the external id space.
bool operator>(long int xother) const
True if this is greater than long int xother.
bool operator>(const scoped_index &xother) const
True if this is greater than xother.
scoped_index operator*(short int xother) const
This * short int xother.
scoped_index operator-(short int xother) const
This - short int xother.
bool operator>(namespace_schema_member_index x) const
True if this is greater than namespace_schema_member_index x.
bool operator<(namespace_member_index x) const
True if this is less than namespace_member_index x.
bool operator>=(primitive_type x) const
True if this is greater than or equal to primitive_type x.
scoped_index(standard_subposet_index x, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
bool operator!=(unsigned long int xother) const
True if this does not have the same value as unsigned long int xother.
scoped_index & operator+=(unsigned long int xother)
This := this + unsigned long int xother.
static index_type invalid()
The invalid index value.
bool operator<=(signed char xother) const
True if this is less than or equal to signed char xother.
scoped_index operator+(const scoped_index &xother) const
This + xother.
standard_member_index
Ids for standard poset members.
bool operator<=(namespace_schema_member_index x) const
True if this is less than or equal to namespace_schema_member_index x.
scoped_index operator-(unsigned short int xother) const
This - unsigned short int xother.
bool operator>=(primitives_schema_member_index x) const
True if this is greater than or equal to primitives_schema_member_index x.
scoped_index & operator<<(const scoped_index &xother)
Maps xother to the id space of this; sets this to the image of xother in the id space of this; return...
bool operator>(int xother) const
True if this is greater than int xother.
bool operator!=(unsigned short int xother) const
True if this does not have the same value as unsigned short int xother.
void release_scope(index_space_handle &xid_space) const
Return the id space handle, xid_space to the handle pool.
bool operator!=(int xother) const
True if this does not have the same value as int xother.
A client handle for a general, abstract partially order set.
scoped_index operator+(unsigned char xother) const
This + unsigned char xother.
bool operator>=(standard_member_index x) const
True if this is greater than or equal to standard_member_index x.
scoped_index & operator=(short int xother)
Assignment from short int.
scoped_index & operator*=(const scoped_index &xother)
This := this * xother.
scoped_index operator/(unsigned int xother) const
This / unsigned int xother.
scoped_index & operator%=(int xother)
This := this modulo int xother.
scoped_index & operator+=(long int xother)
This := this + long int xother.
bool operator!=(namespace_schema_member_index x) const
True if this does not have the same value as namespace_schema_member_index x.
scoped_index operator*(signed char xother) const
This * signed char xother.
scoped_index & operator*=(signed char xother)
This := this * signed char xother.
scoped_index & operator=(unsigned int xother)
Assignment from unsigned int.
scoped_index operator+(long int xother) const
This + long int xother.
pod_type unglued_hub_pod() const
The pod value of this mapped to the unglued hub id space.
scoped_index operator/(long int xother) const
This / long int xother.
bool operator==(primitive_type x) const
True if this has the same value as primitive_type x.
index_space_handle & get_scope() const
Allocate an id space handle to the scope from the handle pool..
bool operator<=(standard_version_index x) const
True if this is less than or equal to standard_version_index x.
bool operator<(primitive_type x) const
True if this is less than primitive_type x.
scoped_index & operator/=(const scoped_index &xother)
This := this / xother.
scoped_index & operator*=(int xother)
This := this * int xother.
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
scoped_index operator-(unsigned long int xother) const
This - unsigned long int xother.
static pod_type invalid_pod()
The pod value of the invalid index.
scoped_index & operator-=(signed char xother)
This := this - signed char xother.
virtual const index_space_family & id_spaces() const =0
The id space family for this (const version).
bool operator>(unsigned int xother) const
True if this is greater than unsigned int xother.
bool operator<=(const scoped_index &xother) const
True if this is less than or equal to xother.
scoped_index & operator/=(long int xother)
This := this / long int xother.
bool operator==(namespace_schema_member_index x) const
True if this has the same value as namespace_schema_member_index x.
An encapsulated hub pod_index; intended only for implementing scoped_index "operators" ==~ and !=~; s...
bool operator<=(standard_subposet_index x) const
True if this is less than or equal to standard_subposet_index x.
void invalidate()
Make this id invalid.
bool operator<(standard_dof_tuple_index x) const
True if this is less than standard_dof_tuple_index x.
scoped_index operator/(unsigned short int xother) const
This / unsigned short int xother.
virtual pod_type index() const =0
Index of this space.
bool operator<=(unsigned long int xother) const
True if this is less than or equal to unsigned long int xother.
bool operator==(standard_member_index x) const
True if this has the same value as standard_member_index x.
scoped_index & operator%=(short int xother)
This := this modulo short int xother.
virtual bool is_attached() const =0
True if this handle is attached to a state.
scoped_index & operator+=(short int xother)
This := this + short int xother.
bool operator!=(unsigned char xother) const
True if this does not have the same value as unsigned char xother.
bool operator>=(short int xother) const
True if this is greater than or equal to short int xother.
scoped_index index_type
The index type.
Features describing T as an index type.
bool operator>(namespace_member_index x) const
True if this is greater than namespace_member_index x.
bool operator==(scoped_index_hub_pod xother) const
True if and only if the hub_pod of this is equal to xother.
bool operator<(namespace_schema_member_index x) const
True if this is less than namespace_schema_member_index x.
const index_space_family & id_spaces() const
The id space family for this scope.
scoped_index()
Default constructor; creates an invalid instance.
bool operator<(standard_version_index x) const
True if this is less than standard_version_index x.
bool operator>(unsigned char xother) const
True if this is greater than unsigned char xother.
bool operator>(signed char xother) const
True if this is greater than signed char xother.
scoped_index operator%(signed char xother) const
This modulo signed char xother.
scoped_index & operator-=(short int xother)
This := this - short int xother.
bool operator==(int xother) const
True if this has the same value as int xother.
scoped_index operator*(unsigned short int xother) const
This * unsigned short int xother.
bool operator>(standard_subposet_index x) const
True if this is greater than standard_subposet_index x.
scoped_index & operator-=(long int xother)
This := this - long int xother.
static pod_type pod(const index_type &xindex)
Converts an index type xindex to pod_type.
static bool is_valid(const index_type &xindex)
True if xindex is valid.
standard_dof_tuple_index
Ids for standard dof tuples.
bool operator<=(namespace_member_index x) const
True if this is less than or equal to namespace_member_index x.
pod_type scope_id() const
The index of the scope id space.
bool same_scope(const scoped_index &xother) const
True if and only if this is in the same id space as xother.
scoped_index & operator*=(long int xother)
This := this * long int xother.
scoped_index & operator+=(const scoped_index &xother)
This := this + xother.
bool is_hub_scope() const
True if and only if the id space of this is the hub id space.
pod_type glued_hub_pod(const std::string &xname, pod_type xid) const
The pod index in the glued hub id space equivalent to xid in the id space with name xname...
scoped_index operator+(signed char xother) const
This + signed char xother.
scoped_index & operator-=(unsigned int xother)
This := this - unsigned int xother.
scoped_index_hub_pod operator~() const
The hub pod value of this; intended only for use with "operators" ==~ and !=~.
scoped_index(standard_member_index x, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
bool operator>=(unsigned long int xother) const
True if this is greater than or equal to unsigned long int xother.
scoped_index & operator/=(short int xother)
This := this / short int xother.
scoped_index & operator*=(unsigned int xother)
This := this * unsigned int xother.
scoped_index(int xother, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
bool operator<=(unsigned int xother) const
True if this is less than or equal to unsigned int xother.
scoped_index(namespace_schema_member_index x, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
void put_scope(const index_space_handle &xid_space)
Sets the scope to xid_space.
scoped_index operator/(short int xother) const
This / short int xother.
scoped_index & operator*=(unsigned long int xother)
This := this * unsigned long int xother.
scoped_index operator-(long int xother) const
This - long int xother.
scoped_index & operator=(standard_member_index x)
Assignment from standard_member_index.
bool operator>(scoped_index_hub_pod xother) const
True if and only if the hub_pod of this is greater than to xother.
scoped_index operator*(long int xother) const
This * long int xother.
scoped_index & operator=(namespace_member_index x)
Assignment from namespace_member_index.
bool operator==(short int xother) const
True if this has the same value as short int xother.
scoped_index & operator/=(unsigned int xother)
This := this / unsigned int xother.
namespace_schema_member_index
Ids for namespace poset schema members.
scoped_index(const index_space_handle &xid_space, const scoped_index &xother)
Creates an instance equivalent to xother in the scope of xid_space.
standard_subposet_index
Ids for standard subposets.
bool operator==(signed char xother) const
True if this has the same value as signed char xother.
bool operator<(primitives_schema_member_index x) const
True if this is less than primitives_schema_member_index x.
primitive_type
Type ids for sheaf primitives.
bool same_id_space_family(const index_space_handle &xid_space) const
True if and only if this is in the same id space family as xid_space.
scoped_index & operator=(primitives_schema_member_index x)
Assignment from primitives_schema_member_index.
scoped_index & operator=(standard_dof_tuple_index x)
Assignment from standard_dof_tuple_index.
scoped_index & operator%=(long int xother)
This := this modulo long int xother.
scoped_index & operator>>(scoped_index &xother) const
Maps this to the id space of xother; sets xother to the image of this in the id space of xother; retu...
bool operator==(unsigned long int xother) const
True if this has the same value as unsigned long int xother.
scoped_index operator-(unsigned char xother) const
This - unsigned char xother.
scoped_index operator/(int xother) const
This / int xother.
scoped_index(unsigned int xother, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
bool operator!=(signed char xother) const
True if this does not have the same value as signed char xother.
scoped_index & operator+=(signed char xother)
This := this + signed char xother.
bool is_scoped() const
True if and only if scope() is attached.
bool operator!=(long int xother) const
True if this does not have the same value as long int xother.
An index within the external ("client") scope of a given id space.
bool operator==(unsigned short int xother) const
True if this has the same value as unsigned short int xother.
bool operator!=(scoped_index_hub_pod xother) const
True if and only if the hub_pod of this is equal to xother.
scoped_index & operator+=(unsigned char xother)
This := this + unsigned char xother.
bool operator<=(int xother) const
True if this is less than or equal to int xother.
scoped_index & operator=(long int xother)
Assignment from long int.
bool operator<(unsigned short int xother) const
True if this is less than unsigned short int xother.
SHEAF_DLL_SPEC size_t deep_size(const dof_descriptor_array &xp, bool xinclude_shallow=true)
The deep size of the referenced object of type dof_descriptor_array.
scoped_index operator%(unsigned short int xother) const
This modulo unsigned short int xother.
bool same_id_space_family(const scoped_index &xother) const
True if and only if this is in the same id space family as xother.
scoped_index(primitives_schema_member_index x, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
static bool is_positive_definite(const index_type &xindex)
True if xindex is > 0.
scoped_index operator%(const scoped_index &xother) const
This modulo xother.
scoped_index & operator=(signed char xother)
Assignment from signed char.
scoped_index operator+(int xother) const
This + int xother.
scoped_index & operator--()
Prefix decrement.
scoped_index & operator=(int xother)
Assignment from int.
scoped_index(const scoped_index &xother)
Copy constructor.
bool operator<(standard_subposet_index x) const
True if this is less than standard_subposet_index x.
bool operator>=(standard_subposet_index x) const
True if this is greater than or equal to standard_subposet_index x.
scoped_index operator%(int xother) const
This modulo int xother.
bool operator>=(unsigned int xother) const
True if this is greater than or equal to unsigned int xother.
scoped_index operator+(unsigned long int xother) const
This + unsigned long int xother.
scoped_index & operator++()
Prefix increment.
scoped_index(long int xother, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
scoped_index & operator%=(const scoped_index &xother)
This := this modulo xother.
bool operator>=(unsigned char xother) const
True if this is greater than or equal to unsigned char xother.
scoped_index & operator%=(signed char xother)
This := this modulo signed char xother.
bool operator<(unsigned char xother) const
True if this is less than unsigned char xother.
void hub_scope()
Maps this to the hub id space.
void put(const index_space_handle &xid_space, pod_type xpod)
Set the scope to id space, xid_space and pod() to xpod.
bool operator>(unsigned short int xother) const
True if this is greater than unsigned short int xother.
scoped_index & operator/=(unsigned long int xother)
This := this / unsigned long int xother.
bool operator>(standard_dof_tuple_index x) const
True if this is greater than standard_dof_tuple_index x.
static const scoped_index & INVALID()
The invalid id.
bool in_range(const scoped_index &xbegin, const scoped_index &xend) const
True if this is greater than or equal to xbegin and less than xend in the id space of xbegin and xend...
bool operator<(const scoped_index &xother) const
True if this is less than xother.
scoped_index operator/(unsigned long int xother) const
This / unsigned long int xother.
bool is_identical_to(const scoped_index &xother) const
True if this is identical to xother, that is, they both have the same id_space and pod...
bool operator==(primitives_schema_member_index x) const
True if this has the same value as primitives_schema_member_index x.
scoped_index & operator=(namespace_schema_member_index x)
Assignment from namespace_schema_member_index.
scoped_index & operator+=(unsigned int xother)
This := this + unsigned int xother.
bool operator==(const scoped_index &xother) const
True if this is identical to xother, that is, if this refers to the same member in the same id space ...
standard_version_index
Ids for standard poset versions.
namespace_member_index
Ids for standard poset members.
bool operator<=(scoped_index_hub_pod xother) const
True if and only if the hub_pod of this is less than or equal to xother.
index_type::pod_type pod_type
The plain old data (POD) type associated with the index type.
bool operator==(standard_subposet_index x) const
True if this has the same value as standard_subposet_index x.
bool operator==(standard_version_index x) const
True if this has the same value as standard_version_index x.
scoped_index & operator%=(unsigned short int xother)
This := this modulo unsigned short int xother.
bool operator>=(namespace_schema_member_index x) const
True if this is greater than or equal to namespace_schema_member_index x.
scoped_index operator*(int xother) const
This * int xother.
scoped_index operator-(const scoped_index &xother) const
This - xother.
scoped_index & operator=(unsigned char xother)
Assignment from unsigned char.
bool operator==(standard_dof_tuple_index x) const
True if this has the same value as standard_dof_tuple_index x.
scoped_index & operator-=(unsigned short int xother)
This := this - unsigned short int xother.
scoped_index(const index_space_handle &xid_space, pod_type xpod)
Creates an instance with pod() == xpod in the scope of xid_space.
scoped_index(unsigned char xother, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
scoped_index & operator=(standard_subposet_index x)
Assignment from standard_subposet_index.
scoped_index operator/(signed char xother) const
This / signed char xother.
~scoped_index()
Destructor. Not virtual; this can not be a base class.
bool operator<=(standard_member_index x) const
True if this is less than or equal to standard_member_index x.
scoped_index & operator=(unsigned long int xother)
Assignment from unsigned long int.
bool operator!=(unsigned int xother) const
True if this does not have the same value as unsigned int xother.
scoped_index operator*(const scoped_index &xother) const
This * xother.
scoped_index & operator*=(unsigned char xother)
This := this * unsigned char xother.
pod_type glued_hub_pod() const
The pod value of this mapped to the glued hub id space.
scoped_index & operator-=(int xother)
This := this - int xother.
SHEAF_DLL_SPEC std::istream & operator>>(std::istream &is, dof_tuple_type &xdt)
Extract dof_tuple_type xdt from istream& is.
scoped_index & operator%=(unsigned char xother)
This := this modulo unsigned char xother.
scoped_index operator-(unsigned int xother) const
This - unsigned int xother.
scoped_index & operator*=(short int xother)
This := this * short int xother.
scoped_index hub_id() const
This mapped to the hub id space.
pod_index_type pod_type
The "plain old data" storage type for this.
bool operator<(scoped_index_hub_pod xother) const
True if and only if the hub_pod of this is less than to xother.
int_type pod_index_type
The plain old data index type.
scoped_index operator+(unsigned short int xother) const
This + unsigned short int xother.
scoped_index & operator=(unsigned short int xother)
Assignment from unsigned short int.
bool operator!=(standard_subposet_index x) const
True if this does not have the same value as standard_subposet_index x.
bool operator>(primitives_schema_member_index x) const
True if this is greater than primitives_schema_member_index x.
scoped_index & operator-=(const scoped_index &xother)
This := this - xother.
static bool is_positive(const index_type &xindex)
True if xindex is >= 0.
scoped_index operator+(unsigned int xother) const
This + unsigned int xother.
scoped_index operator%(short int xother) const
This modulo short int xother.
bool operator!=(const scoped_index &xother) const
True if this not identical to as xother.
SHEAF_DLL_SPEC std::ostream & operator<<(std::ostream &os, const dof_descriptor_array &p)
Insert dof_descriptor_array& p into ostream& os.
Namespace for the sheaves component of the sheaf system.
scoped_index & operator=(standard_version_index x)
Assignment from standard_version_index.
scoped_index(const index_space_handle &xid_space)
Creates an invalid instance in the scope of xid_space.
static void put_pod(index_type &xindex, pod_type &xpod)
Sets the pod of an index type xindex to xpod.
scoped_index & operator/=(signed char xother)
This := this / signed char xother.
bool operator<=(primitives_schema_member_index x) const
True if this is less than or equal to primitives_schema_member_index x.
scoped_index operator/(const scoped_index &xother) const
This / xother.
scoped_index & operator*=(unsigned short int xother)
This := this * unsigned short int xother.
bool operator>=(signed char xother) const
True if this is greater than or equal to signed char xother.
bool operator!=(primitives_schema_member_index x) const
True if this does not have the same value as primitives_schema_member_index x.
scoped_index & operator/=(unsigned char xother)
This := this / unsigned char xother.
scoped_index & operator=(const scoped_index &xother)
Assignment operator.
bool operator>=(unsigned short int xother) const
True if this is greater than or equal to unsigned short int xother.
bool operator>(standard_member_index x) const
True if this is greater than standard_member_index x.
const scoped_index operator--(int)
Postfix decrement.
scoped_index operator%(unsigned long int xother) const
This modulo unsigned long int xother.
bool operator<(long int xother) const
True if this is less than long int xother.
scoped_index operator/(unsigned char xother) const
This / unsigned char xother.
Factory and container for a family of id spaces.
scoped_index & operator=(primitive_type x)
Assignment from primitive_type.
bool operator>=(namespace_member_index x) const
True if this is greater than or equal to namespace_member_index x.
bool operator>=(standard_dof_tuple_index x) const
True if this is greater than or equal to standard_dof_tuple_index x.
bool invariant() const
Class invariant.
scoped_index & operator/=(unsigned short int xother)
This := this / unsigned short int xother.
scoped_index(unsigned short int xother, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
scoped_index & operator-=(unsigned long int xother)
This := this - unsigned long int xother.
bool operator==(unsigned int xother) const
True if this has the same value as unsigned int xother.
scoped_index & operator-=(unsigned char xother)
This := this - unsigned char xother.
const scoped_index operator++(int)
Postfix increment.
pod_type unglued_hub_pod(const std::string &xname, pod_type xid) const
The pod index in the unglued hub id space equivalent to xid in the id space with name xname...
bool operator==(namespace_member_index x) const
True if this has the same value as namespace_member_index x.
scoped_index operator%(unsigned char xother) const
This modulo unsigned char xother.
scoped_index operator+(short int xother) const
This + short int xother.
scoped_index operator*(unsigned long int xother) const
This * unsigned long int xother.
scoped_index operator*(unsigned int xother) const
This * unsigned int xother.
SHEAF_DLL_SPEC bool is_valid(pod_index_type xpod_index)
True if an only if xpod_index is valid.
bool operator==(unsigned char xother) const
True if this has the same value as unsigned char xother.
scoped_index & operator%=(unsigned int xother)
This := this modulo unsigned int xother.
SHEAF_DLL_SPEC pod_index_type invalid_pod_index()
The invalid pod index value.
bool operator<=(unsigned short int xother) const
True if this is less than or equal to unsigned short int xother.
bool operator!=(primitive_type x) const
True if this does not have the same value as primitive_type x.
bool operator<=(unsigned char xother) const
True if this is less than or equal to unsigned char xother.
bool operator<(standard_member_index x) const
True if this is less than standard_member_index x.
bool is_positive_definite() const
True if this is greater than ZERO.
bool same_scope(const index_space_handle &xid_space) const
True if and only if this is in the same id space as xid_space.
scoped_index & operator+=(unsigned short int xother)
This := this + unsigned short int xother.
scoped_index(standard_dof_tuple_index x, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
scoped_index(primitive_type x, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
bool is_positive() const
True if this is greater than or equal to ZERO.
bool operator!=(standard_dof_tuple_index x) const
True if this does not have the same value as standard_dof_tuple_index x.
bool operator>=(int xother) const
True if this is greater than or equal to int xother.
bool operator<=(short int xother) const
True if this is less than or equal to short int xother.
scoped_index(unsigned long int xother, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
bool operator<(short int xother) const
True if this is less than short int xother.
bool operator<=(primitive_type x) const
True if this is less than or equal to primitive_type x.
void put_pod(pod_type xpod)
Sets pod() to xpod.
bool operator>=(scoped_index_hub_pod xother) const
True if and only if the hub_pod of this is greater than or equal to xother.
bool is_equivalent_to(const scoped_index &xother) const
True if this is equivalent to xother, that is, if this refers to the same member as xother...
scoped_index operator-() const
Negation (unary minus).
bool operator!=(short int xother) const
True if this does not have the same value as short int xother.
scoped_index(short int xother, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.
bool operator<(int xother) const
True if this is less than int xother.
bool operator!=(standard_member_index x) const
True if this does not have the same value as standard_member_index x.
scoped_index operator-(signed char xother) const
This - signed char xother.
scoped_index operator-(int xother) const
This - int xother.
bool operator<=(long int xother) const
True if this is less than or equal to long int xother.
pod_type hub_pod() const
The pod value of this mapped to the unglued hub id space.
scoped_index(signed char xother, const index_space_handle &xid_space)
Creates an instance with pod() == x in the scope of xid_space.