+#undef CHECK_GROUP_RANKS
+
+#define CHECK_GROUP_RANGES(group, n, ranges) \
+ for (int i = 0; i < (n); i++) { \
+ if ((ranges)[i][0] < 0 || (ranges)[i][0] >= (group)->size() || (ranges)[i][1] < 0 || \
+ (ranges)[i][1] >= (group)->size()) { \
+ return MPI_ERR_RANK; \
+ } \
+ if (((ranges)[i][0] < (ranges)[i][1] && (ranges)[i][2] < 0) || \
+ ((ranges)[i][0] > (ranges)[i][1] && (ranges)[i][2] > 0)) { \
+ return MPI_ERR_ARG; \
+ } \
+ if ((ranges)[i][2] == 0) \
+ return MPI_ERR_ARG; \
+ } \
+ if ((n) > (group)->size()) { \
+ XBT_WARN("%s, param 2 > group size", __func__); \
+ return MPI_ERR_ARG; \
+ }
+