3 /* The output from the layout processing system to the control
4 * software, describing the layout and the trains, is a data structure
5 * as described in this header file, in <name-of-layout>.layout-data.o
6 * (where <name-of-layout> is currently `ours').
8 * Alternatively, <name-of-layout>.redacted.forsafety contains data in
9 * the form described at the top of redactgraph.c.
15 /*========== basic types etc. ==========*/
18 typedef int SegmentNum;
19 typedef long MovPosComb;
21 typedef int BoardObject;
24 typedef short SegmentNumInMap;
29 /* must also add new entries to movpos.c:methodinfos */
32 /*========== data from config files and layout cad/cam ==========*/
35 unsigned next_backwards:1;
44 const BoardObject *boob;
50 SegmentLinkInfo backwards, forwards;
55 unsigned invertible:1;
57 const MovFeatInfo *movfeats;
58 MovPosComb n_poscombs;
59 const SegPosCombInfo *poscombs;
60 BoardObject sense, invert;
63 /* This data array has no sentinel member. Use the info_nsegments
64 * constant. Alternatively, it is legal to sed out everything from
65 * <name-of-layout>.layout-data.c from the first #include onwards, and
66 * this will give a definition of NUM_SEGMENTS.
69 extern const SegmentNum info_nsegments;
70 extern const SegmentInfo info_segments[];
71 extern const SegmentNumInMap info_segmentmap[];
72 extern const int info_segmentmaplen;
74 extern const BoardObject info_maxreverse; /* max. reverse + 1 */
76 #define NOTA(thing) (-1)
77 #define SOMEP(x) ((x) >= 0)
79 #endif /*LAYOUT_DATA_H*/