• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Boost.Flyweight test of set_factory.
2  *
3  * Copyright 2006-2013 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_set_factory.hpp"
12 
13 #include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
14 #include <boost/flyweight/flyweight.hpp>
15 #include <boost/flyweight/refcounted.hpp>
16 #include <boost/flyweight/set_factory.hpp>
17 #include <boost/flyweight/simple_locking.hpp>
18 #include <boost/flyweight/static_holder.hpp>
19 #include <functional>
20 #include "test_basic_template.hpp"
21 
22 using namespace boost::flyweights;
23 
24 struct set_factory_flyweight_specifier1
25 {
26   template<typename T>
27   struct apply
28   {
29     typedef flyweight<T,set_factory<> > type;
30   };
31 };
32 
33 struct set_factory_flyweight_specifier2
34 {
35   template<typename T>
36   struct apply
37   {
38     typedef flyweight<
39       T,
40       static_holder_class<boost::mpl::_1>,
41       set_factory_class<
42         boost::mpl::_1,boost::mpl::_2,
43         std::greater<boost::mpl::_2>,
44         std::allocator<boost::mpl::_1>
45       >
46     > type;
47   };
48 };
49 
50 struct set_factory_flyweight_specifier3
51 {
52   template<typename T>
53   struct apply
54   {
55     typedef flyweight<
56       T,
57       set_factory<
58         std::greater<boost::mpl::_2>,
59         std::allocator<boost::mpl::_1>
60       >,
61       static_holder_class<boost::mpl::_1>,
62       tag<char>
63     > type;
64   };
65 };
66 
test_set_factory()67 void test_set_factory()
68 {
69   test_basic_template<set_factory_flyweight_specifier1>();
70   test_basic_template<set_factory_flyweight_specifier2>();
71   test_basic_template<set_factory_flyweight_specifier3>();
72 }
73