21 #ifndef NAME_MULTIMAP_H 22 #define NAME_MULTIMAP_H 24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 29 #include "SheafSystem/any.h" 33 #include "SheafSystem/block.h" 36 #ifndef STD_IOSTREAM_H 37 #include "SheafSystem/std_iostream.h" 41 #include "SheafSystem/std_list.h" 45 #include "SheafSystem/std_map.h" 49 #include "SheafSystem/std_string.h" 102 typedef std::map<index_type, name_list_type >::iterator
iterator;
132 std::string name(index_type xindex)
const;
137 std::string name(index_type xindex,
int xi)
const;
142 const name_list_type& all_names(index_type xindex)
const;
152 index_type index(
const std::string& xname)
const;
158 void put_entry(
const entry_type& xentry,
bool xunique);
164 void put_entry(index_type xindex,
const std::string& xname,
bool xunique);
169 bool contains_name(
const std::string& xname)
const;
174 bool contains_index(index_type xindex)
const;
179 bool contains_entry(
const entry_type& xentry)
const;
184 bool contains_entry(index_type xindex,
const std::string& xname)
const;
189 void delete_index(index_type xindex);
194 void delete_name(
const std::string& xname);
209 const_iterator begin()
const;
214 const_iterator end()
const;
231 void print(std::ostream& xos,
const name_multimap& xm)
const;
236 size_type name_ct(
const index_type& xindex)
const;
243 typedef std::map<std::string, index_type> name_to_index_map_type;
248 name_to_index_map_type _name_to_index_map;
253 typedef std::map< index_type, std::list<std::string> > index_to_name_map_type;
258 index_to_name_map_type _index_to_name_map;
280 virtual bool invariant()
const;
285 virtual bool is_ancestor_of(
const any* other)
const;
326 #endif // ifndef NAME_MULTIMAP_H name_list_type::iterator name_iterator
The iterator type for names.
pod_index_type index_type
The type of the index in the map.
name_list_type::const_iterator const_name_iterator
The const iterator type for names.
std::list< std::string > name_list_type
The type of name list for this map.
std::map< index_type, name_list_type >::iterator iterator
The iterator type for this map.
A partial multi-valued relation with total injective inverse between names and indices of type index_...
Abstract base class with useful features for all objects.
std::pair< index_type, std::string > entry_type
The type of an entry in the map.
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.
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.
std::map< index_type, name_list_type >::const_iterator const_iterator
The const iterator type for this map.