- CHECK_ARGS(comm == MPI_COMM_NULL, MPI_ERR_COMM, "Iscatterv: the communicator cannot be MPI_COMM_NULL");
- CHECK_ARGS((comm->rank() == root) && (sendcounts == nullptr), MPI_ERR_ARG,
- "Iscatterv: param 2 sendcounts cannot be NULL on the root rank");
- CHECK_ARGS((comm->rank() == root) && (displs == nullptr), MPI_ERR_ARG,
- "Iscatterv: param 3 displs cannot be NULL on the root rank");
- CHECK_ARGS((comm->rank() == root) && (sendtype == MPI_DATATYPE_NULL), MPI_ERR_TYPE,
- "Iscatterv: The sendtype cannot be NULL on the root rank");
- CHECK_ARGS((recvbuf != MPI_IN_PLACE) && (recvtype == MPI_DATATYPE_NULL), MPI_ERR_TYPE,
- "Iscatterv: the recvtype cannot be NULL when not receiving in place");
- CHECK_ARGS(request == nullptr, MPI_ERR_ARG, "Iscatterv: param 10 request cannot be NULL");
- CHECK_ARGS(recvbuf != MPI_IN_PLACE && recvcount < 0, MPI_ERR_COUNT,
- "Iscatterv: When not receiving in place, the recvcound cannot be negative");
- CHECK_ARGS(root < 0, MPI_ERR_ROOT, "Iscatterv: root cannot be negative");
- CHECK_ARGS(root >= comm->size(), MPI_ERR_ROOT, "Iscatterv: root (=%d) is larger than communicator size (=%d)", root,
- comm->size());
-
+ CHECK_COMM(9)
+ if(recvbuf != MPI_IN_PLACE){
+ CHECK_BUFFER(4, recvbuf, recvcount)
+ CHECK_COUNT(5, recvcount)
+ CHECK_TYPE(7, recvtype)
+ }
+ CHECK_ROOT(9)
+ CHECK_REQUEST(10)