Changeset 53:afb5325d6211 in lemon-1.2
- Timestamp:
- 01/09/08 00:37:22 (17 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/concept_check.h
r39 r53 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 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 63 } 57 64 65 ///\e 58 66 template <typename Concept, typename Type> 59 67 inline void checkConcept() { … … 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##concept74 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##concept83 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##concept92 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##concept101 102 103 75 } // namespace lemon 104 76 105 #endif // LEMON_CONCEPT_CHECK S_H77 #endif // LEMON_CONCEPT_CHECK_H
Note: See TracChangeset
for help on using the changeset viewer.