Chris@16: // Copyright Daniel Trebbien 2010. Chris@16: // Distributed under the Boost Software License, Version 1.0. Chris@16: // (See accompanying file LICENSE_1_0.txt or the copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_GRAPH_BUFFER_CONCEPTS_HPP Chris@16: #define BOOST_GRAPH_BUFFER_CONCEPTS_HPP 1 Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { Chris@16: Chris@16: BOOST_concept(Buffer, (B)) Chris@16: { Chris@16: typedef typename B::value_type value_type; Chris@16: typedef typename B::size_type size_type; Chris@16: Chris@16: BOOST_CONCEPT_USAGE(Buffer) { Chris@16: typedef typename boost::add_reference::type reference; Chris@16: Chris@16: BOOST_CONCEPT_ASSERT((Assignable)); Chris@16: Chris@16: buf.push(g_ct); Chris@16: buf.pop(); Chris@16: reference t = buf.top(); Chris@16: boost::ignore_unused_variable_warning(t); Chris@16: } Chris@16: Chris@16: void const_constraints(const B& cbuf) { Chris@16: typedef typename boost::add_const::type>::type& const_reference; Chris@16: Chris@16: const_reference ct = cbuf.top(); Chris@16: s = cbuf.size(); Chris@16: if (cbuf.empty()) Chris@16: dummy = __LINE__; Chris@16: } Chris@16: Chris@16: int dummy; Chris@16: Chris@16: static const value_type g_ct; Chris@16: size_type s; Chris@16: B buf; Chris@16: }; Chris@16: Chris@16: BOOST_concept(UpdatableQueue, (Q)) Chris@16: : Buffer Chris@16: { Chris@16: BOOST_CONCEPT_USAGE(UpdatableQueue) { Chris@16: q.update(g_ct); Chris@16: } Chris@16: Chris@16: void const_constraints(const Q& cq) { Chris@16: if (cq.contains(g_ct)) Chris@16: dummy = __LINE__; Chris@16: } Chris@16: Chris@16: int dummy; Chris@16: Chris@16: static const typename Buffer::value_type g_ct; Chris@16: Q q; Chris@16: }; Chris@16: Chris@16: BOOST_concept(KeyedUpdatableQueue, (Q)) Chris@16: : UpdatableQueue Chris@16: { Chris@16: typedef typename Q::key_type key_type; Chris@16: typedef typename Q::key_map key_map; Chris@16: Chris@16: BOOST_CONCEPT_USAGE(KeyedUpdatableQueue) { Chris@16: BOOST_CONCEPT_ASSERT((boost::ReadWritePropertyMapConcept::value_type>)); Chris@16: } Chris@16: Chris@16: void const_constraints(const Q& cq) { Chris@16: km = cq.keys(); Chris@16: k = get(km, g_ct); Chris@16: } Chris@16: Chris@16: static const typename Buffer::value_type g_ct; Chris@16: key_type k; Chris@16: key_map km; Chris@16: Q q; Chris@16: }; Chris@16: Chris@16: } // end `namespace boost` Chris@16: Chris@16: #endif // !BOOST_GRAPH_BUFFER_CONCEPTS_HPP