chiark / gitweb /
generates ours.redactgraph, which needs some work
[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 NodeList NodeList;
14 typedef struct NodeSide NodeSide;
15
16 struct Segment {
17   const char *segname; /* 0 if unknown (usually elided by extractgraph) */
18   int n_movfeats;
19   MovFeat *movfeats; /* [0] is fixed */
20 };
21
22 struct MovFeat {
23   Segment *segment;
24   const char *movfeat; /* 0 if fixed */
25   int n_positions;
26 };
27
28 struct EdgeEnd {
29   EdgeEnd *back, *next; /* other ends at same side of same node */
30   Edge *edge; /* edge->ends[end].edge==edge */
31   int end; /* edge->ends[end].edge==end */
32   NodeSide *node;
33 };
34
35 struct Edge {
36   double distance;
37   MovFeat *subseg;
38   int movpos; /* 0 if fixed */
39   EdgeEnd ends[2];
40 };
41
42 struct NodeSide {
43   Node *node; /* node->edges[side].node==node */
44   int side; /* node->edges[side].side==side */
45   EdgeEnd *head, *tail;
46 };
47
48 struct Node {
49   Node *back, *next;
50   NodeSide sides[2];
51 };
52
53 struct NodeList {
54   Node *head, *tail;
55 };
56
57 extern NodeList all_nodes;
58
59
60 #endif /*GRAPH_DATA_H*/