]> AND Public Git Repository - simgrid.git/blobdiff - src/smpi/include/smpi_group.hpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Minor changes in smpi::Group.
[simgrid.git] / src / smpi / include / smpi_group.hpp
index e82bedc91c9f05c7ac9d216ed8327757826ef3ed..45edeef8524d354b95b6b13b8cbc6573868952b6 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2019. The SimGrid Team.
+/* Copyright (c) 2010-2021. The SimGrid Team.
  * All rights reserved.                                                     */
 
 /* This program is free software; you can redistribute it and/or modify it
@@ -17,8 +17,8 @@ namespace smpi{
 
 class Group : public F2C{
   int size_ = 0;
-  /* This is actually a map from int to int. We could use std::map here, but looking up a value there costs O(log(n)).
-   * For a vector, this costs O(1). We hence go with the vector.
+  /* This is actually a map from int to s4u::Actor*. We could use std::map here, but looking up a value there costs
+   * O(log(n)). For a vector, this costs O(1). We hence go with the vector.
    */
   std::vector<s4u::Actor*> rank_to_actor_map_;
   std::map<s4u::Actor*, int> actor_to_rank_map_;
@@ -29,23 +29,24 @@ class Group : public F2C{
 public:
   Group() = default;
   explicit Group(int size) : size_(size), rank_to_actor_map_(size, nullptr), index_to_rank_map_(size, MPI_UNDEFINED) {}
-  explicit Group(Group* origin);
+  explicit Group(const Group* origin);
 
   void set_mapping(s4u::Actor* actor, int rank);
-  int rank(int index);
-  s4u::Actor* actor(int rank);
-  int rank(s4u::Actor* process);
+  int rank(int index) const;
+  s4u::Actor* actor(int rank) const;
+  std::string name() const override {return std::string("MPI_Group");}
+  int rank(s4u::Actor* process) const;
   void ref();
   static void unref(MPI_Group group);
-  int size() { return size_; }
-  int compare(MPI_Group group2);
-  int incl(int n, const int* ranks, MPI_Group* newgroup);
-  int excl(int n, const int* ranks, MPI_Group* newgroup);
-  int group_union(MPI_Group group2, MPI_Group* newgroup);
-  int intersection(MPI_Group group2, MPI_Group* newgroup);
-  int difference(MPI_Group group2, MPI_Group* newgroup);
-  int range_incl(int n, int ranges[][3], MPI_Group* newgroup);
-  int range_excl(int n, int ranges[][3], MPI_Group* newgroup);
+  int size() const { return size_; }
+  int compare(MPI_Group group2) const;
+  int incl(int n, const int* ranks, MPI_Group* newgroup) const;
+  int excl(int n, const int* ranks, MPI_Group* newgroup) const;
+  int group_union(MPI_Group group2, MPI_Group* newgroup) const;
+  int intersection(MPI_Group group2, MPI_Group* newgroup) const;
+  int difference(MPI_Group group2, MPI_Group* newgroup) const;
+  int range_incl(int n, int ranges[][3], MPI_Group* newgroup) const;
+  int range_excl(int n, int ranges[][3], MPI_Group* newgroup) const;
 
   static Group* f2c(int id);
 };