chiark / gitweb /
incorporate info about fixed segments
authorian <ian>
Wed, 28 May 2008 18:34:16 +0000 (18:34 +0000)
committerian <ian>
Wed, 28 May 2008 18:34:16 +0000 (18:34 +0000)
hostside/Makefile
hostside/gui-plan.c

index 7971012664c70e7bb107cf6c68085bec1cda5603..25443e1de23381d03db00fd240a543783c54fbfa 100644 (file)
@@ -52,6 +52,7 @@ topology-dump: topology-dump.o utils.o ../layout/ours.layout-data.o
 
 gui-plan-bot: gui-plan-%: gui-plan.o utils.o parseutils.o obc.o \
                 ../layout/ours.dgram-%.plandata.o \
+                ../layout/ours.layout-data.o \
                 __oop-read-copy.o -loop
                $(LINK) -L/usr/X11R6/lib -lXpm -lX11
 
index 92e17aa606293e86264efc29923c262d221d631a..de3f45b4ee25916ad85cb360bad85d299cff157c 100644 (file)
@@ -25,6 +25,7 @@ typedef int ErrorCode;
 #include "daemons.h"
 #include "dliste.h"
 #include "../layout/plan-data-format.h"
+#include "../layout/layout-data.h"
 
 #include <oop.h>
 #include <oop-read.h>
@@ -678,6 +679,35 @@ static void si_connected(ParseState *ps) {
     sockprintf("%s",mxi->remainpat);
   }
   sockprintf("\n");
+
+  /* set the fixed moveable features */
+  const SegmentInfo *segi;
+  const MovFeatInfo *mfi;
+  const PlanSegmentData *planseg;
+  const PlanSegmovfeatData *planfeat;
+  int segn, s, mfn, f;
+  
+  for (segn=0; segn<info_nsegments; segn++) {
+    segi= &info_segments[segn];
+    if (!segi->n_fixedmovfeats) continue;
+    for (s=0; s<NSEGMENTS; s++)
+      if (!strcmp(segi->pname, (planseg=&ui_plan_data.segments[s])->segname))
+       goto found_ld_seg;
+    die("layout data segment %s not found\n",segi->pname);
+  found_ld_seg:
+    for (mfn=0, mfi= segi->movfeats + segi->n_movfeats;
+        mfn < segi->n_fixedmovfeats;
+        mfn++, mfi++) {
+      for (f=1; f<planseg->n_movfeats; f++)
+       if (!strcmp(mfi->pname, (planfeat=&planseg->movfeats[f])->movfeatname))
+         goto found_ld_feat;
+      die("layout data movfeat %s/%s not found\n",segi->pname,mfi->pname);
+    found_ld_feat:
+      state[s].mfs[f].posn= mfi->posns;
+      if (debug) fprintf(debug,"fixed %s/%s=%d\n",
+                        segi->pname,mfi->pname,mfi->posns);
+    }
+  }
 }
 
 static void si_fatal(ParseState *ps) {