LTP GCOV extension - code coverage report
Current view: directory - src/cpp/prod/tool - Hash.h
Test: YAORB-0.2.info
Date: 2006-02-27 Instrumented lines: 5
Code covered: 60.0 % Executed lines: 3

       1                 : //=============================================================================
       2                 : // File <$/src/cpp/prod/tool/Hash.h>
       3                 : // This file is part of YaOrb : Yet Another Object Request Broker,
       4                 : // Copyright (c) 2000-2003, Marc Alff.
       5                 : //
       6                 : // This program is free software; you can redistribute it and/or
       7                 : // modify it under the terms of the GNU General Public License
       8                 : // as published by the Free Software Foundation; either version 2
       9                 : // of the License, or (at your option) any later version.
      10                 : //
      11                 : // This program is distributed in the hope that it will be useful,
      12                 : // but WITHOUT ANY WARRANTY; without even the implied warranty of
      13                 : // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14                 : // GNU General Public License for more details.
      15                 : //
      16                 : // You should have received a copy of the GNU General Public License
      17                 : // along with this program; if not, write to the Free Software
      18                 : // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
      19                 : //
      20                 : //=============================================================================
      21                 : 
      22                 : #ifndef HASH_H
      23                 : #define HASH_H
      24                 : 
      25                 : class SList ;
      26                 : 
      27                 : class VoidHash
      28                 : {
      29                 :    public :
      30                 :       typedef int (*HashFn)(const void* key) ;
      31                 :       typedef bool (*CmpFn)(const void* obj, const void* key) ;
      32                 : 
      33                 :       VoidHash(HashFn hashFn, CmpFn cmpFn, int size) ;
      34                 :       ~VoidHash() ;
      35                 : 
      36                 :       void* FindByKey(const void* key) ;
      37                 :       void* RemoveByKey(const void* key) ;
      38                 :       void  Insert(void *obj, const void* key) ;
      39                 : 
      40                 :    private :
      41                 :       int index(const void* key) ;
      42                 : 
      43                 :       int _size ;
      44                 :       SList* _table ;
      45                 :       HashFn _hashFn ;
      46                 :       CmpFn  _cmpFn ;
      47                 : 
      48                 :    private :
      49                 :       VoidHash(const VoidHash& ) ;
      50                 :       VoidHash& operator=(const VoidHash& ) ;
      51                 : } ;
      52                 : 
      53                 : template <class T, class K> class THash
      54                 : {
      55                 :    public :
      56                 :       typedef int (*HashFn)(const K* key) ;
      57                 :       typedef bool (*CmpFn)(const T* obj, const K* key) ;
      58                 : 
      59                 :    private :
      60                 :       VoidHash _h ;
      61                 : 
      62                 :    public :
      63                 :       THash(HashFn hashFn, CmpFn cmpFn, int size)
      64             147 :       : _h( (VoidHash::HashFn) hashFn, (VoidHash::CmpFn) cmpFn, size)
      65                 :       {}
      66                 : 
      67               0 :       virtual ~THash()
      68               0 :       {}
      69                 : 
      70                 :    public :
      71                 :       T* FindByKey(const K* key)
      72               4 :       { return (T*) _h.FindByKey(key) ; }
      73                 : 
      74                 :       T* RemoveByKey(const K* key)
      75                 :       { return (T*) _h.RemoveByKey(key) ; }
      76                 : 
      77                 :       void Insert(T *obj, const K* key)
      78              24 :       { _h.Insert(obj, key) ; }
      79                 : 
      80                 :    private :
      81                 :       THash(const THash<T,K> &) ;
      82                 :       THash& operator=(const THash<T,K> &) ;
      83                 : } ;
      84                 : 
      85                 : #endif
      86                 : 

Generated by: LTP GCOV extension version 1.4