... | ... |
@@ -35,4 +35,10 @@ |
35 | 35 |
|
36 |
#ifndef LEMON_CONCEPT_CHECKS_H |
|
37 |
#define LEMON_CONCEPT_CHECKS_H |
|
36 |
///\file |
|
37 |
///\brief Basic utilities for concept checking. |
|
38 |
/// |
|
39 |
///\todo Are we still using BOOST concept checking utility? |
|
40 |
///Is the BOOST copyright notice necessary? |
|
41 |
|
|
42 |
#ifndef LEMON_CONCEPT_CHECK_H |
|
43 |
#define LEMON_CONCEPT_CHECK_H |
|
38 | 44 |
|
... | ... |
@@ -48,2 +54,3 @@ |
48 | 54 |
|
55 |
///\e |
|
49 | 56 |
template <class Concept> |
... | ... |
@@ -57,2 +64,3 @@ |
57 | 64 |
|
65 |
///\e |
|
58 | 66 |
template <typename Concept, typename Type> |
... | ... |
@@ -66,40 +74,4 @@ |
66 | 74 |
|
67 |
#define BOOST_CLASS_REQUIRE(type_var, ns, concept) \ |
|
68 |
typedef void (ns::concept <type_var>::* func##type_var##concept)(); \ |
|
69 |
template <func##type_var##concept Tp1_> \ |
|
70 |
struct concept_checking_##type_var##concept { }; \ |
|
71 |
typedef concept_checking_##type_var##concept< \ |
|
72 |
BOOST_FPTR ns::concept<type_var>::constraints> \ |
|
73 |
concept_checking_typedef_##type_var##concept |
|
74 |
|
|
75 |
#define BOOST_CLASS_REQUIRE2(type_var1, type_var2, ns, concept) \ |
|
76 |
typedef void (ns::concept <type_var1,type_var2>::* \ |
|
77 |
func##type_var1##type_var2##concept)(); \ |
|
78 |
template <func##type_var1##type_var2##concept Tp1_> \ |
|
79 |
struct concept_checking_##type_var1##type_var2##concept { }; \ |
|
80 |
typedef concept_checking_##type_var1##type_var2##concept< \ |
|
81 |
BOOST_FPTR ns::concept<type_var1,type_var2>::constraints> \ |
|
82 |
concept_checking_typedef_##type_var1##type_var2##concept |
|
83 |
|
|
84 |
#define BOOST_CLASS_REQUIRE3(tv1, tv2, tv3, ns, concept) \ |
|
85 |
typedef void (ns::concept <tv1,tv2,tv3>::* \ |
|
86 |
func##tv1##tv2##tv3##concept)(); \ |
|
87 |
template <func##tv1##tv2##tv3##concept Tp1_> \ |
|
88 |
struct concept_checking_##tv1##tv2##tv3##concept { }; \ |
|
89 |
typedef concept_checking_##tv1##tv2##tv3##concept< \ |
|
90 |
BOOST_FPTR ns::concept<tv1,tv2,tv3>::constraints> \ |
|
91 |
concept_checking_typedef_##tv1##tv2##tv3##concept |
|
92 |
|
|
93 |
#define BOOST_CLASS_REQUIRE4(tv1, tv2, tv3, tv4, ns, concept) \ |
|
94 |
typedef void (ns::concept <tv1,tv2,tv3,tv4>::* \ |
|
95 |
func##tv1##tv2##tv3##tv4##concept)(); \ |
|
96 |
template <func##tv1##tv2##tv3##tv4##concept Tp1_> \ |
|
97 |
struct concept_checking_##tv1##tv2##tv3##tv4##concept { }; \ |
|
98 |
typedef concept_checking_##tv1##tv2##tv3##tv4##concept< \ |
|
99 |
BOOST_FPTR ns::concept<tv1,tv2,tv3,tv4>::constraints> \ |
|
100 |
concept_checking_typedef_##tv1##tv2##tv3##tv4##concept |
|
101 |
|
|
102 |
|
|
103 | 75 |
} // namespace lemon |
104 | 76 |
|
105 |
#endif // |
|
77 |
#endif // LEMON_CONCEPT_CHECK_H |
0 comments (0 inline)