21 #ifndef INDEX_SPACE_HANDLE_H 22 #define INDEX_SPACE_HANDLE_H 24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 29 #include "SheafSystem/any.h" 33 #include "SheafSystem/pod_types.h" 39 class abstract_product_structure;
40 class hub_index_space_handle;
41 class index_space_collection;
42 class index_space_family;
43 class index_space_iterator;
134 bool is_empty()
const;
139 virtual pod_type begin()
const = 0;
144 virtual pod_type end()
const = 0;
149 bool is_gathered()
const;
154 virtual bool contains(pod_type xid)
const = 0;
166 bool contains_hub(pod_type xid)
const;
171 virtual bool contains_unglued_hub(pod_type xid)
const = 0;
176 virtual bool contains_glued_hub(pod_type xid)
const = 0;
183 bool contains(pod_type xid,
const scoped_index& xhub_id)
const;
189 virtual bool contains(pod_type xid, pod_type xhub_id)
const = 0;
194 virtual pod_type pod(pod_type xid)
const = 0;
206 pod_type hub_pod(pod_type xid)
const;
211 virtual pod_type unglued_hub_pod(pod_type xid)
const = 0;
217 virtual pod_type glued_hub_pod(pod_type xid)
const = 0;
222 virtual bool is_persistent()
const = 0;
247 virtual void delete_product_structure() = 0;
263 const T& product_structure()
const;
269 T& product_structure();
274 virtual bool has_product_structure()
const = 0;
280 bool product_structure_conforms_to()
const;
304 virtual pod_type index()
const = 0;
309 std::string name()
const;
314 void put_name(
const std::string& xname);
319 virtual bool is_attached()
const = 0;
334 virtual void attach_to(pod_type xindex) = 0;
339 void attach_to(
const std::string& xname);
351 pod_type xindex)
const;
358 const std::string& xname)
const;
364 bool conforms_to_state(pod_type xid)
const;
370 bool conforms_to_state(
const std::string& xname)
const;
383 pod_type xlocal_id) = 0;
388 virtual void detach() = 0;
395 pod_type xlocal_id)
const = 0;
420 virtual void release_id_space()
const = 0;
426 virtual bool allocated_id_space()
const = 0;
475 virtual bool is_ancestor_of(
const any *other)
const;
480 virtual bool invariant()
const;
508 #endif // ifndef INDEX_SPACE_HANDLE_H An abstract class that defines the product structure for an id space.
An abstract iterator over the ids of an id space.
An abstract handle to a space of alternate integer identifiers (aliases) for a subset of a hub set of...
An implementation of class sum_index_space_handle that has a primary sum id space state...
Abstract base class with useful features for all objects.
pod_index_type pod_type
The "plain old data" index type for this.
An index within the external ("client") scope of a given id space.
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.
unsigned long size_type
An unsigned integral type used to represent sizes and capacities.
A collection of id space states. This is a virtual class with provides an interface for accessing the...
bool operator==(const singly_linked_list< T, Alloc > &lhs, const singly_linked_list< T, Alloc > &rhs)
Checks if the contents of lhs and rhs are equal, that is, whether lhs.size() == rhs.size() and each element in lhs compares equal with the element in rhs at the same position.
int_type pod_index_type
The plain old data index type.
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.
Factory and container for a family of id spaces.
index_space_handle(const index_space_handle &xother)
Copy constructor; disabled.