CMS 3D CMS Logo

edm::TrieFactory< T > Class Template Reference

The goal of this class is to allocate Trie node by paquet of X element in order to reduce heap-admin size. More...

#include <DataFormats/Common/interface/Trie.h>

List of all members.

Public Member Functions

void clear ()
TrieNode< T > * newNode (const T &value)
 TrieFactory (unsigned paquetSize)
 ~TrieFactory ()

Private Member Functions

TrieFactoryoperator= (const TrieFactory &e)
 avoid affectation operator
 TrieFactory (const TrieFactory &e)
 avoid copy constructor
 TrieFactory ()
 avoid default constructor

Private Attributes

std::list< TrieNode< T > * > _allocatedNodes
TrieNode< T > * _lastNodes
unsigned _nbUsedInLastNodes
unsigned _paquetSize


Detailed Description

template<typename T>
class edm::TrieFactory< T >

The goal of this class is to allocate Trie node by paquet of X element in order to reduce heap-admin size.

Definition at line 41 of file Trie.h.


Constructor & Destructor Documentation

template<typename T>
edm::TrieFactory< T >::TrieFactory ( unsigned  paquetSize  )  [inline]

Definition at line 321 of file Trie.h.

References edm::TrieFactory< T >::_lastNodes.

00321                                                   :
00322   _paquetSize(paquetSize), _lastNodes(0x0), _nbUsedInLastNodes(0)
00323 {
00324   _lastNodes = new TrieNode<T>[paquetSize];
00325 }

template<typename T>
edm::TrieFactory< T >::~TrieFactory (  )  [inline]

Definition at line 328 of file Trie.h.

References edm::TrieFactory< T >::_allocatedNodes, edm::TrieFactory< T >::_lastNodes, and it.

00329 {
00330   typename std::list<TrieNode<T>*>::const_iterator it;
00331 
00332   for (it = _allocatedNodes.begin(); it != _allocatedNodes.end(); ++it)
00333     delete[] *it;
00334   if (_lastNodes)
00335     delete[] _lastNodes;
00336 }

template<typename T>
edm::TrieFactory< T >::TrieFactory (  )  [private]

avoid default constructor

template<typename T>
edm::TrieFactory< T >::TrieFactory ( const TrieFactory< T > &  e  )  [private]

avoid copy constructor


Member Function Documentation

template<typename T>
void edm::TrieFactory< T >::clear ( void   )  [inline]

Definition at line 355 of file Trie.h.

References edm::TrieFactory< T >::_allocatedNodes, edm::TrieFactory< T >::_nbUsedInLastNodes, and it.

00356 {
00357   typename std::list<TrieNode<T>*>::const_iterator it;
00358   for (it = _allocatedNodes.begin(); it != _allocatedNodes.end(); ++it)
00359     delete[] *it;
00360   _allocatedNodes.clear();
00361   _nbUsedInLastNodes = 0;
00362 }

template<typename T>
edm::TrieNode< T > * edm::TrieFactory< T >::newNode ( const T &  value  )  [inline]

Definition at line 339 of file Trie.h.

References edm::TrieFactory< T >::_allocatedNodes, edm::TrieFactory< T >::_lastNodes, edm::TrieFactory< T >::_nbUsedInLastNodes, edm::TrieFactory< T >::_paquetSize, edm::TrieNode< T >::clear(), res, and edm::TrieNode< T >::setValue().

00340 {
00341   if (_nbUsedInLastNodes == _paquetSize)
00342     {
00343       _allocatedNodes.push_back(_lastNodes);
00344       _nbUsedInLastNodes = 0;
00345       _lastNodes = new TrieNode<T>[_paquetSize];
00346     }
00347   TrieNode<T> *res = &_lastNodes[_nbUsedInLastNodes];
00348   ++_nbUsedInLastNodes;
00349   res->setValue(value);
00350   res->clear();
00351   return res;
00352 }

template<typename T>
TrieFactory& edm::TrieFactory< T >::operator= ( const TrieFactory< T > &  e  )  [private]

avoid affectation operator


Member Data Documentation

template<typename T>
std::list<TrieNode<T>*> edm::TrieFactory< T >::_allocatedNodes [private]

Definition at line 61 of file Trie.h.

Referenced by edm::TrieFactory< T >::clear(), edm::TrieFactory< T >::newNode(), and edm::TrieFactory< T >::~TrieFactory().

template<typename T>
TrieNode<T>* edm::TrieFactory< T >::_lastNodes [private]

Definition at line 62 of file Trie.h.

Referenced by edm::TrieFactory< T >::newNode(), edm::TrieFactory< T >::TrieFactory(), and edm::TrieFactory< T >::~TrieFactory().

template<typename T>
unsigned edm::TrieFactory< T >::_nbUsedInLastNodes [private]

Definition at line 63 of file Trie.h.

Referenced by edm::TrieFactory< T >::clear(), and edm::TrieFactory< T >::newNode().

template<typename T>
unsigned edm::TrieFactory< T >::_paquetSize [private]

Definition at line 60 of file Trie.h.

Referenced by edm::TrieFactory< T >::newNode().


The documentation for this class was generated from the following file:
Generated on Tue Jun 9 18:44:26 2009 for CMSSW by  doxygen 1.5.4