BVB Source Codes

mars Show full_lambda.hpp Source code

Return Download mars: download full_lambda.hpp Source code - Download mars Source code - Type:.hpp
  1.  
  2. // Copyright Aleksey Gurtovoy 2001-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_/full_lambda.hpp" header
  10. // -- DO NOT modify by hand!
  11.  
  12. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost { namespace mpl {
  13.  
  14. namespace aux {
  15.  
  16. template<
  17.       bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
  18.     , bool C5 = false
  19.     >
  20. struct lambda_or
  21.     : true_
  22. {
  23. };
  24.  
  25. template<>
  26. struct lambda_or< false,false,false,false,false >
  27.     : false_
  28. {
  29. };
  30.  
  31. } // namespace aux
  32.  
  33. template<
  34.       typename T
  35.     , typename Tag
  36.    
  37.     >
  38. struct lambda
  39. {
  40.     typedef false_ is_le;
  41.     typedef T result_;
  42.     typedef T type;
  43. };
  44.  
  45. template<
  46.       typename T
  47.     >
  48. struct is_lambda_expression
  49.     : lambda<T>::is_le
  50. {
  51. };
  52.  
  53. template< int N, typename Tag >
  54. struct lambda< arg<N>, Tag >
  55. {
  56.     typedef true_ is_le;
  57.     typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
  58.     typedef mpl::protect<result_> type;
  59. };
  60.  
  61. template<
  62.       typename F
  63.     , typename Tag
  64.     >
  65. struct lambda<
  66.           bind0<F>
  67.         , Tag
  68.        
  69.         >
  70. {
  71.     typedef false_ is_le;
  72.     typedef bind0<
  73.           F
  74.         > result_;
  75.  
  76.     typedef result_ type;
  77. };
  78.  
  79. namespace aux {
  80.  
  81. template<
  82.       typename IsLE, typename Tag
  83.     , template< typename P1 > class F
  84.     , typename L1
  85.     >
  86. struct le_result1
  87. {
  88.     typedef F<
  89.           typename L1::type
  90.         > result_;
  91.  
  92.     typedef result_ type;
  93. };
  94.  
  95. template<
  96.       typename Tag
  97.     , template< typename P1 > class F
  98.     , typename L1
  99.     >
  100. struct le_result1< true_,Tag,F,L1 >
  101. {
  102.     typedef bind1<
  103.           quote1< F,Tag >
  104.         , typename L1::result_
  105.         > result_;
  106.  
  107.     typedef mpl::protect<result_> type;
  108. };
  109.  
  110. } // namespace aux
  111.  
  112. template<
  113.       template< typename P1 > class F
  114.     , typename T1
  115.     , typename Tag
  116.     >
  117. struct lambda<
  118.           F<T1>
  119.         , Tag
  120.        
  121.         >
  122. {
  123.     typedef lambda< T1,Tag > l1;
  124.     typedef typename l1::is_le is_le1;
  125.     typedef typename aux::lambda_or<
  126.           is_le1::value
  127.         >::type is_le;
  128.  
  129.     typedef aux::le_result1<
  130.           is_le, Tag, F, l1
  131.         > le_result_;
  132.  
  133.     typedef typename le_result_::result_ result_;
  134.     typedef typename le_result_::type type;
  135. };
  136.  
  137. template<
  138.       typename F, typename T1
  139.     , typename Tag
  140.     >
  141. struct lambda<
  142.           bind1< F,T1 >
  143.         , Tag
  144.        
  145.         >
  146. {
  147.     typedef false_ is_le;
  148.     typedef bind1<
  149.           F
  150.         , T1
  151.         > result_;
  152.  
  153.     typedef result_ type;
  154. };
  155.  
  156. namespace aux {
  157.  
  158. template<
  159.       typename IsLE, typename Tag
  160.     , template< typename P1, typename P2 > class F
  161.     , typename L1, typename L2
  162.     >
  163. struct le_result2
  164. {
  165.     typedef F<
  166.           typename L1::type, typename L2::type
  167.         > result_;
  168.  
  169.     typedef result_ type;
  170. };
  171.  
  172. template<
  173.       typename Tag
  174.     , template< typename P1, typename P2 > class F
  175.     , typename L1, typename L2
  176.     >
  177. struct le_result2< true_,Tag,F,L1,L2 >
  178. {
  179.     typedef bind2<
  180.           quote2< F,Tag >
  181.         , typename L1::result_, typename L2::result_
  182.         > result_;
  183.  
  184.     typedef mpl::protect<result_> type;
  185. };
  186.  
  187. } // namespace aux
  188.  
  189. template<
  190.       template< typename P1, typename P2 > class F
  191.     , typename T1, typename T2
  192.     , typename Tag
  193.     >
  194. struct lambda<
  195.           F< T1,T2 >
  196.         , Tag
  197.        
  198.         >
  199. {
  200.     typedef lambda< T1,Tag > l1;
  201.     typedef lambda< T2,Tag > l2;
  202.    
  203.     typedef typename l1::is_le is_le1;
  204.     typedef typename l2::is_le is_le2;
  205.    
  206.  
  207.     typedef typename aux::lambda_or<
  208.           is_le1::value, is_le2::value
  209.         >::type is_le;
  210.  
  211.     typedef aux::le_result2<
  212.           is_le, Tag, F, l1, l2
  213.         > le_result_;
  214.  
  215.     typedef typename le_result_::result_ result_;
  216.     typedef typename le_result_::type type;
  217. };
  218.  
  219. template<
  220.       typename F, typename T1, typename T2
  221.     , typename Tag
  222.     >
  223. struct lambda<
  224.           bind2< F,T1,T2 >
  225.         , Tag
  226.        
  227.         >
  228. {
  229.     typedef false_ is_le;
  230.     typedef bind2<
  231.           F
  232.         , T1, T2
  233.         > result_;
  234.  
  235.     typedef result_ type;
  236. };
  237.  
  238. namespace aux {
  239.  
  240. template<
  241.       typename IsLE, typename Tag
  242.     , template< typename P1, typename P2, typename P3 > class F
  243.     , typename L1, typename L2, typename L3
  244.     >
  245. struct le_result3
  246. {
  247.     typedef F<
  248.           typename L1::type, typename L2::type, typename L3::type
  249.         > result_;
  250.  
  251.     typedef result_ type;
  252. };
  253.  
  254. template<
  255.       typename Tag
  256.     , template< typename P1, typename P2, typename P3 > class F
  257.     , typename L1, typename L2, typename L3
  258.     >
  259. struct le_result3< true_,Tag,F,L1,L2,L3 >
  260. {
  261.     typedef bind3<
  262.           quote3< F,Tag >
  263.         , typename L1::result_, typename L2::result_, typename L3::result_
  264.         > result_;
  265.  
  266.     typedef mpl::protect<result_> type;
  267. };
  268.  
  269. } // namespace aux
  270.  
  271. template<
  272.       template< typename P1, typename P2, typename P3 > class F
  273.     , typename T1, typename T2, typename T3
  274.     , typename Tag
  275.     >
  276. struct lambda<
  277.           F< T1,T2,T3 >
  278.         , Tag
  279.        
  280.         >
  281. {
  282.     typedef lambda< T1,Tag > l1;
  283.     typedef lambda< T2,Tag > l2;
  284.     typedef lambda< T3,Tag > l3;
  285.    
  286.     typedef typename l1::is_le is_le1;
  287.     typedef typename l2::is_le is_le2;
  288.     typedef typename l3::is_le is_le3;
  289.    
  290.  
  291.     typedef typename aux::lambda_or<
  292.           is_le1::value, is_le2::value, is_le3::value
  293.         >::type is_le;
  294.  
  295.     typedef aux::le_result3<
  296.           is_le, Tag, F, l1, l2, l3
  297.         > le_result_;
  298.  
  299.     typedef typename le_result_::result_ result_;
  300.     typedef typename le_result_::type type;
  301. };
  302.  
  303. template<
  304.       typename F, typename T1, typename T2, typename T3
  305.     , typename Tag
  306.     >
  307. struct lambda<
  308.           bind3< F,T1,T2,T3 >
  309.         , Tag
  310.        
  311.         >
  312. {
  313.     typedef false_ is_le;
  314.     typedef bind3<
  315.           F
  316.         , T1, T2, T3
  317.         > result_;
  318.  
  319.     typedef result_ type;
  320. };
  321.  
  322. namespace aux {
  323.  
  324. template<
  325.       typename IsLE, typename Tag
  326.     , template< typename P1, typename P2, typename P3, typename P4 > class F
  327.     , typename L1, typename L2, typename L3, typename L4
  328.     >
  329. struct le_result4
  330. {
  331.     typedef F<
  332.           typename L1::type, typename L2::type, typename L3::type
  333.         , typename L4::type
  334.         > result_;
  335.  
  336.     typedef result_ type;
  337. };
  338.  
  339. template<
  340.       typename Tag
  341.     , template< typename P1, typename P2, typename P3, typename P4 > class F
  342.     , typename L1, typename L2, typename L3, typename L4
  343.     >
  344. struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
  345. {
  346.     typedef bind4<
  347.           quote4< F,Tag >
  348.         , typename L1::result_, typename L2::result_, typename L3::result_
  349.         , typename L4::result_
  350.         > result_;
  351.  
  352.     typedef mpl::protect<result_> type;
  353. };
  354.  
  355. } // namespace aux
  356.  
  357. template<
  358.       template< typename P1, typename P2, typename P3, typename P4 > class F
  359.     , typename T1, typename T2, typename T3, typename T4
  360.     , typename Tag
  361.     >
  362. struct lambda<
  363.           F< T1,T2,T3,T4 >
  364.         , Tag
  365.        
  366.         >
  367. {
  368.     typedef lambda< T1,Tag > l1;
  369.     typedef lambda< T2,Tag > l2;
  370.     typedef lambda< T3,Tag > l3;
  371.     typedef lambda< T4,Tag > l4;
  372.    
  373.     typedef typename l1::is_le is_le1;
  374.     typedef typename l2::is_le is_le2;
  375.     typedef typename l3::is_le is_le3;
  376.     typedef typename l4::is_le is_le4;
  377.    
  378.  
  379.     typedef typename aux::lambda_or<
  380.           is_le1::value, is_le2::value, is_le3::value, is_le4::value
  381.         >::type is_le;
  382.  
  383.     typedef aux::le_result4<
  384.           is_le, Tag, F, l1, l2, l3, l4
  385.         > le_result_;
  386.  
  387.     typedef typename le_result_::result_ result_;
  388.     typedef typename le_result_::type type;
  389. };
  390.  
  391. template<
  392.       typename F, typename T1, typename T2, typename T3, typename T4
  393.     , typename Tag
  394.     >
  395. struct lambda<
  396.           bind4< F,T1,T2,T3,T4 >
  397.         , Tag
  398.        
  399.         >
  400. {
  401.     typedef false_ is_le;
  402.     typedef bind4<
  403.           F
  404.         , T1, T2, T3, T4
  405.         > result_;
  406.  
  407.     typedef result_ type;
  408. };
  409.  
  410. namespace aux {
  411.  
  412. template<
  413.       typename IsLE, typename Tag
  414.     , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
  415.     , typename L1, typename L2, typename L3, typename L4, typename L5
  416.     >
  417. struct le_result5
  418. {
  419.     typedef F<
  420.           typename L1::type, typename L2::type, typename L3::type
  421.         , typename L4::type, typename L5::type
  422.         > result_;
  423.  
  424.     typedef result_ type;
  425. };
  426.  
  427. template<
  428.       typename Tag
  429.     , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
  430.     , typename L1, typename L2, typename L3, typename L4, typename L5
  431.     >
  432. struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
  433. {
  434.     typedef bind5<
  435.           quote5< F,Tag >
  436.         , typename L1::result_, typename L2::result_, typename L3::result_
  437.         , typename L4::result_, typename L5::result_
  438.         > result_;
  439.  
  440.     typedef mpl::protect<result_> type;
  441. };
  442.  
  443. } // namespace aux
  444.  
  445. template<
  446.       template<
  447.           typename P1, typename P2, typename P3, typename P4
  448.         , typename P5
  449.         >
  450.       class F
  451.     , typename T1, typename T2, typename T3, typename T4, typename T5
  452.     , typename Tag
  453.     >
  454. struct lambda<
  455.           F< T1,T2,T3,T4,T5 >
  456.         , Tag
  457.        
  458.         >
  459. {
  460.     typedef lambda< T1,Tag > l1;
  461.     typedef lambda< T2,Tag > l2;
  462.     typedef lambda< T3,Tag > l3;
  463.     typedef lambda< T4,Tag > l4;
  464.     typedef lambda< T5,Tag > l5;
  465.    
  466.     typedef typename l1::is_le is_le1;
  467.     typedef typename l2::is_le is_le2;
  468.     typedef typename l3::is_le is_le3;
  469.     typedef typename l4::is_le is_le4;
  470.     typedef typename l5::is_le is_le5;
  471.    
  472.  
  473.     typedef typename aux::lambda_or<
  474.           is_le1::value, is_le2::value, is_le3::value, is_le4::value
  475.         , is_le5::value
  476.         >::type is_le;
  477.  
  478.     typedef aux::le_result5<
  479.           is_le, Tag, F, l1, l2, l3, l4, l5
  480.         > le_result_;
  481.  
  482.     typedef typename le_result_::result_ result_;
  483.     typedef typename le_result_::type type;
  484. };
  485.  
  486. template<
  487.       typename F, typename T1, typename T2, typename T3, typename T4
  488.     , typename T5
  489.     , typename Tag
  490.     >
  491. struct lambda<
  492.           bind5< F,T1,T2,T3,T4,T5 >
  493.         , Tag
  494.        
  495.         >
  496. {
  497.     typedef false_ is_le;
  498.     typedef bind5<
  499.           F
  500.         , T1, T2, T3, T4, T5
  501.         > result_;
  502.  
  503.     typedef result_ type;
  504. };
  505.  
  506. /// special case for 'protect'
  507. template< typename T, typename Tag >
  508. struct lambda< mpl::protect<T>, Tag >
  509. {
  510.     typedef false_ is_le;
  511.     typedef mpl::protect<T> result_;
  512.     typedef result_ type;
  513. };
  514.  
  515. /// specializations for the main 'bind' form
  516.  
  517. template<
  518.       typename F, typename T1, typename T2, typename T3, typename T4
  519.     , typename T5
  520.     , typename Tag
  521.     >
  522. struct lambda<
  523.           bind< F,T1,T2,T3,T4,T5 >
  524.         , Tag
  525.        
  526.         >
  527. {
  528.     typedef false_ is_le;
  529.     typedef bind< F,T1,T2,T3,T4,T5 > result_;
  530.     typedef result_ type;
  531. };
  532.  
  533. /// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
  534.  
  535. template<
  536.       typename F, typename Tag1, typename Tag2
  537.     >
  538. struct lambda<
  539.           lambda< F,Tag1 >
  540.         , Tag2
  541.         >
  542. {
  543.     typedef lambda< F,Tag2 > l1;
  544.     typedef lambda< Tag1,Tag2 > l2;
  545.     typedef typename l1::is_le is_le;
  546.     typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
  547.     typedef typename le_result_::result_ result_;
  548.     typedef typename le_result_::type type;
  549. };
  550.  
  551. BOOST_MPL_AUX_NA_SPEC(2, lambda)
  552.  
  553. }}
  554.  
  555.  
downloadfull_lambda.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