Main Page | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members

TrieDBCache.hpp

Go to the documentation of this file.
00001 #ifndef TrieDBCache_HPP
00002 #define TrieDBCache_HPP
00003 
00004 #include "common.hpp"
00005 #include "datastructures/trie/TrieBase.hpp"
00006 #include <vector>
00007 //#include <fstream>
00008 
00009    template <class T_R, class EDGELIST>
00010    class TrieDBCache : public T_R, public TrieBase<EDGELIST, counter_t>
00011    {
00012       public:
00013          typedef typename T_R::params_t params_t;
00014 
00015          TrieDBCache( const params_t* par );
00016          
00017          template <class BIS> counter_t nextTransactionBIS( 
00018             BIS& transaction );
00019 
00020          void rewind()
00021          {
00022             it = TRIE::begin();
00023          }
00024 
00025 
00026       protected:
00027          typedef TrieBase<EDGELIST, counter_t> TRIE;
00028          typename TRIE::iterator it;
00029    };
00030 
00031    template <class T_R, class EDGELIST> inline TrieDBCache<T_R, EDGELIST>::
00032    TrieDBCache(const params_t* par) : T_R(par), TrieBase<EDGELIST, counter_t>()
00033    {
00034       std::vector<item_t> transaction;
00035       register counter_t multiplicity;
00036       T_R::rewind();
00037       while( (multiplicity = T_R::nextTransactionBIS(
00038                  transaction)) != 0 )
00039          if(transaction.size() > 1) 
00040             TRIE::addItemset( transaction, transaction.begin() ).getData() 
00041                += multiplicity;
00042    }
00043 
00044    template <class T_R, class EDGELIST> template <class BIS> inline 
00045    counter_t TrieDBCache<T_R, EDGELIST>::nextTransactionBIS( BIS& transaction )
00046    {
00047       std::pair<BIS, counter_t> temp_pair;
00048       while(it != TRIE::end() )
00049       {
00050          temp_pair = *it;
00051          ++it;
00052          if(temp_pair.second != 0)
00053          {
00054             transaction = temp_pair.first;
00055             return temp_pair.second;
00056          }
00057       }
00058       return 0;
00059 
00060    }
00061 #endif

Generated on Sun Sep 17 17:50:40 2006 for FIM environment by  doxygen 1.4.4