BVB Source Codes

mars Show next_capacity.hpp Source code

Return Download mars: download next_capacity.hpp Source code - Download mars Source code - Type:.hpp
  1. //////////////////////////////////////////////////////////////////////////////
  2. //
  3. // (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
  4. // Software License, Version 1.0. (See accompanying file
  5. // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. //
  7. // See http://www.boost.org/libs/container for documentation.
  8. //
  9. //////////////////////////////////////////////////////////////////////////////
  10. #ifndef BOOST_CONTAINER_DETAIL_NEXT_CAPACITY_HPP
  11. #define BOOST_CONTAINER_DETAIL_NEXT_CAPACITY_HPP
  12.  
  13. #ifndef BOOST_CONFIG_HPP
  14. #  include <boost/config.hpp>
  15. #endif
  16.  
  17. #if defined(BOOST_HAS_PRAGMA_ONCE)
  18. #  pragma once
  19. #endif
  20.  
  21. // container
  22. #include <boost/container/throw_exception.hpp>
  23. // container/detail
  24. #include <boost/container/detail/min_max.hpp>
  25.  
  26. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  27. namespace container {
  28. namespace container_detail {
  29.  
  30. enum NextCapacityOption { NextCapacityDouble, NextCapacity60Percent };
  31.  
  32. template<class SizeType, NextCapacityOption Option>
  33. struct next_capacity_calculator;
  34.  
  35. template<class SizeType>
  36. struct next_capacity_calculator<SizeType, NextCapacityDouble>
  37. {
  38.    static SizeType get(const SizeType max_size
  39.                       ,const SizeType capacity
  40.                       ,const SizeType n)
  41.    {
  42.       const SizeType remaining = max_size - capacity;
  43.       if ( remaining < n )
  44.          mars_boost::container::throw_length_error("get_next_capacity, allocator's max_size reached");
  45.       const SizeType additional = max_value(n, capacity);
  46.       return ( remaining < additional ) ? max_size : ( capacity + additional );
  47.    }
  48. };
  49.  
  50. template<class SizeType>
  51. struct next_capacity_calculator<SizeType, NextCapacity60Percent>
  52. {
  53.    static SizeType get(const SizeType max_size
  54.                      ,const SizeType capacity
  55.                      ,const SizeType n)
  56.    {
  57.       const SizeType remaining = max_size - capacity;
  58.       if ( remaining < n )
  59.          mars_boost::container::throw_length_error("get_next_capacity, allocator's max_size reached");
  60.       const SizeType m3 = max_size/3;
  61.  
  62.       if (capacity < m3)
  63.          return capacity + max_value(3*(capacity+1)/5, n);
  64.  
  65.       if (capacity < m3*2)
  66.          return capacity + max_value((capacity+1)/2, n);
  67.       return max_size;
  68.    }
  69. };
  70.  
  71. }  //namespace container_detail {
  72. }  //namespace container {
  73. }  //namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost {
  74.  
  75. #endif   //#ifndef BOOST_CONTAINER_DETAIL_NEXT_CAPACITY_HPP
  76.  
downloadnext_capacity.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top