12 #ifndef __UN_DataIndexMap_h__
13 #define __UN_DataIndexMap_h__
33 std::pair< UN_DataID, UN_DataIndex > addEntry();
37 std::pair< UN_DataID, UN_DataIndex > findOrAddEntry(
UN_DataID data_id );
46 { clear( reset_next_id ); }
57 void clear(
bool reset_next_id =
false );
62 auto &map = myIndexFromID;
63 return data_id && map.find(data_id) != map.end();
78 auto it = myIndexFromID.find( data_id );
79 if( it == myIndexFromID.end() )
95 : myIter(
end ? map.myIndexFromID.cend()
96 : map.myIndexFromID.cbegin() )
113 {
return myIter == b.myIter; }
116 {
return myIter != b.myIter; }
119 {
return myIter->first; }
122 {
return myIter.atEnd(); }
141 , myCurrentID(
end ? map.idSize().exintValue() : 0 )
162 {
return myCurrentID == b.myCurrentID; }
165 {
return myCurrentID != b.myCurrentID; }
171 {
return myCurrentID >= myMap.idSize(); }
177 while( !atEnd() && !myMap.isValid(
UN_DataID(myCurrentID)) )
215 myIndexFromID.forEachKey([&](
const UN_DataID &key)
226 auto node_ids(
ids() );
239 {
return dataBufferSize(); }
244 {
return UN_DataSize( myNextDataID.exintValue() ); }
256 {
return UN_DataSize( myFreeDataIndices.size() ); }
264 - freeDataBufferSize().exintValue() );
278 bool combine_id_zero =
false );
283 bool combine_id_zero );
286 std::pair< UN_DataID, UN_DataIndex > addNewEntry(
UN_DataID data_id );
UN_DataSize size() const
Returns the number of valid data itmes in the map.
std::input_iterator_tag iterator_category
UN_DataSize indexSize() const
IDIterator & operator++()
IDIterator operator++(int)
Iterator for traversing valid data IDs in the map.
void removeAllEntries(bool reset_next_id)
std::input_iterator_tag iterator_category
bool operator==(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
UN_DataSize dataBufferSize() const
UN_DataSize usedDataBufferSize() const
UN_DataSize freeDataBufferSize() const
GLboolean GLboolean GLboolean b
Maintains a mapping from data ID to data index in the data buffer.
Iterator for traversing valid data IDs in the map in an ordered fashion.
OrderedIDRange orderedIDRange() const
OrderedIDIterator(const UN_DataIndexMap &map, bool end=false)
OrderedIDIterator & operator++()
IDIterator(const UN_DataIndexMap &map, bool end=false)
bool isValid(UN_DataID data_id) const
Returns true if the given ID refers to a valid entry in the map.
UN_DataSize idSize() const
UT_Array< UN_DataID > ids() const
bool operator!=(const BaseDimensions< T > &a, const BaseDimensions< Y > &b)
UN_DataIndex indexFromID(UN_DataID data_id) const
Returns an index into a data array buffer given the data ID.
value_type operator*() const
value_type operator*() const
UT_Array< UN_DataID > sortedIDs() const
typename set_type::const_iterator const_iterator
OrderedIDIterator operator++(int)