chiark / gitweb /
do not regard a train as satisfying detection at a location if the movposcomb is...
authorian <ian>
Mon, 5 May 2008 13:21:20 +0000 (13:21 +0000)
committerian <ian>
Mon, 5 May 2008 13:21:20 +0000 (13:21 +0000)
hostside/resolve.c

index 7fdd39d4257fcd59a41c95d267ce0aeb51e9101a..7a35f99f05d513107695197fb6bc8d91a3aa8123 100644 (file)
 static int resmain_getmovpos(TrackLocation *t, TrackAdvanceContext *c,
                             MovPosComb *use_io) {
   Segment *d= t->seg;
+  const char *pn= d->i->pname;
 
   if (d->home && d->home->resolution == RR_H) {
     d->tr_backwards= d->ho_backwards;
     *use_io= 0; /* a bit kludgey */
+    oprintf(DUPO("resolving") " resmain  getmovpos %s H\n", pn);
   } else if (d->owner) {
     d->tr_backwards ^= d->owner->backwards;
     *use_io= d->movposcomb;
+    oprintf(DUPO("resolving") " resmain  getmovpos %s E %u\n", pn, *use_io);
   } else {
     *use_io= -1;
+    oprintf(DUPO("resolving") " resmain  getmovpos %s N -1\n", pn);
   }
   return 0;
 }
@@ -202,14 +206,15 @@ static int resolve_complete_main(void) {
     FOR_SEGMENT(d,NOOP,NOOP) { /* calculate U */
       unsigned updated= 0;
 
-#define ADDTO_U_EH(homeowner,HH_HE,string)                     \
-      if (d->homeowner && d->homeowner->resolution == HH_HE) { \
+#define ADDTO_U_EH(homeowner,HH_HE,string)                             \
+      if (d->homeowner && d->homeowner->resolution == HH_HE) {         \
        oprintf(DUPO("resolving") "  covered %s " string " %s\n",       \
-               di->pname, d->homeowner->pname);                \
-       updated++;                                              \
+               di->pname, d->homeowner->pname);                        \
+       updated++;                                                      \
       }
       ADDTO_U_EH(home,  RR_H, "at-home");
-      ADDTO_U_EH(owner, RR_E, "as-expected");
+      if (d->movposcomb >= 0)
+       ADDTO_U_EH(owner, RR_E, "as-expected");
 
       assert(updated<=1);
       d->iselem_u= updated;
@@ -320,8 +325,6 @@ static int resolve_complete_main(void) {
     }
   }
     
-  if (problems) return problems;
-
   TrackAdvanceContext tac;
   MovPosComb target;
   tac.getmovpos= resmain_getmovpos;
@@ -385,7 +388,7 @@ static int findends_getmovpos(TrackLocation *t, TrackAdvanceContext *c,
     oprintf(DUPO("resolving") " ends  getmovpos %s fails\n", pn);
     return -1;
   }
-//  oprintf(DUPO("resolving") " ends  getmovpos %s -> %d\n", pn, *use_io);
+  oprintf(DUPO("resolving") " ends  getmovpos %s -> %d\n", pn, *use_io);
   return 0;
 }