summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/parameter/test/macros.cpp
blob: 97026bbee4d813cc560859c9f29591a248a68c81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright David Abrahams, Daniel Wallin 2003.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)

#include <boost/parameter.hpp>
#include <boost/parameter/macros.hpp>
#include <boost/bind.hpp>
#include "basics.hpp"

namespace test {

    BOOST_PARAMETER_FUN(int, f, 2, 4, f_parameters)
    {
        p[test::_tester](
            p[test::_name]
          , p[test::_value || boost::bind(&test::value_default)]
          , p[test::_index | 999]
        );

        return 1;
    }

    BOOST_PARAMETER_NAME(foo)
    BOOST_PARAMETER_NAME(bar)

    struct baz_parameters
      : boost::parameter::parameters<
            boost::parameter::optional<test::tag::foo>
          , boost::parameter::optional<test::tag::bar>
        >
    {
    };

    BOOST_PARAMETER_FUN(int, baz, 0, 2, baz_parameters)
    {
        return 1;
    }
} // namespace test

#include <boost/ref.hpp>
#include <boost/core/lightweight_test.hpp>
#include <string>

int main()
{
    test::f(
        test::values(
            std::string("foo")
          , std::string("bar")
          , std::string("baz")
        )
      , std::string("foo")
      , std::string("bar")
      , std::string("baz")
    );
    BOOST_TEST_EQ(1, test::baz());

    int x = 56;
    test::f(
        test::values(std::string("foo"), 666.222, 56)
      , test::_index = boost::ref(x)
      , test::_name = std::string("foo")
    );

    return boost::report_errors();
}