1 /* Boost.Flyweight basic test.
2 *
3 * Copyright 2006-2008 Joaquin M Lopez Munoz.
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 * See http://www.boost.org/libs/flyweight for library home page.
9 */
10
11 #include "test_basic.hpp"
12
13 #include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
14 #include <boost/flyweight.hpp>
15 #include "test_basic_template.hpp"
16
17 using namespace boost::flyweights;
18
19 struct basic_flyweight_specifier1
20 {
21 template<typename T>
22 struct apply
23 {
24 typedef flyweight<T> type;
25 };
26 };
27
28 struct basic_flyweight_specifier2
29 {
30 template<typename T>
31 struct apply
32 {
33 typedef flyweight<
34 T,tag<int>,
35 static_holder_class<boost::mpl::_1>,
36 hashed_factory_class<
37 boost::mpl::_1,boost::mpl::_2,
38 boost::hash<boost::mpl::_2>,std::equal_to<boost::mpl::_2>,
39 std::allocator<boost::mpl::_1>
40 >,
41 simple_locking,
42 refcounted
43 > type;
44 };
45 };
46
47 struct basic_flyweight_specifier3
48 {
49 template<typename T>
50 struct apply
51 {
52 typedef flyweight<
53 T,
54 hashed_factory<
55 boost::hash<boost::mpl::_2>,std::equal_to<boost::mpl::_2>,
56 std::allocator<boost::mpl::_1>
57 >,
58 tag<int>
59 > type;
60 };
61 };
62
test_basic()63 void test_basic()
64 {
65 test_basic_template<basic_flyweight_specifier1>();
66 test_basic_template<basic_flyweight_specifier2>();
67 test_basic_template<basic_flyweight_specifier3>();
68 }
69