LCOV - code coverage report
Current view: top level - vset/buffer/inmem - ad_truncate.hpp (source / functions) Hit Total Coverage
Test: v-set-coverage.info Lines: 7 10 70.0 %
Date: 2019-09-12 Functions: 2 2 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_INMEM_AD_TRUNCATE_HPP
       8             : #define VSET_VSET_BUFFER_INMEM_AD_TRUNCATE_HPP
       9             : 
      10             : #include <vset/buffer/tags.hpp>
      11             : #include <vset/buffer/inmem/tags.hpp>
      12             : 
      13             : namespace vset { namespace buffer { namespace inmem{
      14             : 
      15          24 : struct ad_truncate
      16             : {
      17             :   template<typename T>
      18           1 :   void operator()( T& t, typename T::aspect::template advice_cast<_size_type_>::type size )
      19             :   {
      20           1 :     if ( size >  t.get_aspect().template get<_container_>().size() )
      21           0 :       t.get_aspect().template get<_container_>().reserve(size);
      22           1 :     else if ( size <  t.get_aspect().template get<_container_>().size() )
      23             :     {
      24             :       typedef typename T::aspect::template advice_cast<_container_>::type container;
      25           2 :       container(
      26             :         t.get_aspect().template get<_container_>().begin(),
      27           1 :         t.get_aspect().template get<_container_>().begin() + static_cast<std::ptrdiff_t>(size)
      28             :       ).swap( t.get_aspect().template get<_container_>() );
      29             :       
      30             :     }
      31           0 :     else if ( size <  t.get_aspect().template get<_container_>().capacity() )
      32             :     {
      33             :       typedef typename T::aspect::template advice_cast<_container_>::type container;
      34           0 :       container(
      35             :         t.get_aspect().template get<_container_>().begin(),
      36             :         t.get_aspect().template get<_container_>().end()
      37             :       ).swap( t.get_aspect().template get<_container_>() );
      38             :     }
      39           1 :   }
      40             : };
      41             : 
      42             : }}}
      43             : 
      44             : #endif

Generated by: LCOV version 1.10