]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/mpl/aux_/msvc_dtw.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
53f4208d3dc66742834d8903f113096ad6d92d40
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / mpl / aux_ / msvc_dtw.hpp
1 \r
2 // Copyright Aleksey Gurtovoy 2000-2004\r
3 //\r
4 // Distributed under the Boost Software License, Version 1.0. \r
5 // (See accompanying file LICENSE_1_0.txt or copy at \r
6 // http://www.boost.org/LICENSE_1_0.txt)\r
7 //\r
8 // See http://www.boost.org/libs/mpl for documentation.\r
9 \r
10 // $Id: msvc_dtw.hpp 49267 2008-10-11 06:19:02Z agurtovoy $\r
11 // $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $\r
12 // $Revision: 49267 $\r
13 \r
14 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION!\r
15 \r
16 #include <boost/mpl/aux_/preprocessor/params.hpp>\r
17 \r
18 // local macros, #undef-ined at the end of the header\r
19 #define AUX778076_DTW_PARAMS(param) \\r
20     BOOST_MPL_PP_PARAMS(AUX778076_MSVC_DTW_ARITY, param) \\r
21 /**/\r
22 \r
23 #define AUX778076_DTW_ORIGINAL_NAME \\r
24     AUX778076_MSVC_DTW_ORIGINAL_NAME \\r
25 /**/\r
26 \r
27 // warning: not a well-formed C++\r
28 // workaround for MSVC 6.5's "dependent template typedef bug"\r
29 \r
30 template< typename F>\r
31 struct AUX778076_MSVC_DTW_NAME\r
32 {\r
33     template< bool > struct f_ : F {};\r
34     template<> struct f_<true>\r
35     {\r
36 #if AUX778076_MSVC_DTW_ARITY > 0\r
37         template< AUX778076_DTW_PARAMS(typename P) > struct AUX778076_DTW_ORIGINAL_NAME\r
38         {\r
39             typedef int type;\r
40         };\r
41     };\r
42 \r
43     template< AUX778076_DTW_PARAMS(typename T) > struct result_\r
44         : f_< aux::msvc_never_true<F>::value >\r
45             ::template AUX778076_DTW_ORIGINAL_NAME< AUX778076_DTW_PARAMS(T) >\r
46     {\r
47     };\r
48 #else\r
49         template< typename P = int > struct AUX778076_DTW_ORIGINAL_NAME\r
50         {\r
51             typedef int type;\r
52         };\r
53     };\r
54 \r
55     template< typename T = int > struct result_\r
56         : f_< aux::msvc_never_true<F>::value >\r
57             ::template AUX778076_DTW_ORIGINAL_NAME<>\r
58     {\r
59     };\r
60 #endif\r
61 };\r
62 \r
63 #undef AUX778076_DTW_ORIGINAL_NAME\r
64 #undef AUX778076_DTW_PARAMS\r
65 \r
66 #undef AUX778076_MSVC_DTW_NAME\r
67 #undef AUX778076_MSVC_DTW_ORIGINAL_NAME\r
68 #undef AUX778076_MSVC_DTW_ARITY\r