doc: Add serial to list of ci file reserved words
[charm.git] / src / ck-ldb / ObjGraph.h
1 /**
2  *                 !!!!!!!!!!!!!!!!! DEFUNCT !!!!!!!!!!!!!!!!!!!
3  *
4  *  This file is not compiled anymore and its uses should be replaced by the
5  *  class of the same name (ObjGraph) in ckgraph.h
6  *
7  *                 !!!!!!!!!!!!!!!!! DEFUNCT !!!!!!!!!!!!!!!!!!!
8  */
9
10 /**
11  * \addtogroup CkLdb
12 */
13 /*@{*/
14
15 #ifndef _OBJGRAPH_H_
16 #define _OBJGRAPH_H_
17
18 #include "lbdb.h"
19 #include "CentralLB.h"
20
21 class ObjGraph {
22 public:
23   class Edge {
24     friend class ObjGraph;
25   public:
26     int edge_index;
27     int index;
28     int from_node;
29     int to_node;
30     Edge* next_from() { return nxt_out; };
31     Edge* next_to() { return nxt_in; };
32   private:
33     Edge* nxt_out;
34     Edge* nxt_in;
35   };
36
37   class Node {
38     friend class ObjGraph;
39   public:
40     int node_index;
41     int proc;
42     int index;
43     int n_out;
44     int n_in;
45     Edge* edges_from() { return outEdge; };
46     Edge* edges_to() { return inEdge; };
47
48   private:
49     Edge* outEdge;
50     Edge* inEdge;
51     Node* nxt_hash;
52   };
53
54   ObjGraph(int count, BaseLB::LDStats* stats);
55   ~ObjGraph();
56
57   int NodeCount() { return n_objs; };
58   int EdgeCount() { return n_edges; };
59   Node* Start() { return nodelist; };
60   Node GraphNode(int i) { return nodelist[i]; };
61
62   double LoadOf(int i) {
63     const Node n = GraphNode(i);
64     const int index = n.index;
65     return stats->objData[index].wallTime;
66   };
67
68   double EdgeWeight(Edge* e);
69
70 private:
71   enum { hash_max = 256 };
72
73   int calc_hashval(LDOMid, LDObjid);
74   Node* find_node(const LDObjKey &);
75
76   Edge* edgelist;
77   Node* node_table[hash_max];
78
79   int n_objs;
80   int n_edges;
81   Node* nodelist;
82   BaseLB::LDStats* stats;
83 };
84
85 #endif
86
87 /*@}*/