[97] | 1 | // -*- c++ -*- |
---|
| 2 | // |
---|
| 3 | // Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana |
---|
| 4 | // University Research and Technology |
---|
| 5 | // Corporation. All rights reserved. |
---|
| 6 | // Copyright (c) 2004-2005 The University of Tennessee and The University |
---|
| 7 | // of Tennessee Research Foundation. All rights |
---|
| 8 | // reserved. |
---|
| 9 | // Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, |
---|
| 10 | // University of Stuttgart. All rights reserved. |
---|
| 11 | // Copyright (c) 2004-2005 The Regents of the University of California. |
---|
| 12 | // All rights reserved. |
---|
| 13 | // Copyright (c) 2006 Cisco Systems, Inc. All rights reserved. |
---|
| 14 | // $COPYRIGHT$ |
---|
| 15 | // |
---|
| 16 | // Additional copyrights may follow |
---|
| 17 | // |
---|
| 18 | // $HEADER$ |
---|
| 19 | // |
---|
| 20 | |
---|
| 21 | |
---|
| 22 | class Intercomm : public Comm { |
---|
| 23 | #if 0 /* OMPI_ENABLE_MPI_PROFILING */ |
---|
| 24 | // friend class PMPI::Intercomm; |
---|
| 25 | #endif |
---|
| 26 | public: |
---|
| 27 | |
---|
| 28 | // construction |
---|
| 29 | Intercomm() : Comm(MPI_COMM_NULL) { } |
---|
| 30 | // copy |
---|
| 31 | Intercomm(const Comm_Null& data) : Comm(data) { } |
---|
| 32 | // inter-language operability |
---|
| 33 | Intercomm(MPI_Comm data) : Comm(data) { } |
---|
| 34 | |
---|
| 35 | #if 0 /* OMPI_ENABLE_MPI_PROFILING */ |
---|
| 36 | // copy |
---|
| 37 | Intercomm(const Intercomm& data) : Comm(data), pmpi_comm(data.pmpi_comm) { } |
---|
| 38 | Intercomm(const PMPI::Intercomm& d) : |
---|
| 39 | Comm((const PMPI::Comm&)d), pmpi_comm(d) { } |
---|
| 40 | |
---|
| 41 | // assignment |
---|
| 42 | Intercomm& operator=(const Intercomm& data) { |
---|
| 43 | Comm::operator=(data); |
---|
| 44 | pmpi_comm = data.pmpi_comm; return *this; } |
---|
| 45 | Intercomm& operator=(const Comm_Null& data) { |
---|
| 46 | Comm::operator=(data); |
---|
| 47 | Intercomm& ic = (Intercomm&)data; |
---|
| 48 | pmpi_comm = ic.pmpi_comm; return *this; } |
---|
| 49 | // inter-language operability |
---|
| 50 | Intercomm& operator=(const MPI_Comm& data) { |
---|
| 51 | Comm::operator=(data); |
---|
| 52 | pmpi_comm = PMPI::Intercomm(data); return *this; } |
---|
| 53 | #else |
---|
| 54 | // copy |
---|
| 55 | Intercomm(const Intercomm& data) : Comm(data.mpi_comm) { } |
---|
| 56 | // assignment |
---|
| 57 | Intercomm& operator=(const Intercomm& data) { |
---|
| 58 | mpi_comm = data.mpi_comm; return *this; } |
---|
| 59 | Intercomm& operator=(const Comm_Null& data) { |
---|
| 60 | mpi_comm = data; return *this; } |
---|
| 61 | // inter-language operability |
---|
| 62 | Intercomm& operator=(const MPI_Comm& data) { |
---|
| 63 | mpi_comm = data; return *this; } |
---|
| 64 | |
---|
| 65 | #endif |
---|
| 66 | |
---|
| 67 | |
---|
| 68 | // |
---|
| 69 | // Groups, Contexts, and Communicators |
---|
| 70 | // |
---|
| 71 | |
---|
| 72 | Intercomm Dup() const; |
---|
| 73 | |
---|
| 74 | virtual Intercomm& Clone() const; |
---|
| 75 | |
---|
| 76 | virtual int Get_remote_size() const; |
---|
| 77 | |
---|
| 78 | virtual Group Get_remote_group() const; |
---|
| 79 | |
---|
| 80 | virtual Intracomm Merge(bool high); |
---|
| 81 | |
---|
| 82 | virtual Intercomm Create(const Group& group) const; |
---|
| 83 | |
---|
| 84 | virtual Intercomm Split(int color, int key) const; |
---|
| 85 | |
---|
| 86 | }; |
---|