SheafSystem
0.0.0.0
|
An STL map implementation of class scattered_insertion_index_space_state optimized to efficiently represent id spaces that consist of a collection of closed intervals [begin, end] in both the domain id space and the range id space. Each entry (domain_end, range_end) in the _to_domain map represents the end of a interval in the range id space. If the range interval is not mapped to an domain interval, domain_end is the invalid index value. _to_domain.lower_bound(i) returns the end of the interval containing i and, if domain_end is valid, pod(i) can be computed from i, range_end, and domain_end. More...
#include <interval_index_space_state.h>
Public Member Functions | |
virtual const std::string & | class_name () const |
The name of this class. More... | |
virtual interval_index_space_state * | clone () const |
Virtual constructor; create a new instance of the same type at this. More... | |
Public Member Functions inherited from sheaf::scattered_insertion_index_space_state | |
void | insert (pod_type xid, const scoped_index &xhub_id) |
Make id xid in this id space equivalent to xhub_id in the hub id space. synonym for insert(xid, xhub_id.hub_pod()). More... | |
void | insert (pod_type xid, pod_type xhub_id) |
Make id xid in this id space equivalent to xhub_id in the hub id space. More... | |
Public Member Functions inherited from sheaf::gathered_insertion_index_space_state | |
void | push_back (const scoped_index &xhub_id) |
Make the next id in this space equivalent to xhub_id in the hub id space. synonym for push_back(xhub_id.hub_pod()). More... | |
void | push_back (pod_type xid) |
Make the next id in this space equivalent to xhub_id in the hub id space. More... | |
void | push (index_space_iterator &xitr, const scoped_index &xhub_id) |
Makes id xitr.id() in this id space equivalent to xhub_id in the hub id space. Increments all ids greater than xitr.id() by one, if any. Xitr will be set to the entry with id, xitr.id()+1. synonym for push(xitr, xhub_id.pod()). More... | |
void | push (index_space_iterator &xitr, pod_type xhub_id) |
Makes id xitr.id() in this id space equivalent to xhub_id in the hub id space. Increments all ids greater than xitr.id() if any by one. Xitr will be set to the entry with id xitr.id()+1. More... | |
pod_type | next_id () const |
The id inserted by the next call to push_back. More... | |
size_type | remove (const scoped_index &xid, bool update_extrema) |
Removes the equivalence associated with xid.hub_pod(). synonym for remove_hub(xid.hub_pod(), xupdate_extrema). Returns the number of entries actually removed, either 0 or 1. More... | |
size_type | remove (pod_type xid, bool update_extrema) |
Removes the equivalence associated with id xid. Returns the number of entries actually removed, either 0 or 1. More... | |
size_type | remove_hub (pod_type xhub_id, bool update_extrema) |
Removes the equivalence associated with hub id xhub_id. Returns the number of entries actually removed, either 0 or 1. More... | |
void | remove (index_space_iterator &xitr, bool update_extrema) |
Removes the equivalence associated with id xitr.pod(). Increments xitr to the next entry if any. More... | |
void | gather () |
Gathers this id space into a 0-based, contiguous interval. More... | |
void | clear () |
Delete all ids. More... | |
void | put_is_persistent (bool xis_persistent) |
Set if this id space should be written to disk. More... | |
Public Member Functions inherited from sheaf::explicit_index_space_state | |
virtual | ~explicit_index_space_state () |
Destructor. More... | |
const index_space_collection & | host () const |
The host collection (const version). More... | |
index_space_collection & | host () |
The host collection (mutable version). More... | |
pod_type | index () const |
The index of this id space. More... | |
const index_space_family & | id_spaces () const |
The id space family for this (const version). More... | |
index_space_family & | id_spaces () |
The id space family for this (mutable version). More... | |
const hub_index_space_handle & | hub_id_space () const |
The hub id space. More... | |
size_type | ct () const |
The number of members. More... | |
bool | is_empty () const |
True if there are no ids in the space. More... | |
pod_type | begin () const |
Beginning id of this space. More... | |
pod_type | end () const |
Ending id of this space. More... | |
bool | is_gathered () const |
True if begin() == 0 and end() == ct(). More... | |
bool | contains (const scoped_index &xid) const |
True if this space contains an id equivalent to xid. synonym for contains_hub(xid.hub_pod()). More... | |
bool | contains_hub (pod_type xid) const |
True if this space contains an id equivalent to xid in the unglued hub id space. synonym for contains_unglued_hub(xid) More... | |
virtual bool | contains_glued_hub (pod_type xid) const |
True if this space contains an id equivalent to xid in the hub id space. More... | |
bool | contains (pod_type xid, const scoped_index &xhub_id) const |
True if this space contains an id xid equivalent to xhub_id in the hub id space. synonym for contains(xid, xhub_id.hub_pod()). More... | |
virtual bool | contains (pod_type xid, pod_type xhub_id) const |
True if this space contains an id xid equivalent to xhub_id in the hub id space. More... | |
pod_type | pod (const scoped_index &xid) const |
The pod index in this space equivalent to xid. synonym for pod(xid.hub_pod()). More... | |
pod_type | hub_pod (pod_type xid) const |
The pod index in the unglued hub id space equivalent to xid in this id space. synonym for unglued_hub_pod(xid). More... | |
virtual pod_type | glued_hub_pod (pod_type xid) const |
The pod index in the glued hub id space equivalent to xid in this id space. More... | |
bool | is_persistent () const |
True if this id space should be written to disk. More... | |
virtual void | new_product_structure (const abstract_product_structure &xproduct) |
Creates a new product structure for this id space by cloning the product structure, xproduct. More... | |
virtual void | delete_product_structure () |
Deletes the product structure for this id space. More... | |
const abstract_product_structure & | product_structure () const |
The product structure for this id space (const version). More... | |
abstract_product_structure & | product_structure () |
The product structure for this id space (mutable version). More... | |
bool | has_product_structure () const |
True if this id space has a product structure. More... | |
Public Member Functions inherited from sheaf::any | |
bool | is_same_type (const any *other) const |
True if other is the same type as this. More... | |
virtual | ~any () |
Destructor. More... | |
bool | invariant_check () const |
True if invariant checking is enabled. More... | |
void | enable_invariant_check () const |
Enable invariant checking. More... | |
void | disable_invariant_check () const |
Disable invariant check. Intended for preventing recursive calls to invariant and for suppressing invariant checking during multi-phase initialization. More... | |
int | disable_invariance_check_request_depth () const |
Number of times disable_invariant_check has been called without matching call to enable_invariant_check. More... | |
Friends | |
class | interval_index_space_iterator |
class | namespace_poset |
SHEAF_DLL_SPEC size_t | deep_size (const interval_index_space_state &xn, bool xinclude_shallow) |
The deep size of interval_index_space_state& xn. More... | |
SPACE FACTORY FACET | |
static interval_index_space_handle | new_space (index_space_family &xid_spaces, const std::string &xname, bool xis_persistent, bool xmerge_mode) |
Create a new interval id space in the id space family xid_space at the next available id space index with name xname, persistence xis_persistent, and merge mode xmerge_mode. Returns a handle to the id space created. More... | |
static interval_index_space_handle | new_space (index_space_family &xid_spaces, pod_type xid, const std::string &xname, bool xis_persistent, bool xmerge_mode) |
Create a new interval id space in the id space family xid_space at the id space index xid with name xname, persistence xis_persistent, and merge mode xmerge_mode. Returns a handle to the id space created. More... | |
INTERVAL_INDEX_SPACE_STATE FACET | |
static void | insert_map_interval (pod_type xdomain_begin, pod_type xdomain_end, pod_type xrange_begin, pod_type xrange_end, std::map< pod_type, pod_type > &xmap, bool xmerge_mode) |
Maps the interval [xdomain_begin, xdomain_end] to. More... | |
static pod_type | map_value (pod_type xid, const std::map< pod_type, pod_type > &xmap) |
The value of map xmap at id xid. More... | |
interval_index_space_state () | |
Default constructor. More... | |
interval_index_space_state (const interval_index_space_state &xother) | |
Copy constructor; disabled. More... | |
virtual | ~interval_index_space_state () |
Destructor. More... | |
INTERVAL INDEX SPACE FACET | |
size_type | invalid_entry_ct (pod_type xhub_begin, pod_type xhub_end) const |
The number of entries in the interval [xhub_begin, xhub_end] that have invalid map values. More... | |
void | insert_interval (pod_type xbegin, pod_type xend, const scoped_index &xhub_begin, const scoped_index &xhub_end) |
Make the closed interval [xbegin, xend] equivalent to [xbegin.hub_pod(), xhub_end.hub_pod()]. synonym for insert_interval(xbegin, xend, xhub_begin.hub_pod(), xhub_end.hub_pod()). More... | |
void | insert_interval (pod_type xbegin, pod_type xend, pod_type xhub_begin, pod_type xhub_end) |
Make the closed interval [xbegin, xend] equivalent to [xhub_begin, xhub_end]. More... | |
void | push_interval (const scoped_index &xhub_begin, const scoped_index &xhub_end) |
Push the closed interval [xhub_begin.hub_pod(), xhub_end.hub_pod()] to the end of this space. synonym for push_interval(xhub_begin.hub_pod(), xhub_end.hub_pod()). More... | |
void | push_interval (pod_type xhub_begin, pod_type xhub_end) |
Push the closed interval [xhub_begin, xhub_end] to the end of this space. More... | |
size_type | remove_interval (const scoped_index &xhub_begin, const scoped_index &xhub_end) |
Removes the equivalance associated with the interval [xhub_begin.hub_pod(), xhub_end.hub_pod()]. synonym for remove_hub_interval(xhub_begin.hub_pod(), xhub_end.hub_pod()). Returns the number of entries actually removed, if any. More... | |
size_type | remove_hub_interval (pod_type xhub_begin, pod_type xhub_end) |
Removes the equivalance associated with the interval [xhub_begin, xhub_end]. Returns the number of entries actually removed, if any. More... | |
size_type | remove_interval (pod_type xbegin, pod_type xend) |
Removes the equivalance associated with the interval [xbegin, xend]. Returns the number of entries actually removed, if any. More... | |
pod_type | interval_begin (const scoped_index &xid) const |
The beginning of the interval containing xid.hub_pod(). synonym for internval_begin(xid.hub_pod()). More... | |
pod_type | interval_begin (pod_type xhub_id) const |
The beginning of the interval containing xhub_id. More... | |
pod_type | interval_end (const scoped_index &xid) const |
The end of the interval containing xid.hub_pod. synonym for internval_end(xid.hub_pod()). More... | |
pod_type | interval_end (pod_type xhub_id) const |
The end of the interval containing xhub_id. More... | |
bool | merge_mode () const |
True if and only if compatible intervals should be merged. More... | |
void | put_merge_mode (bool xvalue) |
Sets merge_mode() to xvalue. More... | |
GATHERED_INSERTION_INDEX_SPACE FACET | |
virtual void | update_extrema () |
Update the id extrema. More... | |
virtual void | reserve (size_type xcapacity) |
Reserve enough memory for xcapacity number of ids. More... | |
virtual size_type | capacity () const |
The number of ids reserved in memory. More... | |
MAP REPRESENTATION FACET | |
typedef std::map< pod_type, pod_type > | map_type |
The type of the id maps. More... | |
typedef map_type | to_domain_type |
The type of the range id to domain id map. More... | |
typedef map_type | to_range_type |
The type of the domain id to range id map. More... | |
to_domain_type | _to_domain |
The representation of the range id to domain id map. More... | |
to_range_type | _to_range |
The representation of the domain id to range id map. More... | |
pod_type | _capacity |
The capacity of this map. More... | |
bool | _merge_mode |
True if and only if compatible intervals should be merged. More... | |
void | map_rep_insert_interval (pod_type xdomain_begin, pod_type xdomain_end, pod_type xrange_begin, pod_type xrange_end) |
Inserts the intervals [xdomain_begin, xdomain_end] and [xrange_begin, xrange_end] into the map representation. More... | |
size_type | map_rep_remove_interval (pod_type xbegin, pod_type xend, bool xis_range_id) |
Makes the interval [xbegin, xend) and its image unmapped in the map representation. Returns the number of entries actually unmapped, if any. More... | |
virtual void | map_rep_insert_entry (pod_type xdomain_id, pod_type xrange_id) |
Inserts entry (xdomain_id, xrange_id) into the map representation. More... | |
virtual void | map_rep_push_back (pod_type xrange_id) |
Inserts entry (next_id(), xrange_id) into the map representation. More... | |
virtual void | map_rep_push (index_space_iterator &xitr, pod_type xrange_id) |
Inserts entry (xitr.pod(), xrange_id) into the map representation. Increments all domain ids greater than xitr.pod() by one. Sets xitr to the entry at xitr.pod()+1. More... | |
virtual size_type | map_rep_remove_entry (pod_type xid, bool xis_range_id) |
Removes the entry containing range id xid (xis_range_id true) or domain id xid (xis_range_id false) from the map representation; returns the number of entries actully removed, either 0 or 1. More... | |
virtual void | map_rep_remove_entry (index_space_iterator &xitr) |
Removes the equivalence associated with id xitr.pod()/ Increments xitr to the next entry if any. More... | |
virtual void | map_rep_clear () |
Removes all entrires from the map representation. More... | |
virtual void | map_rep_gather () |
Gathers the map representation into an interval. More... | |
void | print_map_rep (std::ostream &xos) const |
Inserts the map representation into ostream xos. More... | |
EXPLICIT_INDEX_SPACE_STATE FACET | |
virtual interval_index_space_state & | operator= (const explicit_index_space_state &xother) |
Assignment operator. More... | |
virtual bool | operator== (const explicit_index_space_state &xother) const |
True if this is equivalent to xother. More... | |
virtual size_type | deep_size (bool xinclude_shallow) const |
The deep size of this. More... | |
INDEX SPACE FACET | |
virtual bool | contains (pod_type xid) const |
True if this space contains id xid. More... | |
virtual bool | contains_unglued_hub (pod_type xid) const |
True if this space contains an id equivalent to xid in the unglued hub id space. More... | |
virtual pod_type | pod (pod_type xid) const |
The pod index in this space equivalent to xid in the hub id space. More... | |
virtual pod_type | unglued_hub_pod (pod_type xid) const |
The pod index in the unglued hub id space equivalent to xid in this id space. More... | |
HANDLE POOL FACET | |
static size_type | handle_pool_ct () |
The number of handles in the pool. More... | |
static size_type | handle_pool_deep_size () |
The deep size of the handle pool. More... | |
virtual index_space_handle & | get_id_space () const |
The id space handle with this state. More... | |
virtual void | release_id_space (index_space_handle &xid_space) const |
Release the id space handle xid_space. More... | |
virtual bool | allocated_id_space (const index_space_handle &xid_space) const |
True if and only if id space handle xid_space was allocated by the handle pool. More... | |
ITERATOR POOL FACET | |
static size_type | iterator_pool_ct () |
The number of iterators in the pool. More... | |
static size_type | iterator_pool_deep_size () |
The deep size of the iterator pool. More... | |
virtual index_space_iterator & | get_iterator () const |
Allocates an id space iterator from the iterator pool. More... | |
virtual void | release_iterator (index_space_iterator &xitr) const |
Returns the id space iterator xitr to the iterator pool. More... | |
virtual bool | allocated_iterator (const index_space_iterator &xitr) const |
True if and only if id space iterator xitr was allocated by the iterator pool. More... | |
ANY FACET | |
virtual bool | is_ancestor_of (const any *other) const |
Conformance test; true if other conforms to this. More... | |
virtual bool | invariant () const |
Class invariant. More... | |
Additional Inherited Members | |
Public Types inherited from sheaf::explicit_index_space_state | |
typedef pod_index_type | pod_type |
The "plain old data" index type for this. More... | |
Static Public Member Functions inherited from sheaf::explicit_index_space_state | |
static factory< explicit_index_space_state > & | id_space_factory () |
A factory for making descendants of this class. More... | |
Protected Member Functions inherited from sheaf::scattered_insertion_index_space_state | |
scattered_insertion_index_space_state () | |
Default constructor. More... | |
scattered_insertion_index_space_state (const scattered_insertion_index_space_state &xother) | |
Copy constructor; disabled. More... | |
virtual | ~scattered_insertion_index_space_state () |
Destructor. More... | |
Protected Member Functions inherited from sheaf::gathered_insertion_index_space_state | |
gathered_insertion_index_space_state () | |
Default constructor. More... | |
gathered_insertion_index_space_state (const gathered_insertion_index_space_state &xother) | |
Copy constructor; disabled. More... | |
virtual | ~gathered_insertion_index_space_state () |
Destructor. More... | |
virtual void | update_extrema_after_remove () |
Update the id extrema after a remove operation. More... | |
void | update_extrema (pod_type xid) |
Update the extrema for the inserted id xid. More... | |
Protected Member Functions inherited from sheaf::explicit_index_space_state | |
explicit_index_space_state () | |
Default constructor. More... | |
explicit_index_space_state (const explicit_index_space_state &xother) | |
Copy constructor; disabled. More... | |
void | new_state (index_space_family &xid_spaces, const std::string &xname, bool xis_persistent) |
Create a new id space state in the id space family xid_spaces at the next available id space index with name xname, and persistence xis_persistent. More... | |
void | new_state (index_space_family &xid_spaces, pod_type xid, const std::string &xname, bool xis_persistent) |
Create a new id space state in the id space family xid_spaces at the id space index xid with name xname, and persistence xis_persistent. More... | |
void | invalidate_extrema () |
Invalidate the extrema. More... | |
void | attach (explicit_index_space_handle &xid_space) const |
Attach the id space handle xid_space to this state. More... | |
void | attach (explicit_index_space_iterator &xitr) const |
Attach the id space iterator xitr to this state. More... | |
Protected Member Functions inherited from sheaf::any | |
any () | |
default constructor More... | |
Protected Attributes inherited from sheaf::explicit_index_space_state | |
index_space_collection * | _host |
The host collection. More... | |
pod_type | _index |
The index of this id space. More... | |
size_type | _ct |
The number of members. More... | |
pod_type | _begin |
Beginning id of this space. More... | |
pod_type | _end |
Ending id of this space. More... | |
bool | _is_persistent |
True if this id space should be written to disk. More... | |
abstract_product_structure * | _product |
The product structure for this id space. More... | |
An STL map implementation of class scattered_insertion_index_space_state optimized to efficiently represent id spaces that consist of a collection of closed intervals [begin, end] in both the domain id space and the range id space. Each entry (domain_end, range_end) in the _to_domain map represents the end of a interval in the range id space. If the range interval is not mapped to an domain interval, domain_end is the invalid index value. _to_domain.lower_bound(i) returns the end of the interval containing i and, if domain_end is valid, pod(i) can be computed from i, range_end, and domain_end.
The _to_range map and hub_pod(i) work in a similar manner. See the comments in function insert_interval for a more detailed discussion.
Definition at line 67 of file interval_index_space_state.h.
|
protected |
The type of the id maps.
Definition at line 381 of file interval_index_space_state.h.
|
protected |
The type of the range id to domain id map.
Definition at line 386 of file interval_index_space_state.h.
|
protected |
The type of the domain id to range id map.
Definition at line 396 of file interval_index_space_state.h.
|
protected |
Default constructor.
Definition at line 342 of file interval_index_space_state.cc.
References _capacity, _merge_mode, capacity(), invariant(), sheaf::explicit_index_space_state::is_empty(), merge_mode(), and ~interval_index_space_state().
Referenced by clone(), map_value(), and new_space().
|
inlineprotected |
Copy constructor; disabled.
Definition at line 144 of file interval_index_space_state.h.
References sheaf::gathered_insertion_index_space_state::update_extrema().
|
protectedvirtual |
Destructor.
Definition at line 365 of file interval_index_space_state.cc.
References insert_interval().
Referenced by interval_index_space_state().
|
virtual |
True if and only if id space handle xid_space was allocated by the handle pool.
Implements sheaf::explicit_index_space_state.
Definition at line 1615 of file interval_index_space_state.cc.
References iterator_pool_ct().
Referenced by release_id_space().
|
virtual |
True if and only if id space iterator xitr was allocated by the iterator pool.
Implements sheaf::explicit_index_space_state.
Definition at line 1752 of file interval_index_space_state.cc.
References class_name().
Referenced by map_rep_push(), map_rep_remove_entry(), and release_iterator().
|
virtual |
The number of ids reserved in memory.
Implements sheaf::gathered_insertion_index_space_state.
Definition at line 931 of file interval_index_space_state.cc.
References _capacity, and print_map_rep().
Referenced by interval_index_space_state(), and reserve().
|
virtual |
The name of this class.
Reimplemented from sheaf::scattered_insertion_index_space_state.
Definition at line 1804 of file interval_index_space_state.cc.
References clone().
Referenced by allocated_iterator().
|
virtual |
Virtual constructor; create a new instance of the same type at this.
Implements sheaf::explicit_index_space_state.
Definition at line 1812 of file interval_index_space_state.cc.
References sheaf::explicit_index_space_state::id_space_factory(), interval_index_space_state(), is_ancestor_of(), and sheaf::any::is_same_type().
Referenced by class_name().
|
virtual |
True if this space contains id xid.
Implements sheaf::explicit_index_space_state.
Definition at line 1439 of file interval_index_space_state.cc.
References _to_range, contains_unglued_hub(), and sheaf::is_valid().
Referenced by map_rep_insert_entry(), map_rep_push(), map_rep_push_back(), map_rep_remove_entry(), operator=(), pod(), and remove_interval().
|
virtual |
True if this space contains an id equivalent to xid in the unglued hub id space.
Implements sheaf::explicit_index_space_state.
Definition at line 1460 of file interval_index_space_state.cc.
References _to_domain, sheaf::is_valid(), and pod().
Referenced by contains(), and unglued_hub_pod().
|
virtual |
The deep size of this.
Reimplemented from sheaf::explicit_index_space_state.
Definition at line 1379 of file interval_index_space_state.cc.
References sheaf::deep_size(), and operator=().
|
virtual |
The id space handle with this state.
Implements sheaf::explicit_index_space_state.
Definition at line 1568 of file interval_index_space_state.cc.
References sheaf::explicit_index_space_state::attach(), sheaf::explicit_index_space_handle::is_attached(), and release_id_space().
Referenced by handle_pool_deep_size().
|
virtual |
Allocates an id space iterator from the iterator pool.
Implements sheaf::explicit_index_space_state.
Definition at line 1705 of file interval_index_space_state.cc.
References sheaf::explicit_index_space_state::attach(), sheaf::explicit_index_space_iterator::is_attached(), and release_iterator().
Referenced by iterator_pool_deep_size().
|
static |
The number of handles in the pool.
Definition at line 1530 of file interval_index_space_state.cc.
References handle_pool_deep_size().
Referenced by unglued_hub_pod().
|
static |
The deep size of the handle pool.
Definition at line 1549 of file interval_index_space_state.cc.
References sheaf::deep_size(), and get_id_space().
Referenced by handle_pool_ct().
void sheaf::interval_index_space_state::insert_interval | ( | pod_type | xbegin, |
pod_type | xend, | ||
const scoped_index & | xhub_begin, | ||
const scoped_index & | xhub_end | ||
) |
Make the closed interval [xbegin, xend] equivalent to [xbegin.hub_pod(), xhub_end.hub_pod()]. synonym for insert_interval(xbegin, xend, xhub_begin.hub_pod(), xhub_end.hub_pod()).
Definition at line 391 of file interval_index_space_state.cc.
References sheaf::scoped_index::hub_pod(), and sheaf::scoped_index::in_scope().
Referenced by sheaf::interval_index_space_handle::insert_interval(), push_interval(), and ~interval_index_space_state().
void sheaf::interval_index_space_state::insert_interval | ( | pod_type | xbegin, |
pod_type | xend, | ||
pod_type | xhub_begin, | ||
pod_type | xhub_end | ||
) |
Make the closed interval [xbegin, xend] equivalent to [xhub_begin, xhub_end].
Definition at line 422 of file interval_index_space_state.cc.
References sheaf::explicit_index_space_state::_begin, sheaf::explicit_index_space_state::_ct, sheaf::explicit_index_space_state::_end, sheaf::explicit_index_space_state::ct(), sheaf::explicit_index_space_state::hub_pod(), invalid_entry_ct(), map_rep_insert_interval(), pod(), and push_interval().
|
staticprotected |
Maps the interval [xdomain_begin, xdomain_end] to.
Definition at line 128 of file interval_index_space_state.cc.
References sheaf::is_valid(), and map_value().
Referenced by map_rep_insert_interval(), map_rep_remove_interval(), and new_space().
sheaf::interval_index_space_state::pod_type sheaf::interval_index_space_state::interval_begin | ( | const scoped_index & | xid | ) | const |
The beginning of the interval containing xid.hub_pod(). synonym for internval_begin(xid.hub_pod()).
Definition at line 630 of file interval_index_space_state.cc.
References sheaf::scoped_index::hub_pod(), and sheaf::scoped_index::in_scope().
Referenced by sheaf::interval_index_space_handle::interval_begin(), and remove_interval().
sheaf::interval_index_space_state::pod_type sheaf::interval_index_space_state::interval_begin | ( | pod_type | xhub_id | ) | const |
The beginning of the interval containing xhub_id.
Definition at line 652 of file interval_index_space_state.cc.
References _to_domain, sheaf::explicit_index_space_state::contains_hub(), interval_end(), sheaf::invalid_pod_index(), and sheaf::is_valid().
sheaf::interval_index_space_state::pod_type sheaf::interval_index_space_state::interval_end | ( | const scoped_index & | xid | ) | const |
The end of the interval containing xid.hub_pod. synonym for internval_end(xid.hub_pod()).
Definition at line 688 of file interval_index_space_state.cc.
References sheaf::scoped_index::hub_pod(), and sheaf::scoped_index::in_scope().
Referenced by interval_begin(), and sheaf::interval_index_space_handle::interval_end().
sheaf::interval_index_space_state::pod_type sheaf::interval_index_space_state::interval_end | ( | pod_type | xhub_id | ) | const |
The end of the interval containing xhub_id.
Definition at line 710 of file interval_index_space_state.cc.
References _to_domain, sheaf::explicit_index_space_state::contains_hub(), sheaf::invalid_pod_index(), sheaf::is_valid(), and merge_mode().
|
protected |
The number of entries in the interval [xhub_begin, xhub_end] that have invalid map values.
Definition at line 784 of file interval_index_space_state.cc.
References _to_domain, sheaf::is_valid(), and update_extrema().
Referenced by insert_interval(), and put_merge_mode().
|
virtual |
Class invariant.
Reimplemented from sheaf::scattered_insertion_index_space_state.
Definition at line 1883 of file interval_index_space_state.cc.
References sheaf::deep_size(), sheaf::any::disable_invariant_check(), sheaf::any::enable_invariant_check(), sheaf::scattered_insertion_index_space_state::invariant(), and sheaf::any::invariant_check().
Referenced by interval_index_space_state(), is_ancestor_of(), operator=(), and reserve().
|
virtual |
Conformance test; true if other conforms to this.
Reimplemented from sheaf::scattered_insertion_index_space_state.
Definition at line 1862 of file interval_index_space_state.cc.
References invariant().
Referenced by clone(), operator=(), and operator==().
|
static |
The number of iterators in the pool.
Definition at line 1667 of file interval_index_space_state.cc.
References iterator_pool_deep_size().
Referenced by allocated_id_space().
|
static |
The deep size of the iterator pool.
Definition at line 1686 of file interval_index_space_state.cc.
References sheaf::deep_size(), and get_iterator().
Referenced by iterator_pool_ct().
|
protectedvirtual |
Removes all entrires from the map representation.
Implements sheaf::gathered_insertion_index_space_state.
Definition at line 1237 of file interval_index_space_state.cc.
References _to_domain, _to_range, and map_rep_gather().
Referenced by map_rep_remove_entry().
|
protectedvirtual |
Gathers the map representation into an interval.
Implements sheaf::gathered_insertion_index_space_state.
Definition at line 1260 of file interval_index_space_state.cc.
References _to_domain, _to_range, sheaf::invalid_pod_index(), sheaf::is_valid(), and operator==().
Referenced by map_rep_clear().
|
protectedvirtual |
Inserts entry (xdomain_id, xrange_id) into the map representation.
Implements sheaf::scattered_insertion_index_space_state.
Definition at line 1106 of file interval_index_space_state.cc.
References contains(), sheaf::explicit_index_space_state::contains_hub(), map_rep_insert_interval(), and map_rep_push_back().
Referenced by map_rep_remove_interval().
|
protected |
Inserts the intervals [xdomain_begin, xdomain_end] and [xrange_begin, xrange_end] into the map representation.
Definition at line 998 of file interval_index_space_state.cc.
References _merge_mode, _to_domain, _to_range, sheaf::explicit_index_space_state::hub_pod(), insert_map_interval(), map_rep_remove_interval(), and pod().
Referenced by insert_interval(), map_rep_insert_entry(), map_rep_push_back(), and print_map_rep().
|
protectedvirtual |
Inserts entry (xitr.pod(), xrange_id) into the map representation. Increments all domain ids greater than xitr.pod() by one. Sets xitr to the entry at xitr.pod()+1.
Not Implemented.
Implements sheaf::gathered_insertion_index_space_state.
Definition at line 1153 of file interval_index_space_state.cc.
References allocated_iterator(), contains(), sheaf::explicit_index_space_state::contains_hub(), sheaf::index_space_iterator::hub_pod(), map_rep_remove_entry(), and sheaf::index_space_iterator::pod().
Referenced by map_rep_push_back().
|
protectedvirtual |
Inserts entry (next_id(), xrange_id) into the map representation.
Implements sheaf::gathered_insertion_index_space_state.
Definition at line 1128 of file interval_index_space_state.cc.
References contains(), sheaf::explicit_index_space_state::contains_hub(), map_rep_insert_interval(), map_rep_push(), and sheaf::gathered_insertion_index_space_state::next_id().
Referenced by map_rep_insert_entry().
|
protectedvirtual |
Removes the entry containing range id xid (xis_range_id true) or domain id xid (xis_range_id false) from the map representation; returns the number of entries actully removed, either 0 or 1.
Implements sheaf::gathered_insertion_index_space_state.
Definition at line 1184 of file interval_index_space_state.cc.
References _to_range, contains(), sheaf::explicit_index_space_state::contains_hub(), map_rep_remove_interval(), and map_value().
Referenced by map_rep_push().
|
protectedvirtual |
Removes the equivalence associated with id xitr.pod()/ Increments xitr to the next entry if any.
Not Implemented.
Implements sheaf::gathered_insertion_index_space_state.
Definition at line 1207 of file interval_index_space_state.cc.
References allocated_iterator(), contains(), sheaf::index_space_iterator::hub_pod(), sheaf::index_space_iterator::is_done(), map_rep_clear(), and sheaf::index_space_iterator::pod().
|
protected |
Makes the interval [xbegin, xend) and its image unmapped in the map representation. Returns the number of entries actually unmapped, if any.
Definition at line 1031 of file interval_index_space_state.cc.
References _merge_mode, _to_domain, _to_range, insert_map_interval(), sheaf::invalid_pod_index(), sheaf::is_valid(), map_rep_insert_entry(), and map_value().
Referenced by map_rep_insert_interval(), map_rep_remove_entry(), remove_hub_interval(), and remove_interval().
|
staticprotected |
The value of map xmap at id xid.
Definition at line 309 of file interval_index_space_state.cc.
References interval_index_space_state(), sheaf::invalid_pod_index(), and sheaf::is_valid().
Referenced by insert_map_interval(), map_rep_remove_entry(), map_rep_remove_interval(), pod(), and unglued_hub_pod().
bool sheaf::interval_index_space_state::merge_mode | ( | ) | const |
True if and only if compatible intervals should be merged.
Definition at line 744 of file interval_index_space_state.cc.
References _merge_mode, and put_merge_mode().
Referenced by interval_end(), interval_index_space_state(), sheaf::interval_index_space_handle::merge_mode(), and put_merge_mode().
|
static |
Create a new interval id space in the id space family xid_space at the next available id space index with name xname, persistence xis_persistent, and merge mode xmerge_mode. Returns a handle to the id space created.
Definition at line 37 of file interval_index_space_state.cc.
References sheaf::interval_index_space_handle::conforms_to_state(), sheaf::index_space_family::contains(), sheaf::explicit_index_space_handle::id_spaces(), interval_index_space_state(), sheaf::explicit_index_space_handle::is_persistent(), sheaf::interval_index_space_handle::merge_mode(), and sheaf::index_space_handle::name().
Referenced by sheaf::primary_sum_index_space_state::new_gathered_id_space(), and sheaf::interval_index_space_handle::new_space().
|
static |
Create a new interval id space in the id space family xid_space at the id space index xid with name xname, persistence xis_persistent, and merge mode xmerge_mode. Returns a handle to the id space created.
Definition at line 74 of file interval_index_space_state.cc.
References sheaf::interval_index_space_handle::conforms_to_state(), sheaf::index_space_family::contains(), sheaf::explicit_index_space_handle::id_spaces(), sheaf::explicit_index_space_handle::index(), insert_map_interval(), interval_index_space_state(), sheaf::index_space_family::is_explicit_interval(), sheaf::explicit_index_space_handle::is_persistent(), sheaf::interval_index_space_handle::merge_mode(), and sheaf::index_space_handle::name().
|
protectedvirtual |
Assignment operator.
Reimplemented from sheaf::scattered_insertion_index_space_state.
Definition at line 1400 of file interval_index_space_state.cc.
References _capacity, _merge_mode, _to_domain, _to_range, contains(), invariant(), and is_ancestor_of().
Referenced by deep_size().
|
virtual |
True if this is equivalent to xother.
Reimplemented from sheaf::scattered_insertion_index_space_state.
Definition at line 1353 of file interval_index_space_state.cc.
References _capacity, _merge_mode, _to_domain, _to_range, deep_size, is_ancestor_of(), and sheaf::scattered_insertion_index_space_state::operator==().
Referenced by map_rep_gather().
|
virtual |
The pod index in this space equivalent to xid in the hub id space.
Implements sheaf::explicit_index_space_state.
Definition at line 1481 of file interval_index_space_state.cc.
References _to_domain, contains(), sheaf::is_valid(), map_value(), and unglued_hub_pod().
Referenced by contains_unglued_hub(), insert_interval(), map_rep_insert_interval(), and push_interval().
void sheaf::interval_index_space_state::print_map_rep | ( | std::ostream & | xos | ) | const |
Inserts the map representation into ostream xos.
Definition at line 961 of file interval_index_space_state.cc.
References _to_domain, _to_range, and map_rep_insert_interval().
Referenced by capacity(), and sheaf::interval_index_space_handle::print_map_rep().
void sheaf::interval_index_space_state::push_interval | ( | const scoped_index & | xhub_begin, |
const scoped_index & | xhub_end | ||
) |
Push the closed interval [xhub_begin.hub_pod(), xhub_end.hub_pod()] to the end of this space. synonym for push_interval(xhub_begin.hub_pod(), xhub_end.hub_pod()).
Definition at line 486 of file interval_index_space_state.cc.
References sheaf::scoped_index::hub_pod(), and sheaf::scoped_index::in_scope().
Referenced by insert_interval(), and sheaf::interval_index_space_handle::push_interval().
Push the closed interval [xhub_begin, xhub_end] to the end of this space.
Definition at line 511 of file interval_index_space_state.cc.
References sheaf::explicit_index_space_state::ct(), insert_interval(), sheaf::gathered_insertion_index_space_state::next_id(), pod(), and remove_interval().
void sheaf::interval_index_space_state::put_merge_mode | ( | bool | xvalue | ) |
Sets merge_mode() to xvalue.
Definition at line 763 of file interval_index_space_state.cc.
References _merge_mode, invalid_entry_ct(), and merge_mode().
Referenced by merge_mode(), and sheaf::interval_index_space_handle::put_merge_mode().
|
virtual |
Release the id space handle xid_space.
Implements sheaf::explicit_index_space_state.
Definition at line 1588 of file interval_index_space_state.cc.
References allocated_id_space(), and sheaf::index_space_handle::detach().
Referenced by get_id_space().
|
virtual |
Returns the id space iterator xitr to the iterator pool.
Implements sheaf::explicit_index_space_state.
Definition at line 1725 of file interval_index_space_state.cc.
References allocated_iterator(), and sheaf::index_space_iterator::detach().
Referenced by get_iterator().
sheaf::size_type sheaf::interval_index_space_state::remove_hub_interval | ( | pod_type | xhub_begin, |
pod_type | xhub_end | ||
) |
Removes the equivalance associated with the interval [xhub_begin, xhub_end]. Returns the number of entries actually removed, if any.
Definition at line 568 of file interval_index_space_state.cc.
References sheaf::explicit_index_space_state::_ct, sheaf::explicit_index_space_state::contains_hub(), map_rep_remove_interval(), remove_interval(), and sheaf::gathered_insertion_index_space_state::update_extrema_after_remove().
Referenced by sheaf::interval_index_space_handle::remove_hub_interval(), and remove_interval().
sheaf::size_type sheaf::interval_index_space_state::remove_interval | ( | const scoped_index & | xhub_begin, |
const scoped_index & | xhub_end | ||
) |
Removes the equivalance associated with the interval [xhub_begin.hub_pod(), xhub_end.hub_pod()]. synonym for remove_hub_interval(xhub_begin.hub_pod(), xhub_end.hub_pod()). Returns the number of entries actually removed, if any.
Definition at line 541 of file interval_index_space_state.cc.
References sheaf::scoped_index::hub_pod(), sheaf::scoped_index::in_scope(), and remove_hub_interval().
Referenced by push_interval(), remove_hub_interval(), and sheaf::interval_index_space_handle::remove_interval().
sheaf::size_type sheaf::interval_index_space_state::remove_interval | ( | pod_type | xbegin, |
pod_type | xend | ||
) |
Removes the equivalance associated with the interval [xbegin, xend]. Returns the number of entries actually removed, if any.
Definition at line 599 of file interval_index_space_state.cc.
References sheaf::explicit_index_space_state::_ct, contains(), interval_begin(), map_rep_remove_interval(), and sheaf::gathered_insertion_index_space_state::update_extrema_after_remove().
|
virtual |
Reserve enough memory for xcapacity number of ids.
Implements sheaf::gathered_insertion_index_space_state.
Definition at line 911 of file interval_index_space_state.cc.
References _capacity, capacity(), and invariant().
Referenced by update_extrema().
|
virtual |
The pod index in the unglued hub id space equivalent to xid in this id space.
Implements sheaf::explicit_index_space_state.
Definition at line 1500 of file interval_index_space_state.cc.
References _to_range, contains_unglued_hub(), handle_pool_ct(), sheaf::is_valid(), and map_value().
Referenced by pod().
|
virtual |
Update the id extrema.
Implements sheaf::gathered_insertion_index_space_state.
Definition at line 857 of file interval_index_space_state.cc.
References sheaf::explicit_index_space_state::_begin, sheaf::explicit_index_space_state::_ct, sheaf::explicit_index_space_state::_end, _to_range, sheaf::explicit_index_space_state::invalidate_extrema(), sheaf::is_valid(), and reserve().
Referenced by invalid_entry_ct().
|
friend |
The deep size of interval_index_space_state& xn.
Referenced by sheaf::deep_size(), and operator==().
|
protected |
The capacity of this map.
Definition at line 406 of file interval_index_space_state.h.
Referenced by capacity(), interval_index_space_state(), operator=(), operator==(), and reserve().
|
protected |
True if and only if compatible intervals should be merged.
Definition at line 411 of file interval_index_space_state.h.
Referenced by interval_index_space_state(), map_rep_insert_interval(), map_rep_remove_interval(), merge_mode(), operator=(), operator==(), and put_merge_mode().
|
protected |
The representation of the range id to domain id map.
Definition at line 391 of file interval_index_space_state.h.
Referenced by contains_unglued_hub(), sheaf::deep_size(), interval_begin(), interval_end(), invalid_entry_ct(), map_rep_clear(), map_rep_gather(), map_rep_insert_interval(), map_rep_remove_interval(), operator=(), operator==(), pod(), and print_map_rep().
|
protected |
The representation of the domain id to range id map.
Definition at line 401 of file interval_index_space_state.h.
Referenced by contains(), sheaf::deep_size(), map_rep_clear(), map_rep_gather(), map_rep_insert_interval(), map_rep_remove_entry(), map_rep_remove_interval(), operator=(), operator==(), print_map_rep(), unglued_hub_pod(), and update_extrema().