Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add bits and pieces to try to compile dumpi with smpi
[simgrid.git] / src / smpi / smpi_topo.hpp
index ab16147..a884931 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,68 +6,68 @@
 #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 SMPI_Topology *MPI_Topology;
 
 namespace simgrid{
 namespace smpi{
 
 class Topo {
+  public:
+    virtual ~Topo()=default;
   protected:
-  MPI_Comm m_comm;
+  MPI_Comm comm_;
 };
 
 
-class Cart: public Topo {
+class Topo_Cart: public Topo {
   private:
-    int m_nnodes;
-    int m_ndims;
-    int *m_dims;
-    int *m_periodic;
-    int *m_position;
+    int nnodes_ = 0;
+    int ndims_;
+    int *dims_;
+    int *periodic_;
+    int *position_;
   public:
-    Cart(int ndims);
-    ~Cart();
-    Cart(MPI_Comm comm_old, int ndims, int dims[], int periods[], int reorder, MPI_Comm *comm_cart);
-    Cart* sub(const int remain_dims[], MPI_Comm *newcomm) ;
+    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) ;
     int coords(int rank, int maxdims, int coords[]) ;
     int get(int maxdims, int* dims, int* periods, int* coords);
     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[]);
 };
 
 
-class Graph: public Topo {
+class Topo_Graph: public Topo {
   private:
-    int m_nnodes;
-    int m_nedges;
-    int *m_index;
-    int *m_edges;
+    int nnodes_;
+    int nedges_;
+    int *index_;
+    int *edges_;
   public:
-    Graph();
-    ~Graph();
+    Topo_Graph();
+    ~Topo_Graph();
 };
 
-class Dist_Graph: public Topo {
+class Topo_Dist_Graph: public Topo {
   private:
-    int m_indegree;
-    int *m_in;
-    int *m_in_weights;
-    int m_outdegree;
-    int *m_out;
-    int *m_out_weights;
-    int m_is_weighted;
+    int indegree_;
+    int *in_;
+    int *in_weights_;
+    int outdegree_;
+    int *out_;
+    int *out_weights_;
+    int is_weighted_;
   public:
-    Dist_Graph();
-    ~Dist_Graph();
+    Topo_Dist_Graph();
+    ~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[]);
-
 }
 }