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 ↑
Ignore white space 4 line context
... ...
@@ -34,6 +34,12 @@
34 34
// See http://www.boost.org/libs/concept_check for documentation.
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

	
39 45
namespace lemon {
... ...
@@ -47,4 +53,5 @@
47 53
  template <class T> inline void ignore_unused_variable_warning(const T&) { }
48 54

	
55
  ///\e
49 56
  template <class Concept>
50 57
  inline void function_requires()
... ...
@@ -56,4 +63,5 @@
56 63
  }
57 64

	
65
  ///\e
58 66
  template <typename Concept, typename Type>
59 67
  inline void checkConcept() {
... ...
@@ -65,41 +73,5 @@
65 73
  }
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)