LTP GCOV extension - code coverage report
Current view: directory - ept/core/apt - version.h
Test: lcov.info
Date: 2008-08-14 Instrumented lines: 32
Code covered: 93.8 % Executed lines: 30

       1                 : // -*- C++ -*-
       2                 : #ifndef EPT_CORE_APT_VERSION_H
       3                 : #define EPT_CORE_APT_VERSION_H
       4                 : 
       5                 : namespace ept {
       6                 : namespace core {
       7                 : namespace version {
       8                 : 
       9            3616 : struct InternalList {
      10                 :     package::Internal m_pkg;
      11                 :     Internal m_ver;
      12                 : 
      13                 :     typedef Internal Type;
      14                 : 
      15            3616 :     InternalList tail() const {
      16            3616 :         InternalList t = *this;
      17            3616 :         t.m_ver ++;
      18            3616 :         t.seek();
      19                 :         return t;
      20                 :     }
      21                 : 
      22            5424 :     const Internal head() const {
      23            5424 :         return m_ver;
      24                 :     }
      25                 : 
      26                 :     Internal head() {
      27                 :         return m_ver;
      28                 :     }
      29                 : 
      30            3618 :     bool empty() const {
      31            3618 :         return m_pkg.end();
      32                 :     }
      33                 : 
      34            3618 :     void seek()
      35                 :     {
      36           14790 :         while ( m_ver.end() && !m_pkg.end() ) {
      37            7554 :             m_pkg ++;
      38            7554 :             m_ver = m_pkg.VersionList();
      39                 :         }
      40            3618 :     }
      41                 : 
      42               2 :     InternalList( package::Internal i )
      43               2 :         : m_pkg( i )
      44                 :     {
      45               2 :         m_ver = m_pkg.VersionList();
      46               2 :         seek();
      47               2 :     }
      48                 : };
      49                 : 
      50                 : struct Setup {
      51                 :     typedef ept::Token Token;
      52                 :     typedef version::Internal Internal;
      53                 :     typedef version::PropertyId PropertyId;
      54                 :     typedef version::InternalList InternalList;
      55                 : };
      56                 : 
      57                 : struct Source : core::Source< Source, Setup, PropertyType >
      58              12 : {
      59                 :     AptDatabase &m_db;
      60              12 :     Source( AptDatabase &db ) : m_db( db ) {}
      61                 : 
      62               2 :     InternalList listInternal() {
      63               2 :         return InternalList( m_db.cache().PkgBegin() );
      64                 :     }
      65                 : 
      66            1808 :     Token getToken( Internal i ) {
      67            1808 :         Token t;
      68            1808 :         t._id = std::string( i.ParentPkg().Name() ) + "_" + i.VerStr();
      69               0 :         return t;
      70                 :     }
      71                 : 
      72                 :     Internal lookupToken( Token t ) {
      73                 :         return m_db.lookupVersion( t );
      74                 :     }
      75                 : 
      76                 :     template< PropertyId p >
      77                 :     typename PropertyType< p >::T getInternal( Internal );
      78                 : };
      79                 : 
      80                 : template<> struct PropertyType< Package > { typedef Token T; };
      81                 : 
      82            3616 : template<> inline Token Source::getInternal< Package >( Internal i ) {
      83            3616 :     assert( !i.end() );
      84            3616 :     Token t;
      85            7232 :     t._id = i.ParentPkg().Name();
      86               0 :     return t;
      87                 : }
      88                 : 
      89                 : }
      90                 : }
      91                 : }
      92                 : 
      93                 : #endif

Generated by: LTP GCOV extension version 1.6