1 /* Copyright (c) 2010, 2013-2017. The SimGrid Team.
2 * All rights reserved. */
4 /* This program is free software; you can redistribute it and/or modify it
5 * under the terms of the license (GNU LGPL) which comes with this package. */
7 #ifndef SMPI_GROUP_HPP_INCLUDED
8 #define SMPI_GROUP_HPP_INCLUDED
10 #include "smpi_f2c.hpp"
15 class Group : public F2C{
18 int *rank_to_index_map_;
19 std::unordered_map<int, int> index_to_rank_map_;
23 explicit Group(int size);
24 explicit Group(Group* origin);
27 void set_mapping(int index, int rank);
31 static void unref(MPI_Group group);
33 int compare(MPI_Group group2);
34 int incl(int n, int* ranks, MPI_Group* newgroup);
35 int excl(int n, int *ranks, MPI_Group * newgroup);
36 int group_union(MPI_Group group2, MPI_Group* newgroup);
37 int intersection(MPI_Group group2, MPI_Group* newgroup);
38 int difference(MPI_Group group2, MPI_Group* newgroup);
39 int range_incl(int n, int ranges[][3], MPI_Group * newgroup);
40 int range_excl(int n, int ranges[][3], MPI_Group * newgroup);
42 static Group* f2c(int id);