LCOV - code coverage report
Current view: top level - vset/comparators - offset_compare.hpp (source / functions) Hit Total Coverage
Test: v-set-coverage.info Lines: 10 10 100.0 %
Date: 2019-09-12 Functions: 3 3 100.0 %

          Line data    Source code
       1             : //
       2             : // Author: Vladimir Migashko <migashko@wamba.com>, (C) 2013
       3             : //
       4             : // Copyright: See COPYING file that comes with this distribution
       5             : //
       6             : 
       7             : #ifndef COMPARATORS_OFFSET_COMPARE_HPP
       8             : #define COMPARATORS_OFFSET_COMPARE_HPP
       9             : 
      10             : namespace vset{
      11             :   
      12             : /**
      13             :  * @brief Обертка компаратора для сравнения целочисленных смещений менеджера памяти
      14             :  * @tparam O смещение (обычно size_t, uint32_t или uint16_t)
      15             :  * @tparam M менеджер памяти (vset::memory::fsb_mmap, vset::memory::fsb_inmem)
      16             :  * @tparam C компаратор для исходных типов 
      17             :  */
      18             : template<typename O, typename M, typename C>
      19             : class offset_compare: C
      20             : {
      21             : public:
      22             :   typedef C super;
      23             :   typedef O offset_t;
      24             :   typedef M memory_manager_type;
      25             :   typedef typename memory_manager_type::pointer pointer_type;
      26             : 
      27             :   /**
      28             :     * @brief Конструктор создает неинициализированный объект, кторый нельзя использовать для сравнения
      29             :     */
      30           1 :   offset_compare()
      31             :     : lvp()
      32           1 :     , rvp()
      33             :   {
      34           1 :   }
      35             : 
      36             :   /**
      37             :     * @brief Конструктор 
      38             :     * @param ptr указатель на любой объект менеджера памяти, в том числе и, например, vset::memory::fsb_mmap::end()
      39             :     */
      40           1 :   explicit offset_compare( pointer_type ptr )
      41             :     : lvp(ptr)
      42           1 :     , rvp(ptr)
      43             :   {
      44           1 :   }
      45             : 
      46             :   /**
      47             :     * @brief Оператор сравнения
      48             :     * @param left значение для сравнения
      49             :     * @param right значение для сравнения
      50             :     */
      51         393 :   bool operator() ( offset_t left, offset_t right ) const
      52             :   {
      53         393 :     lvp.set_offset( left );
      54         393 :     rvp.set_offset( right );
      55         393 :     return super::operator()(*lvp, *rvp);
      56             :   }
      57             : 
      58             : private:
      59             : 
      60             :   mutable pointer_type lvp;
      61             :   mutable pointer_type rvp;
      62             : };
      63             : 
      64             : }
      65             : 
      66             : #endif

Generated by: LCOV version 1.10