#pragma once
#ifdef ARB_MPI_ENABLED
#include <mpi.h>
namespace pyarb {
// A shim is required for MPI_Comm, because OpenMPI defines it as a pointer to
// a forward-declared type, which pybind11 won't allow as an argument.
// MPICH and its derivatives use an integer.
struct mpi_comm_shim {
MPI_Comm comm = MPI_COMM_WORLD;
mpi_comm_shim() = default;
mpi_comm_shim(MPI_Comm c): comm(c) {}
mpi_comm_shim(pybind11::object o);
};
bool can_convert_to_mpi_comm(pybind11::object o);
MPI_Comm convert_to_mpi_comm(pybind11::object o);
} // namespace pyarb
#endif