return $p;
}
+sub so_segnum ($) {
+ return sprintf "s%s", $_[0];
+}
+
sub writeout () {
my (@segs,$segn,$seg,$segr,$pt,$ptv, $delim);
my ($comb,$pi,$feat,$featr,$end,$boob);
"#define NUM_SEGMENTS %s\n\n".
"#include \"layout-data.h\"\n\n",
scalar @segs);
+
+ my ($segnum);
+ $segnum= 0;
+ foreach $seg (@segs) {
+ o(sprintf "#define s%-4s %4d\n", $seg, $segnum);
+ $segnum++;
+ }
+ o("\n");
+
foreach $seg (@segs) {
$segr= $segs{$seg};
if (defined $nodeotherside) {
$otherseg= $nodeotherside->{Seg};
$otherbackrelus= $nodeotherside->{End} ^ $end ^ 1;
- o(sprintf "/*%4s.%d %-5s*/ %d,%3d",
+ o(sprintf "/*%4s.%d*/ %d,%4s",
$node,$side,
- ($otherbackrelus?'-':' ').$otherseg,
$otherbackrelus,
- $segs{$otherseg}{Num});
+ so_segnum($otherseg));
} else {
o(sprintf "/*%5s.%d*/ 0,NOTA(Segment)",
$node,$side);
} @$inter;
}
+ my (@sensemap,$sensenum,$i);
o("const SegmentNum info_nsegments=NUM_SEGMENTS;\n");
o("const SegmentInfo info_segments[NUM_SEGMENTS]= {");
- my (@sensemap,$segnum,$sensenum,$i);
$delim= '';
$segnum= 0;
foreach $seg (@segs) {
$segr= $segs{$seg};
o("$delim\n");
- o(sprintf " { %-6s%d,%2d,%-8s%d,%-9s%-6s,%-7s",
+ o(sprintf " { %-7s%d,%2d,%-9s%d,%-10s%-6s,%-7s",
"\"$seg\",",$segr->{Inv},
$segr->{FeatCount}, ($segr->{FeatCount} ? "mfi_$seg," : '0,'),
$segr->{Posns}, "spci_$seg,",
so_objboob('reverse',1, $segr->{Inv} ? $segr : undef).',');
$ourinter= $segr->{Inter};
if (defined $ourinter->{Seg}) {
- o(sprintf "%2d/*%s*/,0%o", $segs{$ourinter->{Seg}}{Num},
- $ourinter->{Seg}, $ourinter->{Map});
+ o(sprintf "%5s,0%o", so_segnum($ourinter->{Seg}),
+ $ourinter->{Map});
} else {
o(" -1");
}
o(" }");
$delim= ',';
- $sensemap[$sensenum]= $segnum++;
+ $sensemap[$sensenum]= $seg;
+ $segnum++;
}
o("\n};\n");
o("const BoardObject info_maxreverse= $maxreverseobjnum;\n");
o(!$i ? ' ' :
!($i % 12) ? ",\n " :
",");
- o(defined($seg) ? sprintf("%4d",$seg) : ' u');
+ o(defined($seg) ? sprintf("%4s",so_segnum($seg)) : ' u');
$i++;
}
o("\n};\n".