root/ompi/mpi/cxx/status.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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-2008 Cisco Systems, Inc.  All rights reserved.
  14 // Copyright (c) 2017      Research Organization for Information Science
  15 //                         and Technology (RIST). All rights reserved.
  16 // $COPYRIGHT$
  17 //
  18 // Additional copyrights may follow
  19 //
  20 // $HEADER$
  21 //
  22 
  23 
  24 class Status {
  25 #if 0 /* OMPI_ENABLE_MPI_PROFILING */
  26   //  friend class PMPI::Status;
  27 #endif
  28   friend class MPI::Comm; //so I can access pmpi_status data member in comm.cc
  29   friend class MPI::Request; //and also from request.cc
  30   friend class MPI::File;
  31 
  32 public:
  33 #if 0 /* OMPI_ENABLE_MPI_PROFILING */
  34 
  35   // construction / destruction
  36   Status() { }
  37   virtual ~Status() {}
  38 
  39   // copy / assignment
  40   Status(const Status& data) : pmpi_status(data.pmpi_status) { }
  41 
  42   Status(const MPI_Status &i) : pmpi_status(i) { }
  43 
  44   Status& operator=(const Status& data) {
  45     pmpi_status = data.pmpi_status; return *this; }
  46 
  47   // comparison, don't need for status
  48 
  49   // inter-language operability
  50   Status& operator= (const MPI_Status &i) {
  51     pmpi_status = i; return *this; }
  52   operator MPI_Status () const { return pmpi_status; }
  53   //  operator MPI_Status* () const { return pmpi_status; }
  54   operator const PMPI::Status&() const { return pmpi_status; }
  55 
  56 #else
  57 
  58   Status() : mpi_status() { }
  59   // copy
  60   Status(const Status& data) : mpi_status(data.mpi_status) { }
  61 
  62   Status(const MPI_Status &i) : mpi_status(i) { }
  63 
  64   virtual ~Status() {}
  65 
  66   Status& operator=(const Status& data) {
  67     mpi_status = data.mpi_status; return *this; }
  68 
  69   // comparison, don't need for status
  70 
  71   // inter-language operability
  72   Status& operator= (const MPI_Status &i) {
  73     mpi_status = i; return *this; }
  74   operator MPI_Status () const { return mpi_status; }
  75   //  operator MPI_Status* () const { return (MPI_Status*)&mpi_status; }
  76 
  77 #endif
  78 
  79   //
  80   // Point-to-Point Communication
  81   //
  82 
  83   virtual int Get_count(const Datatype& datatype) const;
  84 
  85   virtual bool Is_cancelled() const;
  86 
  87   virtual int Get_elements(const Datatype& datatype) const;
  88 
  89   //
  90   // Status Access
  91   //
  92   virtual int Get_source() const;
  93 
  94   virtual void Set_source(int source);
  95 
  96   virtual int Get_tag() const;
  97 
  98   virtual void Set_tag(int tag);
  99 
 100   virtual int Get_error() const;
 101 
 102   virtual void Set_error(int error);
 103 
 104   virtual void Set_elements(const MPI::Datatype& datatype, int count);
 105 
 106   virtual void Set_cancelled(bool flag);
 107 
 108 protected:
 109 #if 0 /* OMPI_ENABLE_MPI_PROFILING */
 110   PMPI::Status pmpi_status;
 111 #else
 112   MPI_Status mpi_status;
 113 #endif
 114 
 115 };

/* [<][>][^][v][top][bottom][index][help] */