renamed LBTopology.C to topology.C for the same name convention in the directory...
[charm.git] / src / conv-ldb / topology.h
1 /*****************************************************************************
2  * $Source$
3  * $Author$
4  * $Date$
5  * $Revision$
6  *****************************************************************************/
7
8 /**
9  * \addtogroup CkLdb
10 */
11 /*@{*/
12
13 #ifndef _LBTOPOLOGY_H
14 #define _LBTOPOLOGY_H
15
16 #ifdef __cplusplus
17
18 class LBTopology {
19 protected:
20   int npes;
21 public:
22   LBTopology(int p): npes(p) {}
23   virtual int max_neighbors() = 0;
24   virtual void neighbors(int mype, int* _n, int &nb) = 0;
25 };
26
27 #define LBTOPO_MACRO(x) \
28   static LBTopology * create##x() {     \
29     return new x(CkNumPes());   \
30   }
31
32 class LBTopo_ring: public LBTopology {
33 public:
34   LBTopo_ring(int p): LBTopology(p) {}
35   virtual int max_neighbors();
36   virtual void neighbors(int mype, int* _n, int &nb);
37 };
38
39 class LBTopo_torus2d: public LBTopology {
40 private:
41   int width;
42   int goodcoor(int, int);
43 public:
44   LBTopo_torus2d(int p);
45   virtual int max_neighbors();
46   virtual void neighbors(int mype, int* _n, int &nb);
47 };
48
49 class LBTopo_torus3d: public LBTopology {
50 private:
51   int width;
52   int goodcoor(int, int, int);
53 public:
54   LBTopo_torus3d(int p);
55   virtual int max_neighbors();
56   virtual void neighbors(int mype, int* _n, int &nb);
57 };
58
59 class LBTopo_graph: public LBTopology {
60 public:
61   LBTopo_graph(int p): LBTopology(p) {}
62   virtual int max_neighbors();
63   virtual void neighbors(int mype, int* _n, int &nb);
64 };
65
66 typedef  LBTopology* (*LBtopoFn)();
67
68 #else
69 typedef  void* (*LBtopoFn)();
70 #endif   /* __cplusplus */
71
72 #ifdef __cplusplus
73 extern "C" {
74 #endif
75 void registerLBTopos();
76 LBtopoFn LBTopoLookup(char *);
77 int getTopoMaxNeighbors(void *topo);
78 void getTopoNeighbors(void *topo, int myid, int* na, int *n);
79 void printoutTopo();
80 #ifdef __cplusplus
81 }
82 #endif
83
84 #endif