class Topo_Cart: public Topo {
int nnodes_ = 0;
int ndims_;
- int* dims_;
- int* periodic_;
- int* position_;
+ std::vector<int> dims_;
+ std::vector<int> periodic_;
+ std::vector<int> position_;
public:
explicit Topo_Cart(int ndims);
- Topo_Cart(const Topo_Cart&) = delete;
- Topo_Cart& operator=(const Topo_Cart&) = delete;
- ~Topo_Cart();
- Topo_Cart(MPI_Comm comm_old, int ndims, int dims[], int periods[], int reorder, MPI_Comm* comm_cart);
+ Topo_Cart(MPI_Comm comm_old, int ndims, const int dims[], const 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 rank(const 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 Topo_Graph: public Topo {
- int nnodes_;
- int* index_;
- int* edges_;
-
-public:
- Topo_Graph();
- Topo_Graph(const Topo_Graph&) = delete;
- Topo_Graph& operator=(const Topo_Graph&) = delete;
- ~Topo_Graph();
+ std::vector<int> index_;
+ std::vector<int> edges_;
};
class Topo_Dist_Graph: public Topo {
- int* in_;
- int* in_weights_;
- int* out_;
- int* out_weights_;
-
-public:
- Topo_Dist_Graph();
- Topo_Dist_Graph(const Topo_Dist_Graph&) = delete;
- Topo_Dist_Graph& operator=(const Topo_Dist_Graph&) = delete;
- ~Topo_Dist_Graph();
+ std::vector<int> in_;
+ std::vector<int> in_weights_;
+ std::vector<int> out_;
+ std::vector<int> out_weights_;
};
}