inline void unpack_recv_buffer( const CommAll& all, const DistributedIndex::ProcType& comm_size, std::vector<T>& v) { reserve_for_recv_buffer(all, comm_size, v); for (DistributedIndex::ProcType p = 0 ; p < comm_size ; ++p ) { CommBuffer & buf = all.recv_buffer( p ); while ( buf.remaining() ) { T kp; buf.unpack( kp ); v.push_back( kp ); } } }
inline void unpack_with_proc_recv_buffer( const CommAll& all, const DistributedIndex::ProcType& comm_size, std::vector<std::pair<T,DistributedIndex::ProcType> >& v) { reserve_for_recv_buffer(all, comm_size, v); for ( DistributedIndex::ProcType p = 0 ; p < comm_size ; ++p ) { CommBuffer & buf = all.recv_buffer( p ); std::pair<T,DistributedIndex::ProcType> kp; kp.second = p; while ( buf.remaining() ) { buf.unpack( kp.first ); v.push_back( kp ); } } }
inline void unpack_recv_buffer( const CommAll& all, const DistributedIndex::ProcType& comm_size, Vector & v) { typedef typename Vector::value_type value_type; reserve_for_recv_buffer(all, comm_size, v); for (DistributedIndex::ProcType p = 0 ; p < comm_size ; ++p ) { CommBuffer & buf = all.recv_buffer( p ); while ( buf.remaining() ) { value_type kp; buf.unpack( kp ); v.push_back( kp ); } } }
inline void unpack_with_proc_recv_buffer( const CommAll& all, const DistributedIndex::ProcType& comm_size, VectorProcPair & v) { typedef typename VectorProcPair::value_type pair_type; reserve_for_recv_buffer(all, comm_size, v); for ( DistributedIndex::ProcType p = 0 ; p < comm_size ; ++p ) { CommBuffer & buf = all.recv_buffer( p ); pair_type kp; kp.second = p; while ( buf.remaining() ) { buf.unpack( kp.first ); v.push_back( kp ); } } }