Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
please both sonar and codacy
[simgrid.git] / src / smpi / smpi_topo.hpp
index 7444794..dc04e44 100644 (file)
@@ -1,5 +1,4 @@
-/* Copyright (c) 2010-2015. The SimGrid Team.
- * All rights reserved.                                                     */
+/* Copyright (c) 2010-2017. The SimGrid Team. All rights reserved.          */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
@@ -7,13 +6,24 @@
 #ifndef SMPI_TOPO_HPP_INCLUDED
 #define SMPI_TOPO_HPP_INCLUDED
 
-#include "private.h"
+#include "src/smpi/smpi_comm.hpp"
+#include "src/smpi/smpi_status.hpp"
 
+typedef enum MPIR_Topo_type {
+  MPI_GRAPH=1,
+  MPI_CART=2,
+  MPI_DIST_GRAPH=3,
+  MPI_INVALID_TOPO=-1
+} MPIR_Topo_type;
+
+typedef SMPI_Topology *MPI_Topology;
 
 namespace simgrid{
 namespace smpi{
 
 class Topo {
+  public:
+    virtual ~Topo()=default;
   protected:
   MPI_Comm comm_;
 };
@@ -21,13 +31,13 @@ class Topo {
 
 class Topo_Cart: public Topo {
   private:
-    int nnodes_;
+    int nnodes_ = 0;
     int ndims_;
     int *dims_;
     int *periodic_;
     int *position_;
   public:
-    Topo_Cart(int ndims);
+    explicit Topo_Cart(int ndims);
     ~Topo_Cart();
     Topo_Cart(MPI_Comm comm_old, int ndims, int dims[], int periods[], int reorder, MPI_Comm *comm_cart);
     Topo_Cart* sub(const int remain_dims[], MPI_Comm *newcomm) ;
@@ -36,6 +46,7 @@ class Topo_Cart: public Topo {
     int rank(int* coords, int* rank);
     int shift(int direction, int disp, int *rank_source, int *rank_dest) ;
     int dim_get(int *ndims);
+    static int Dims_create(int nnodes, int ndims, int dims[]);
 };
 
 
@@ -64,11 +75,6 @@ class Topo_Dist_Graph: public Topo {
     ~Topo_Dist_Graph();
 };
 
-/*
- * This is a utility function, no need to have anything in the lower layer for this at all
- */
-extern int Dims_create(int nnodes, int ndims, int dims[]);
-
 }
 }