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

       1                 : //=============================================================================
       2                 : // File <$/src/cpp/prod/tool/Hash.cpp>
       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                 : #include <stdio.h>
      23                 : 
      24                 : #include "src/cpp/prod/tool/SList.h"
      25                 : #include "src/cpp/prod/tool/Hash.h"
      26                 : 
      27          150234 : VoidHash::VoidHash(HashFn hashFn, CmpFn cmpFn, int size)
      28             147 : : _size(size), _table(NULL), _hashFn(hashFn), _cmpFn(cmpFn)
      29                 : {
      30          150234 :    _table = new SList[_size] ;
      31                 : }
      32                 : 
      33               0 : VoidHash::~VoidHash()
      34                 : {
      35               0 :    delete [] _table ;
      36               0 : }
      37                 : 
      38               4 : void* VoidHash::FindByKey(const void* key)
      39                 : {
      40               4 :    int i = index(key) ;
      41               4 :    SListIterator it(_table[i]) ;
      42                 :    void *obj = NULL ;
      43                 : 
      44               8 :    while (it.GetNext())
      45                 :    {
      46               4 :       obj = it.GetItem() ;
      47                 : 
      48               4 :       if ((*_cmpFn)(obj, key))
      49                 :       {
      50                 :          return obj ;
      51                 :       }
      52                 :    }
      53                 : 
      54               0 :    return NULL ;
      55                 : }
      56                 : 
      57               0 : void* VoidHash::RemoveByKey(const void* key)
      58                 : {
      59               0 :    int i = index(key) ;
      60               0 :    SListIterator it(_table[i]) ;
      61                 :    void *obj = NULL ;
      62                 : 
      63               0 :    while (it.GetNext())
      64                 :    {
      65               0 :       obj = it.GetItem() ;
      66                 : 
      67               0 :       if ((*_cmpFn)(obj, key))
      68                 :       {
      69               0 :          _table[i].removeObject(obj) ;
      70                 :          return obj ;
      71                 :       }
      72                 :    }
      73                 : 
      74               0 :    return NULL ;
      75                 : }
      76                 : 
      77              24 : void VoidHash::Insert(void *obj, const void* key)
      78                 : {
      79              24 :    int i = index(key) ;
      80              24 :    _table[i].addTail(obj) ;
      81                 : }
      82                 : 
      83              28 : int VoidHash::index(const void* key)
      84                 : {
      85              28 :    int i = (*_hashFn)(key) ;
      86                 :    i = i % _size ;
      87                 :    return i ;
      88                 : }
      89                 : 

Generated by: LTP GCOV extension version 1.4