EVOLUTION-MANAGER
Edit File: vector_property_map.hpp
// Copyright (C) Vladimir Prus 2003. // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/graph/vector_property_map.html for // documentation. // #ifndef BOOST_PROPERTY_MAP_PARALLEL_VECTOR_PROPERTY_MAP_HPP_VP_2003_03_04 #define BOOST_PROPERTY_MAP_PARALLEL_VECTOR_PROPERTY_MAP_HPP_VP_2003_03_04 #include <boost/property_map/property_map.hpp> #include <boost/shared_ptr.hpp> #include <vector> #include <boost/property_map/parallel/distributed_property_map.hpp> #include <boost/property_map/parallel/local_property_map.hpp> namespace boost { /** Distributed vector property map. * * This specialization of @ref vector_property_map builds a * distributed vector property map given the local index maps * generated by distributed graph types that automatically have index * properties. * * This specialization is useful when creating external distributed * property maps via the same syntax used to create external * sequential property maps. */ template<typename T, typename ProcessGroup, typename GlobalMap, typename StorageMap> class vector_property_map<T, local_property_map<ProcessGroup, GlobalMap, StorageMap> > : public parallel::distributed_property_map< ProcessGroup, GlobalMap, vector_property_map<T, StorageMap> > { typedef vector_property_map<T, StorageMap> local_iterator_map; typedef parallel::distributed_property_map<ProcessGroup, GlobalMap, local_iterator_map> inherited; typedef local_property_map<ProcessGroup, GlobalMap, StorageMap> index_map_type; public: vector_property_map(const index_map_type& index = index_map_type()) : inherited(index.process_group(), index.global(), local_iterator_map(index.base())) { } vector_property_map(unsigned inital_size, const index_map_type& index = index_map_type()) : inherited(index.process_group(), index.global(), local_iterator_map(inital_size, index.base())) { } }; /** Distributed vector property map. * * This specialization of @ref vector_property_map builds a * distributed vector property map given the local index maps * generated by distributed graph types that automatically have index * properties. * * This specialization is useful when creating external distributed * property maps via the same syntax used to create external * sequential property maps. */ template<typename T, typename ProcessGroup, typename GlobalMap, typename StorageMap> class vector_property_map< T, parallel::distributed_property_map< ProcessGroup, GlobalMap, StorageMap > > : public parallel::distributed_property_map< ProcessGroup, GlobalMap, vector_property_map<T, StorageMap> > { typedef vector_property_map<T, StorageMap> local_iterator_map; typedef parallel::distributed_property_map<ProcessGroup, GlobalMap, local_iterator_map> inherited; typedef parallel::distributed_property_map<ProcessGroup, GlobalMap, StorageMap> index_map_type; public: vector_property_map(const index_map_type& index = index_map_type()) : inherited(index.process_group(), index.global(), local_iterator_map(index.base())) { } vector_property_map(unsigned inital_size, const index_map_type& index = index_map_type()) : inherited(index.process_group(), index.global(), local_iterator_map(inital_size, index.base())) { } }; } #endif // BOOST_PROPERTY_MAP_PARALLEL_VECTOR_PROPERTY_MAP_HPP_VP_2003_03_04