}
#define CREATE_MPI_OP(name, func) \
- static SMPI_Op mpi_##name (&(func) /* func */, true ); \
+ static SMPI_Op mpi_##name (&(func) /* func */, true, true ); \
MPI_Op name = &mpi_##name;
CREATE_MPI_OP(MPI_MAX, max_func);
return static_cast<Op*>(F2C::f2c(id));
}
+void Op::ref(){
+ refcount_++;
+}
+
+void Op::unref(MPI_Op* op){
+ if((*op)!=MPI_OP_NULL){
+ (*op)->refcount_--;
+ if((*op)->refcount_==0 && (*op)->predefined_==false)
+ delete(*op);
+ }
+}
+
}
}