75 template<
class VALTYPE>
85 inline VALTYPE&
GetCache(
unsigned int id)
const;
102 template<
class VALTYPE>
109 inline VALTYPE*&
GetCache(
unsigned int id)
const;
144 cout<<
"Generic template"<<endl;
149 if ( cache->size() <= id )
150 cache->resize(
id+1,static_cast<V*>(0));
151 if ( (*cache)[
id] == 0 ) (*cache)[id]=
new V;
160 cout<<
"Destroying element"<<
id<<
" is last?"<<last<<endl;
162 if ( cache->size() <
id && (*cache)[id] ) {
176 return *(cache->operator[](id));
188 cout<<
"Pointer template"<<endl;
191 cache =
new cache_container;
192 if ( cache->size() <= id )
193 cache->resize(
id+1,static_cast<V*>(0));
203 cout<<
"Destroying element"<<
id<<
" is last?"<<last<<
"-Pointer template specialization-"<<endl;
205 if ( cache->size() <
id && (*cache)[id] ) {
220 return (cache->operator[](
id));
230 cout<<
"Specialized template for G4double"<<endl;
234 if (
cache->size() <= id )
235 cache->resize(
id+1,static_cast<G4double>(0));
239 if (
cache && last ) {
241 cout<<
"Destroying element"<<
id<<
" is last?"<<last<<
"-Pointer template specialization-"<<endl;
249 return cache->operator[](id);
std::vector< VALTYPE * > cache_container
void Initialize(unsigned int id)
static G4ThreadLocal cache_container * cache
std::vector< VALTYPE * > cache_container
static G4ThreadLocal cache_container * cache
std::vector< G4double > cache_container
static G4GLOB_DLL G4ThreadLocal std::vector< G4double > * cache
VALTYPE & GetCache(unsigned int id) const
void Destroy(unsigned int id, G4bool last)