Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:39

0001 #pragma once
0002 
0003 /**
0004 SLabelCache.hh
0005 ===============
0006 
0007 Used from X4::MakeSurfaceIndexCache to 
0008 create cache of surface void* pointers and 
0009 an integer index. 
0010 
0011 **/
0012 
0013 #include "SYSRAP_API_EXPORT.hh"
0014 #include <unordered_map>
0015 
0016 template <typename T>
0017 struct SYSRAP_API SLabelCache
0018 {
0019     typedef std::unordered_map<const void*, T>  MVT ; 
0020 
0021     T missing ; 
0022     MVT cache ; 
0023 
0024     SLabelCache( T missing );
0025 
0026     void add(const void* obj, T label); 
0027     T find(const void* obj) ; 
0028 }; 
0029 
0030 
0031 template <typename T>
0032 SLabelCache<T>::SLabelCache(T missing_) : missing(missing_) {}
0033 
0034 template <typename T>
0035 inline void SLabelCache<T>::add(const void* obj, T label)
0036 {
0037     cache[obj] = label ; 
0038 }
0039 
0040 /**
0041 SLabelCache::find
0042 -------------------
0043 
0044 Returns the label associated with the obj by SLabelCache::add 
0045 
0046 **/
0047 
0048 template <typename T>
0049 inline T SLabelCache<T>::find(const void* obj)
0050 {
0051     typename MVT::const_iterator en = cache.end();  
0052     typename MVT::const_iterator it = cache.find( obj );
0053     return it == en ? missing : it->second ; 
0054 }
0055 
0056