BVB Source Codes

mars Show fold_impl.hpp Source code

Return Download mars: download fold_impl.hpp Source code - Download mars Source code - Type:.hpp
  1.  
  2. // Copyright Aleksey Gurtovoy 2000-2004
  3. //
  4. // Distributed under the Boost Software License, Version 1.0.
  5. // (See accompanying file LICENSE_1_0.txt or copy at
  6. // http://www.boost.org/LICENSE_1_0.txt)
  7. //
  8.  
  9. // Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
  10. // -- DO NOT modify by hand!
  11.  
  12. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost { namespace mpl { namespace aux {
  13.  
  14. /// forward declaration
  15.  
  16. template<
  17.       int N
  18.     , typename First
  19.     , typename Last
  20.     , typename State
  21.     , typename ForwardOp
  22.     >
  23. struct fold_impl;
  24.  
  25. template<
  26.       typename First
  27.     , typename Last
  28.     , typename State
  29.     , typename ForwardOp
  30.     >
  31. struct fold_impl< 0,First,Last,State,ForwardOp >
  32. {
  33.     typedef First iter0;
  34.     typedef State state0;
  35.     typedef state0 state;
  36.     typedef iter0 iterator;
  37. };
  38.  
  39. template<
  40.       typename First
  41.     , typename Last
  42.     , typename State
  43.     , typename ForwardOp
  44.     >
  45. struct fold_impl< 1,First,Last,State,ForwardOp >
  46. {
  47.     typedef First iter0;
  48.     typedef State state0;
  49.     typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
  50.     typedef typename mpl::next<iter0>::type iter1;
  51.    
  52.  
  53.     typedef state1 state;
  54.     typedef iter1 iterator;
  55. };
  56.  
  57. template<
  58.       typename First
  59.     , typename Last
  60.     , typename State
  61.     , typename ForwardOp
  62.     >
  63. struct fold_impl< 2,First,Last,State,ForwardOp >
  64. {
  65.     typedef First iter0;
  66.     typedef State state0;
  67.     typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
  68.     typedef typename mpl::next<iter0>::type iter1;
  69.     typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
  70.     typedef typename mpl::next<iter1>::type iter2;
  71.    
  72.  
  73.     typedef state2 state;
  74.     typedef iter2 iterator;
  75. };
  76.  
  77. template<
  78.       typename First
  79.     , typename Last
  80.     , typename State
  81.     , typename ForwardOp
  82.     >
  83. struct fold_impl< 3,First,Last,State,ForwardOp >
  84. {
  85.     typedef First iter0;
  86.     typedef State state0;
  87.     typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
  88.     typedef typename mpl::next<iter0>::type iter1;
  89.     typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
  90.     typedef typename mpl::next<iter1>::type iter2;
  91.     typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
  92.     typedef typename mpl::next<iter2>::type iter3;
  93.    
  94.  
  95.     typedef state3 state;
  96.     typedef iter3 iterator;
  97. };
  98.  
  99. template<
  100.       typename First
  101.     , typename Last
  102.     , typename State
  103.     , typename ForwardOp
  104.     >
  105. struct fold_impl< 4,First,Last,State,ForwardOp >
  106. {
  107.     typedef First iter0;
  108.     typedef State state0;
  109.     typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
  110.     typedef typename mpl::next<iter0>::type iter1;
  111.     typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
  112.     typedef typename mpl::next<iter1>::type iter2;
  113.     typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
  114.     typedef typename mpl::next<iter2>::type iter3;
  115.     typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
  116.     typedef typename mpl::next<iter3>::type iter4;
  117.    
  118.  
  119.     typedef state4 state;
  120.     typedef iter4 iterator;
  121. };
  122.  
  123. template<
  124.       int N
  125.     , typename First
  126.     , typename Last
  127.     , typename State
  128.     , typename ForwardOp
  129.     >
  130. struct fold_impl
  131. {
  132.     typedef fold_impl<
  133.           4
  134.         , First
  135.         , Last
  136.         , State
  137.         , ForwardOp
  138.         > chunk_;
  139.  
  140.     typedef fold_impl<
  141.           ( (N - 4) < 0 ? 0 : N - 4 )
  142.         , typename chunk_::iterator
  143.         , Last
  144.         , typename chunk_::state
  145.         , ForwardOp
  146.         > res_;
  147.  
  148.     typedef typename res_::state state;
  149.     typedef typename res_::iterator iterator;
  150. };
  151.  
  152. template<
  153.       typename First
  154.     , typename Last
  155.     , typename State
  156.     , typename ForwardOp
  157.     >
  158. struct fold_impl< -1,First,Last,State,ForwardOp >
  159.     : fold_impl<
  160.           -1
  161.         , typename mpl::next<First>::type
  162.         , Last
  163.         , typename apply2<ForwardOp,State, typename deref<First>::type>::type
  164.         , ForwardOp
  165.         >
  166. {
  167. };
  168.  
  169. template<
  170.       typename Last
  171.     , typename State
  172.     , typename ForwardOp
  173.     >
  174. struct fold_impl< -1,Last,Last,State,ForwardOp >
  175. {
  176.     typedef State state;
  177.     typedef Last iterator;
  178. };
  179.  
  180. }}}
  181.  
downloadfold_impl.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