1 | // (C) Copyright Gennadiy Rozental 2001. |
2 | // Use, modification, and distribution are subject to the |
3 | // Boost Software License, Version 1.0. (See accompanying file |
4 | // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
5 | |
6 | // See http://www.boost.org/libs/test for the library home page. |
7 | // |
8 | // File : $RCSfile$ |
9 | // |
10 | // Version : $Revision$ |
11 | // |
12 | // Description : parameter modifiers |
13 | // *************************************************************************** |
14 | |
15 | #ifndef BOOST_TEST_UTILS_RUNTIME_MODIFIER_HPP |
16 | #define BOOST_TEST_UTILS_RUNTIME_MODIFIER_HPP |
17 | |
18 | // Boost.Test Runtime parameters |
19 | #include <boost/test/utils/runtime/fwd.hpp> |
20 | |
21 | // Boost.Test |
22 | #include <boost/test/utils/named_params.hpp> |
23 | |
24 | #include <boost/test/detail/suppress_warnings.hpp> |
25 | |
26 | namespace boost { |
27 | namespace runtime { |
28 | |
29 | // ************************************************************************** // |
30 | // ************** environment variable modifiers ************** // |
31 | // ************************************************************************** // |
32 | |
33 | namespace { |
34 | |
35 | #if !defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) && !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) |
36 | #define BOOST_TEST_CLA_NEW_API |
37 | #endif |
38 | |
39 | #ifdef BOOST_TEST_CLA_NEW_API |
40 | auto const& description = unit_test::static_constant<nfp::typed_keyword<cstring,struct description_t>>::value; |
41 | auto const& help = unit_test::static_constant<nfp::typed_keyword<cstring,struct help_t>>::value; |
42 | auto const& env_var = unit_test::static_constant<nfp::typed_keyword<cstring,struct env_var_t>>::value; |
43 | auto const& end_of_params = unit_test::static_constant<nfp::typed_keyword<cstring,struct end_of_params_t>>::value; |
44 | auto const& negation_prefix = unit_test::static_constant<nfp::typed_keyword<cstring,struct neg_prefix_t>>::value; |
45 | auto const& value_hint = unit_test::static_constant<nfp::typed_keyword<cstring,struct value_hint_t>>::value; |
46 | auto const& optional_value = unit_test::static_constant<nfp::keyword<struct optional_value_t>>::value; |
47 | auto const& default_value = unit_test::static_constant<nfp::keyword<struct default_value_t>>::value; |
48 | auto const& callback = unit_test::static_constant<nfp::keyword<struct callback_t>>::value; |
49 | |
50 | template<typename EnumType> |
51 | using enum_values = unit_test::static_constant< |
52 | nfp::typed_keyword<std::initializer_list<std::pair<const cstring,EnumType>>, struct enum_values_t> |
53 | >; |
54 | |
55 | #else |
56 | |
57 | nfp::typed_keyword<cstring,struct description_t> description; |
58 | nfp::typed_keyword<cstring,struct help_t> help; |
59 | nfp::typed_keyword<cstring,struct env_var_t> env_var; |
60 | nfp::typed_keyword<cstring,struct end_of_params_t> end_of_params; |
61 | nfp::typed_keyword<cstring,struct neg_prefix_t> negation_prefix; |
62 | nfp::typed_keyword<cstring,struct value_hint_t> value_hint; |
63 | nfp::keyword<struct optional_value_t> optional_value; |
64 | nfp::keyword<struct default_value_t> default_value; |
65 | nfp::keyword<struct callback_t> callback; |
66 | |
67 | template<typename EnumType> |
68 | struct enum_values_list { |
69 | typedef std::pair<cstring,EnumType> ElemT; |
70 | typedef std::vector<ElemT> ValuesT; |
71 | |
72 | enum_values_list const& |
73 | operator()( cstring k, EnumType v ) const |
74 | { |
75 | const_cast<enum_values_list*>(this)->m_values.push_back( ElemT( k, v ) ); |
76 | |
77 | return *this; |
78 | } |
79 | |
80 | operator ValuesT const&() const { return m_values; } |
81 | |
82 | private: |
83 | ValuesT m_values; |
84 | }; |
85 | |
86 | template<typename EnumType> |
87 | struct enum_values : unit_test::static_constant< |
88 | nfp::typed_keyword<enum_values_list<EnumType>, struct enum_values_t> > |
89 | { |
90 | }; |
91 | |
92 | #endif |
93 | |
94 | } // local namespace |
95 | |
96 | } // namespace runtime |
97 | } // namespace boost |
98 | |
99 | #include <boost/test/detail/enable_warnings.hpp> |
100 | |
101 | #endif // BOOST_TEST_UTILS_RUNTIME_MODIFIER_HPP |
102 | |