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

          Line data    Source code
       1             : //
       2             : // Author: Vladimir Migashko <migashko@gmail.com>, (C) 2012
       3             : //
       4             : // Copyright: See COPYING file that comes with this distribution
       5             : //
       6             : 
       7             : #ifndef VSET_VSET_BUFFER_BUFFER_BASE_HPP
       8             : #define VSET_VSET_BUFFER_BUFFER_BASE_HPP
       9             : 
      10             : #include <fas/aop.hpp>
      11             : #include <vset/buffer/tags.hpp>
      12             : namespace vset { namespace buffer{
      13             : 
      14             : template<typename A /*= fas::aspect<>*/ >
      15             : class buffer_base
      16             :   : public fas::aspect_class<A>
      17             : {
      18             :   typedef fas::aspect_class<A> super;
      19             : public:
      20             : 
      21             :   typedef typename super::aspect::template advice_cast<_size_type_>::type size_type;
      22             :   typedef typename super::aspect::template advice_cast<_data_type_>::type data_type;
      23             : 
      24           5 :   ~buffer_base()
      25             :   {
      26           5 :     _constructor(*this);
      27           5 :   }
      28             :   
      29           5 :   buffer_base()
      30           5 :   {
      31           5 :     _destructor(*this);
      32           5 :   }
      33             : 
      34             :   template<typename T>
      35           5 :   void _constructor(T& t)
      36             :   {
      37           5 :     t.get_aspect().template getg< _destructor_ >()(t);
      38           5 :   }
      39             : 
      40             :   template<typename T>
      41           5 :   void _destructor(T& t)
      42             :   {
      43           5 :     t.get_aspect().template getg< _destructor_ >()(t);
      44           5 :   }
      45             : 
      46             :   template<typename T>
      47         159 :   data_type _data(T& t)
      48             :   {
      49         159 :     return t.get_aspect().template get<_data_>()(t);
      50             :   }
      51             : 
      52             :   template<typename T>
      53             :   data_type _data(T& t) const
      54             :   {
      55             :     return t.get_aspect().template get<_data_>()(t);
      56             :   }
      57             : 
      58             :   template<typename T>
      59          24 :   size_type _size(T& t) const
      60             :   {
      61          24 :     return t.get_aspect().template get<_size_>()(t);
      62             :   }
      63             : 
      64             :   template<typename T>
      65          27 :   size_type _capacity(T& t) const
      66             :   {
      67          27 :     return t.get_aspect().template get<_capacity_>()(t);
      68             :   }
      69             : 
      70             :   template<typename T>
      71           6 :   void _resize(T& t, size_type size)
      72             :   {
      73           6 :     t.get_aspect().template get<_resize_>()(t, size);
      74           6 :   }
      75             : 
      76             :   template<typename T>
      77           5 :   void _truncate(T& t, size_type size)
      78             :   {
      79           5 :     t.get_aspect().template get<_truncate_>()(t, size);
      80           5 :   }
      81             : 
      82             :   
      83             :   template<typename T>
      84           6 :   void _reserve(T& t, size_type size)
      85             :   {
      86           6 :     t.get_aspect().template get<_reserve_>()(t, size);
      87           6 :   }
      88             : 
      89             :   template<typename T>
      90           3 :   void _clear(T& t)
      91             :   {
      92           3 :     t.get_aspect().template get<_clear_>()(t);
      93           3 :   }
      94             : };
      95             : 
      96             : }}
      97             : 
      98             : #endif

Generated by: LCOV version 1.10