21 #ifndef IMPLICIT_ENTRY_MAP_H 22 #define IMPLICIT_ENTRY_MAP_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" 36 #ifndef STD_UNORDERED_MAP_H 37 #include "SheafSystem/std_unordered_map.h" 41 #include "SheafSystem/std_map.h" 48 template <
typename T>
class rc_ptr;
58 template <
typename E,
typename I>
65 template <
typename E,
typename I>
116 bool contains_explicit_entry(pod_type xid)
const;
121 bool contains_implicit_entry(pod_type xid)
const;
127 bool contains_entry(pod_type xid)
const;
134 E& value(pod_type xid)
const;
142 E& operator [] (pod_type xid)
const;
147 void insert_explicit_entry(pod_type xid, E& xvalue);
152 void insert_implicit_interval(I& xinterval);
157 void remove_explicit_entry(pod_type xid);
162 void remove_implicit_interval(pod_type xid);
168 void remove_entry(pod_type xid,
bool xremove_interval);
178 pod_type begin()
const;
183 pod_type end()
const;
195 static const explicit_value_type& null_explicit_value();
200 static const interval_type& null_interval();
205 const explicit_value_type& explicit_value(pod_type xid)
const;
210 const interval_type& implicit_interval(pod_type xid)
const;
218 void update_extrema_for_insert(pod_type xbegin, pod_type xend);
224 void update_extrema_for_remove(pod_type xbegin, pod_type xend);
229 typedef unordered::unordered_map<pod_type, explicit_value_type*> explicit_value_map_type;
234 explicit_value_map_type _explicit_value_map;
239 typedef map<pod_type, interval_type*> interval_map_type;
244 interval_map_type _interval_map;
274 virtual bool is_ancestor_of(
const any* other)
const;
285 virtual bool invariant()
const;
303 #endif // IMPLICIT_ENTRY_MAP_H rc_ptr< E > explicit_value_type
The type of an explicit value.
Abstract base class with useful features for all objects.
A map in which the entries may be implicit.
An iterator over the entries in an implicit_entry_map. This iteration is NOT order preserving...
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.
int_type pod_index_type
The plain old data index type.
Namespace for the sheaves component of the sheaf system.
Factory and container for a family of id spaces.
implicit_entry_map_iterator< E, I > iterator_type
The type of iterator for this map.
rc_ptr< I > interval_type
The type of an interval.
pod_index_type pod_type
The "plain old data" index type for this.
Reference-counted pointer to object of type T. T must be an implementation of concept class rc_any...