chiark / gitweb /
builds ours.graph.o !
[trains.git] / layout / graph-data.h
1 /*
2  */
3
4 #ifndef GRAPH_DATA_H
5 #define GRAPH_DATA_H
6
7
8 typedef struct Edge Edge;
9 typedef struct Segment Segment;
10 typedef struct MovFeat MovFeat;
11 typedef struct EdgeEnd EdgeEnd;
12 typedef struct Node Node;
13 typedef struct NodeSide NodeSide;
14
15 struct Segment {
16   const char *name; /* 0 if unknown (usually elided by extractgraph) */
17   int n_movfeats;
18   MovFeat *movfeats; /* [0] is fixed */
19 };
20
21 struct MovFeat {
22   Segment *segment;
23   const char *name; /* 0 if fixed */
24   int n_positions;
25 };
26
27 struct EdgeEnd {
28   EdgeEnd *back, *next; /* other ends at same side of same node */
29   Edge *edge; /* edge->ends[end].edge==edge */
30   int end; /* edge->ends[end].edge==end */
31   NodeSide *node;
32 };
33
34 struct Edge {
35   double distance;
36   MovFeat *segment;
37   int movpos; /* 0 if fixed */
38   EdgeEnd ends[2];
39 };
40
41 struct NodeSide {
42   Node *node; /* node->edges[side].node==node */
43   int side; /* node->edges[side].side==side */
44   EdgeEnd *head, *tail;
45 };
46
47 struct Node {
48   Node *back, *next;
49   NodeSide sides[2];
50 };
51
52 extern Node *nodes_head, *nodes_tail;
53
54
55 #endif /*GRAPH_DATA_H*/