diff --git a/docs/AdjacencyGraph.html b/docs/AdjacencyGraph.html index ed85b1ad..0543c072 100644 --- a/docs/AdjacencyGraph.html +++ b/docs/AdjacencyGraph.html @@ -106,8 +106,8 @@ The adjacent_vertices() function must return in constant time. typedef typename boost::graph_traits<G>::adjacency_iterator adjacency_iterator; void constraints() { - REQUIRE(G, IncidenceGraph); - REQUIRE(adjacency_iterator, MultiPassInputIterator); + function_requires< IncidenceGraph<G> >(); + function_requires< MultiPassInputIterator<adjacency_iterator> >(); p = adjacent_vertices(v, g); v = *p.first; diff --git a/docs/BidirectionalGraph.html b/docs/BidirectionalGraph.html index eb598503..855b1a70 100644 --- a/docs/BidirectionalGraph.html +++ b/docs/BidirectionalGraph.html @@ -139,8 +139,8 @@ undirected graphs). typedef typename boost::graph_traits<G>::in_edge_iterator in_edge_iterator; void constraints() { - REQUIRE(G, IncidenceGraph); - REQUIRE(in_edge_iterator, MultiPassInputIterator); + function_requires< IncidenceGraph<G> >(); + function_requires< MultiPassInputIterator<in_edge_iterator> >(); p = in_edges(v, g); e = *p.first; diff --git a/docs/EdgeListGraph.html b/docs/EdgeListGraph.html index c908499a..c36b8575 100644 --- a/docs/EdgeListGraph.html +++ b/docs/EdgeListGraph.html @@ -144,8 +144,8 @@ must all return in constant time. typedef typename boost::graph_traits<G>::edge_iterator edge_iterator; void constraints() { - REQUIRE(G, Graph); - REQUIRE(edge_iterator, MultiPassInputIterator); + function_requires< Graph<G> >(); + function_requires< MultiPassInputIterator<edge_iterator> >(); p = edges(g); E = num_edges(g); diff --git a/docs/Graph.html b/docs/Graph.html index 3f34daf8..13b6044c 100644 --- a/docs/Graph.html +++ b/docs/Graph.html @@ -106,12 +106,12 @@ None required. typedef typename boost::graph_traits<G>::edge_parallel_category edge_parallel_category; void constraints() { - REQUIRE(vertex_descriptor, DefaultConstructible); - REQUIRE(vertex_descriptor, EqualityComparable); - REQUIRE(vertex_descriptor, Assignable); - REQUIRE(edge_descriptor, DefaultConstructible); - REQUIRE(edge_descriptor, EqualityComparable); - REQUIRE(edge_descriptor, Assignable); + function_requires< DefaultConstructible<vertex_descriptor> >(); + function_requires< EqualityComparable<vertex_descriptor> >(); + function_requires< Assignable<vertex_descriptor> >(); + function_requires< DefaultConstructible<edge_descriptor> >(); + function_requires< EqualityComparable<edge_descriptor> >(); + function_requires< Assignable<edge_descriptor> >(); } G g; }; diff --git a/docs/IncidenceGraph.html b/docs/IncidenceGraph.html index d554e9e7..1e47357b 100644 --- a/docs/IncidenceGraph.html +++ b/docs/IncidenceGraph.html @@ -141,8 +141,8 @@ function must be linear in the number of out-edges. { typedef typename boost::graph_traits<G>::out_edge_iterator out_edge_iterator; void constraints() { - REQUIRE(G, Graph); - REQUIRE(out_edge_iterator, MultiPassInputIterator); + function_requires< Graph<G> >(); + function_requires< MultiPassInputIterator<out_edge_iterator> >(); p = out_edges(v, g); e = *p.first; diff --git a/docs/MutablePropertyGraph.html b/docs/MutablePropertyGraph.html index 2e1e03fe..b666775f 100644 --- a/docs/MutablePropertyGraph.html +++ b/docs/MutablePropertyGraph.html @@ -129,7 +129,7 @@ Return type: vertex_descriptor { typedef typename boost::graph_traits<G>::edge_descriptor edge_descriptor; void constraints() { - REQUIRE(G, MutableGraph); + function_requires< MutableGraph<G> >(); v = add_vertex(g, vp); p = add_edge(g, u, v, ep); } diff --git a/docs/PropertyGraph.html b/docs/PropertyGraph.html index 0c561a23..23604146 100644 --- a/docs/PropertyGraph.html +++ b/docs/PropertyGraph.html @@ -176,9 +176,9 @@ The get() property map function must be constant time. typedef typename property_map<G, Property>::type Map; typedef typename property_map<G, Property>::const_type const_Map; void constraints() { - REQUIRE(G, Graph); - REQUIRE2(Map, X, ReadWritePropertyMap); - REQUIRE2(const_Map, X, ReadablePropertyMap); + function_requires< Graph<G> >(); + function_requires< ReadWritePropertyMap<Map, X> >(); + function_requires< ReadablePropertyMap<const_Map, X> >(); Map pmap = get(Property(), g); pval = get(Property(), g, x); diff --git a/docs/VertexAndEdgeListGraph.html b/docs/VertexAndEdgeListGraph.html index ab36a120..c9f51fd7 100644 --- a/docs/VertexAndEdgeListGraph.html +++ b/docs/VertexAndEdgeListGraph.html @@ -54,9 +54,10 @@ requirements are added. template <class G> struct VertexAndEdgeListGraph { - CLASS_REQUIRES(G, VertexListGraph); - CLASS_REQUIRES(G, EdgeListGraph); - void constraints() { } + void constraints() { + function_requires< VertexListGraph<G> >(); + function_requires< EdgeListGraph<G> >(); + } }; diff --git a/docs/VertexListGraph.html b/docs/VertexListGraph.html index 8353d017..66c3c897 100644 --- a/docs/VertexListGraph.html +++ b/docs/VertexListGraph.html @@ -104,8 +104,8 @@ The vertices() function must return in constant time. typedef typename boost::graph_traits<G>::vertex_iterator vertex_iterator; void constraints() { - REQUIRE(G, AdjacencyGraph); - REQUIRE(vertex_iterator, MultiPassInputIterator); + function_requires< AdjacencyGraph<G> >(); + function_requires< MultiPassInputIterator<vertex_iterator> >(); p = vertices(g); V = num_vertices(g); diff --git a/docs/constructing_algorithms.html b/docs/constructing_algorithms.html index 6139c577..9774e9a5 100644 --- a/docs/constructing_algorithms.html +++ b/docs/constructing_algorithms.html @@ -82,8 +82,8 @@ most algorithms written to date are). We do restrict the graph type to those types that model VertexListGraph. This is enforced by the use of those graph operations in the algorithm, and furthermore by -our explicit requirement added as a concept check with the -REQUIRE macro (see Section function_requires() (see Section Concept Checking for more details about concept checking). @@ -126,11 +126,11 @@ namespace boost { typedef typename property_traits<Color>::value_type ColorType; typedef typename property_traits<Order>::value_type OrderType; - REQUIRE(VertexListGraph, VertexListGraph); - REQUIRE2(Color, vertex_descriptor, ReadWritePropertyMap); - REQUIRE(ColorType, Integer); - REQUIRE(Order, size_type, ReadablePropertyMap); - REQUIRE_SAME_TYPE(OrderType, vertex_descriptor); + function_requires< VertexListGraph<VertexListGraph> >(); + function_requires< ReadWritePropertyMap<Color, vertex_descriptor> >(); + function_requires< Integer<ColorType> >(); + function_requires< size_type, ReadablePropertyMap<Order> >(); + typedef typename same_type<OrderType, vertex_descriptor>::type req_same; size_type max_color = 0; const size_type V = num_vertices(G); diff --git a/docs/leda_conversion.html b/docs/leda_conversion.html index 9d7f7c3e..0279b7b5 100644 --- a/docs/leda_conversion.html +++ b/docs/leda_conversion.html @@ -240,9 +240,9 @@ href="../test/graph.cpp">test/graph.cpp. main(int,char*[]) { typedef GRAPH<int,int> Graph; - REQUIRE(Graph, VertexListGraph); - REQUIRE(Graph, BidirectionalGraph); - REQUIRE(Graph, MutableGraph); + function_requires< VertexListGraph<Graph> >(); + function_requires< BidirectionalGraph<Graph> >(); + function_requires< MutableGraph<Graph> >(); return 0; }