LCOV - lcov.info - ept/popcon/popcon.cc

LTP GCOV extension - code coverage report
Current view: | directory - ept/popcon - popcon.cc
Test: | lcov.info
Date: | 2008-08-14 |  | Instrumented lines: | 23
Code covered: | 95.7 % |  | Executed lines: | 22

           1                 : // -*- mode: c++; tab-width: 4; indent-tabs-mode: t -*-
           2                 :
           3                 : /** @file
           4                 :  * @author Enrico Zini <enrico@enricozini.org>
           5                 :  * Quick map from package IDs to package names
           6                 :  */
           7                 :
           8                 : /*
           9                 :  * Copyright (C) 2007  Enrico Zini <enrico@debian.org>
          10                 :  *
          11                 :  * This program is free software; you can redistribute it and/or modify
          12                 :  * it under the terms of the GNU General Public License as published by
          13                 :  * the Free Software Foundation; either version 2 of the License, or
          14                 :  * (at your option) any later version.
          15                 :  *
          16                 :  * This program is distributed in the hope that it will be useful,
          17                 :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
          18                 :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
          19                 :  * GNU General Public License for more details.
          20                 :  *
          21                 :  * You should have received a copy of the GNU General Public License
          22                 :  * along with this program; if not, write to the Free Software
          23                 :  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
          24                 :  */
          25                 :
          26                 : #include <ept/popcon/popcon.h>
          27                 : #include <ept/popcon/maint/popconindexer.h>
          28                 : #include <ept/popcon/maint/path.h>
          29                 :
          30                 : //#include <iostream>
          31                 :
          32                 : using namespace std;
          33                 :
          34                 : namespace ept {
          35                 : namespace popcon {
          36                 :
          37               3 : size_t Popcon::GeneralInfo::submissions() const
          38                 : {
          39               3 :         if (!m_buf) return 0;
          40               2 :         return ((InfoStruct*)m_buf)->submissions;
          41                 : }
          42                 :
          43               7 : Popcon::Popcon()
          44                 : {
          45               7 :         std::string scofname, idxfname;
          46                 :
          47               7 :         if (!PopconIndexer::obtainWorkingPopcon(scofname, idxfname))
          48                 :         {
          49               1 :                 m_timestamp = 0;
          50               1 :                 return;
          51                 :         }
          52                 :
          53                 :         //cerr << "GOT " << scofname << " " << idxfname << endl;
          54                 :
          55               6 :         m_timestamp = Path::timestamp(idxfname);
          56                 :
          57               6 :         mastermmap.init(idxfname);
          58               6 :         tagcoll::diskindex::MMap::init(mastermmap, 0);
          59                 :
          60               6 :         m_info.init(mastermmap, 1);
          61                 :
          62                 :         //cerr << "SIZE " << size() << endl;
          63                 :         //for (size_t i = 0; i < size(); ++i)
          64                 :         //{
          65                 :         //      cerr << "EL " << i << ": " << ((Score*)m_buf)[i].offset << " " << ((Score*)m_buf)[i].score << endl;
          66                 :         //}
          67               0 : }
          68                 :
          69            1792 : float Popcon::scoreByName(const std::string& name) const
          70                 : {
          71                 :         // Binary search the index to find the package ID
          72                 :         int begin, end;
          73                 :
          74                 :         /* Binary search */
          75            1792 :         begin = -1, end = size();
          76           32470 :         while (end - begin > 1)
          77                 :         {
          78           28886 :                 int cur = (end + begin) / 2;
          79           28886 :                 if (this->name(cur) > name)
          80           14367 :                         end = cur;
          81                 :                 else
          82           14519 :                         begin = cur;
          83                 :         }
          84                 :
          85            1792 :         if (begin == -1 || this->name(begin) != name)
          86                 :                 //throw NotFoundException(string("looking for the ID of string ") + str);
          87              31 :                 return 0;
          88                 :         else
          89            1761 :                 return score(begin);
          90                 : }
          91                 :
          92                 : }
          93                 : }
          94                 :
          95                 : // vim:set ts=4 sw=4:

Generated by: LTP GCOV extension version 1.6