6 #include "../layout/layout-data.h"
8 static const char *mfkpnames[/*MovFeatKind*/]=
11 static void plink(const SegmentLinkInfo *p) {
13 if (!SOMEP(p->next)) { putchar('-'); return; }
14 if (p->next_backwards) putchar('-');
15 fputs(info_segments[p->next].pname,stdout);
18 const char *progname= "topology-dump";
20 void die_hook(void) { }
21 void die_vprintf_hook(const char *fmt, va_list al) { }
23 int main(int argc, char **argv) {
24 const SegmentInfo *segi;
25 const MovFeatInfo *mfi;
26 const SegPosCombInfo *spci;
29 if (argc!=1) badusage("no arguments permitted");
31 for (segn=0, segi=info_segments; segn<info_nsegments; segn++, segi++) {
32 printf("topology segment %s %d %d %c\n", segi->pname,
33 segi->n_movfeats, segi->n_poscombs, "ni"[segi->invertible]);
34 for (mfn=0, mfi=segi->movfeats; mfn<segi->n_movfeats; mfn++, mfi++) {
35 MovFeatKind k= mfi->kind;
36 printf("topology movfeat %s %s %d %d %s\n", segi->pname, mfi->pname,
37 mfi->posns, mfi->weight, mfkpnames[k]);
39 for (mfn=0; mfn<segi->n_fixedmovfeats; mfn++, mfi++) {
40 printf("topology movfeatfixed %s %s %d\n", segi->pname, mfi->pname,
43 for (posn=0, spci=segi->poscombs; posn<segi->n_poscombs; posn++, spci++) {
44 printf("topology movposcomb %s %s %d %d", segi->pname,
45 segi->n_poscombs>1 ? spci->pname : "-",
47 plink(&spci->link[1]);
48 plink(&spci->link[0]);