Changes in lemon/concept_check.h [53:afb5325d6211:27:6724953f2f44] in lemon
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/concept_check.h
r53 r27 3 3 * This file is a part of LEMON, a generic C++ optimization library 4 4 * 5 * Copyright (C) 2003-200 85 * Copyright (C) 2003-2007 6 6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport 7 7 * (Egervary Research Group on Combinatorial Optimization, EGRES). … … 34 34 // See http://www.boost.org/libs/concept_check for documentation. 35 35 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 36 #ifndef LEMON_CONCEPT_CHECKS_H 37 #define LEMON_CONCEPT_CHECKS_H 44 38 45 39 namespace lemon { … … 53 47 template <class T> inline void ignore_unused_variable_warning(const T&) { } 54 48 55 ///\e56 49 template <class Concept> 57 50 inline void function_requires() … … 63 56 } 64 57 65 ///\e66 58 template <typename Concept, typename Type> 67 59 inline void checkConcept() { … … 73 65 } 74 66 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 75 103 } // namespace lemon 76 104 77 #endif // LEMON_CONCEPT_CHECK _H105 #endif // LEMON_CONCEPT_CHECKS_H
Note: See TracChangeset
for help on using the changeset viewer.