123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #ifndef BOOST_GRAPH_EXTERIOR_PROPERTY_HPP
- #define BOOST_GRAPH_EXTERIOR_PROPERTY_HPP
- #include <vector>
- #include <boost/graph/property_maps/container_property_map.hpp>
- #include <boost/graph/property_maps/matrix_property_map.hpp>
- namespace boost
- {
- namespace detail
- {
-
-
- template < typename Value > struct vector_matrix
- {
- typedef std::vector< Value > container_type;
- typedef std::vector< container_type > matrix_type;
- typedef container_type value_type;
- typedef container_type& reference;
- typedef const container_type const_reference;
- typedef container_type* pointer;
- typedef typename matrix_type::size_type size_type;
-
-
-
- inline vector_matrix(size_type n) : m_matrix(n, container_type(n)) {}
- inline reference operator[](size_type n) { return m_matrix[n]; }
- inline const_reference operator[](size_type n) const
- {
- return m_matrix[n];
- }
- matrix_type m_matrix;
- };
- }
- template < typename Graph, typename Key, typename Value >
- struct exterior_property
- {
- typedef Key key_type;
- typedef Value value_type;
- typedef std::vector< Value > container_type;
- typedef container_property_map< Graph, Key, container_type > map_type;
- typedef detail::vector_matrix< Value > matrix_type;
- typedef matrix_property_map< Graph, Key, matrix_type > matrix_map_type;
- private:
- exterior_property() {}
- exterior_property(const exterior_property&) {}
- };
- template < typename Graph, typename Value > struct exterior_vertex_property
- {
- typedef exterior_property< Graph,
- typename graph_traits< Graph >::vertex_descriptor, Value >
- property_type;
- typedef typename property_type::key_type key_type;
- typedef typename property_type::value_type value_type;
- typedef typename property_type::container_type container_type;
- typedef typename property_type::map_type map_type;
- typedef typename property_type::matrix_type matrix_type;
- typedef typename property_type::matrix_map_type matrix_map_type;
- };
- template < typename Graph, typename Value > struct exterior_edge_property
- {
- typedef exterior_property< Graph,
- typename graph_traits< Graph >::edge_descriptor, Value >
- property_type;
- typedef typename property_type::key_type key_type;
- typedef typename property_type::value_type value_type;
- typedef typename property_type::container_type container_type;
- typedef typename property_type::map_type map_type;
- typedef typename property_type::matrix_type matrix_type;
- typedef typename property_type::matrix_map_type matrix_map_type;
- };
- }
- #endif
|