gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Removed BOOST_CLASS_REQUIRE macros + added file description.
0 1 0
default
1 file changed with 11 insertions and 39 deletions:
↑ Collapse diff ↑
Show white space 6 line context
... ...
@@ -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 // LEMON_CONCEPT_CHECKS_H
77
#endif // LEMON_CONCEPT_CHECK_H
0 comments (0 inline)