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;
}
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;
}
}
- if (problems) return problems;
-
TrackAdvanceContext tac;
MovPosComb target;
tac.getmovpos= resmain_getmovpos;
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;
}