11 #ifndef __UT_SymbolTable_h__
12 #define __UT_SymbolTable_h__
27 template <
typename ITEM_T>
50 (*this)[symbol] =
data;
57 if (it !=
myMap.end())
71 return myMap.find(symbol);
75 return myMap.find(symbol);
81 {
return myMap.count(symbol) > 0; }
84 {
return myMap.count(symbol); }
116 return myMap.find(symbol)->first.c_str();
140 return myMap[symbol];
145 return ((*
this)[name] = item);
153 {
myMap.rehash(size); }
157 {
return myMap.load_factor(); }
165 {
return myMap.max_load_factor(); }
167 {
myMap.max_load_factor(f); }
178 for (it = table.
map_begin(); it != last; ++it)
179 (*
this)[it->first] = it->second;
193 return it->first.c_str();
214 int64 mem = inclusive ?
sizeof(*this) : 0;
218 mem += it->first.getMemoryUsage(
false);
235 int (*
function)(ITEM_T &,
const char *,
void *),
240 if (!
function(const_cast<ITEM_T &>(it->second),
241 it->first.c_str(),
data))
248 int traverse(
int (*
function)(ITEM_T &,
const char *,
void *),
258 if (!
function(curr->second, curr->first.c_str(),
data))
268 template<
typename T,
typename IT>
270 public std::iterator<std::forward_iterator_tag, T>
282 template<
typename ET,
typename EIT>
284 : myIt(src.myIt), myEnd(src.myEnd) {}
293 {
return myIt->first; }
299 return myIt == cmp.myIt;
302 {
return !(*
this ==
cmp); }
306 return myIt == myEnd;
327 typedef base_iterator<ITEM_T, map_iterator>
iterator;
351 template<
typename OS,
typename T>
352 friend OS &operator<<(OS &os, const UT_SymbolMap<T> &d);
358 namespace UT_SymbolTableDetail
367 float min_load_factor,
368 float max_load_factor);
371 template <
typename T>
376 os,
size(), bucket_count(), capacity(),
377 getLoadFactor(), getMinLoadFactor(), getMaxLoadFactor());
380 template<
typename OS,
typename T>
382 operator<<(OS &os, const UT_SymbolMap<T> &d)
void adoptFromString(UT_String &str)
ITEM_T & operator[](const UT_StringHolder &symbol)
UT_IteratorRange< map_iterator > map_range()
ITEM_T & insert(const UT_StringHolder &name, const ITEM_T &item)
int64 getMemoryUsage(bool inclusive) const
void setMinLoadFactor(float)
UT_IteratorRange< IterT > UTmakeRange(IterT &&b, IterT &&e)
void setMaxLoadFactor(float f)
int64 getMemoryUsage(bool inclusive) const
Return an approximation of how much memory we use.
const_map_iterator find(const UT_StringRef &symbol) const
GLuint const GLchar * name
void outputStats(std::ostream &os) const
bool operator==(const base_iterator< T, IT > &cmp) const
base_iterator(const base_iterator< ET, EIT > &src)
int traverseConst(int(*function)(ITEM_T &, const char *, void *), void *data) const
MapType::const_iterator const_map_iterator
Parent::iterator iterator
base_iterator< const ITEM_T, const_map_iterator > const_iterator
IMATH_HOSTDEVICE constexpr int cmp(T a, T b) IMATH_NOEXCEPT
base_iterator< ITEM_T, map_iterator > iterator
const char * name() const
UT_StringHolder makeUniqueKey(const char *name) const
Returns a unique key based using the passed-in string as a prefix.
void reserveTableSize(exint size)
exint erase(const UT_StringRef &symbol)
~UT_SymbolMap()
Destructor.
iterator erase(const_iterator pos)
base_iterator & operator++()
map_iterator find(const UT_StringRef &symbol)
SYS_FORCE_INLINE const char * c_str() const
Iterator conforming to Houdini's atEnd(), advance() interface.
UT_StringMap< ITEM_T > MapType
bool contains(const UT_StringRef &symbol) const
Check if a symbol exists.
int traverse(int(*function)(ITEM_T &, const char *, void *), void *data)
exint count(const UT_StringRef &symbol) const
Find out how many times a symbol exists (this will be either 0 or 1).
Parent::const_iterator const_iterator
bool empty() const
Check if the map is empty.
map_iterator erase(const_map_iterator it)
void mergeTable(const UT_SymbolMap &table)
Merge the specified table with ourselves.
void incrementNumberedName(bool preserve_padding=false)
const_iterator end() const
UT_API void outputStats(std::ostream &os, exint size, exint bucket_count, exint capacity, float load_factor, float min_load_factor, float max_load_factor)
const_map_iterator map_begin() const
UT_SymbolMap()
Constructor.
const_map_iterator map_end() const
const_iterator begin() const
const UT_StringHolder & key() const
pointer operator->() const
SYS_FORCE_INLINE bool UTisstring(const char *s)
const char * addSymbolAndGetReference(const UT_StringHolder &symbol, const ITEM_T &data)
Add a symbol and return the string reference.
bool findSymbol(const UT_StringRef &symbol, ITEM_T *datap) const
bool operator!=(const base_iterator< T, IT > &cmp) const
UT_IteratorRange< const_map_iterator > map_range() const
bool deleteSymbol(const UT_StringRef &symbol)
Erase a symbol from the map.
const char * getStringReference(const UT_StringRef &symbol)
reference operator*() const
float getMaxLoadFactor() const
GLenum GLsizei GLenum GLenum const void * table
MapType::iterator map_iterator
float getLoadFactor() const
Get current load factor.
void addSymbol(const UT_StringHolder &symbol, const ITEM_T &data)
Add a symbol to the map.
exint bucket_count() const
float getMinLoadFactor() const