OpenMPI  0.1.1
op.h
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-2009 Cisco Systems, Inc. All rights reserved.
14 // $COPYRIGHT$
15 //
16 // Additional copyrights may follow
17 //
18 // $HEADER$
19 //
20 
21 class Op {
22 public:
23 
24  // construction
25  Op();
26  Op(MPI_Op i);
27  Op(const Op& op);
28 #if 0 /* OMPI_ENABLE_MPI_PROFILING */
29  Op(const PMPI::Op& op) : pmpi_op(op) { }
30 #endif
31  // destruction
32  virtual ~Op();
33  // assignment
34  Op& operator=(const Op& op);
35  Op& operator= (const MPI_Op &i);
36  // comparison
37  inline bool operator== (const Op &a);
38  inline bool operator!= (const Op &a);
39  // conversion functions for inter-language operability
40  inline operator MPI_Op () const;
41  // inline operator MPI_Op* (); //JGS const
42 #if 0 /* OMPI_ENABLE_MPI_PROFILING */
43  inline operator const PMPI::Op&() const { return pmpi_op; }
44 #endif
45  // Collective Communication
46  //JGS took const out
47  virtual void Init(User_function *func, bool commute);
48  virtual void Free();
49 
50  virtual void Reduce_local(const void *inbuf, void *inoutbuf, int count,
51  const MPI::Datatype& datatype) const;
52  virtual bool Is_commutative(void) const;
53 
54 #if ! 0 /* OMPI_ENABLE_MPI_PROFILING */
55 protected:
56  MPI_Op mpi_op;
57 #endif
58 
59 #if 0 /* OMPI_ENABLE_MPI_PROFILING */
60 private:
61  PMPI::Op pmpi_op;
62 #endif
63 
64 };
65 
Definition: op.h:21
Back-end type of MPI_Op.
Definition: op.h:100