/* * is there value 'val' in array or not ? */ static bool checkcondition_str(void *checkval, ITEM * val) { WordEntry *StopLow = ((CHKVAL *) checkval)->arrb; WordEntry *StopHigh = ((CHKVAL *) checkval)->arre; WordEntry *StopMiddle; int difference; /* Loop invariant: StopLow <= val < StopHigh */ while (StopLow < StopHigh) { StopMiddle = StopLow + (StopHigh - StopLow) / 2; difference = ValCompare((CHKVAL *) checkval, StopMiddle, val); if (difference == 0) return (val->weight && StopMiddle->haspos) ? checkclass_str((CHKVAL *) checkval, StopMiddle, val) : true; else if (difference < 0) StopLow = StopMiddle + 1; else StopHigh = StopMiddle; } return (false); }
CompareRel CompareValHelp(const SymbolicVal &v1, const SymbolicVal &v2, MapObject<SymbolicVal,SymbolicBound>* f) { CompareRel r = REL_UNKNOWN; if (++comparetime < COMPARE_MAX) r = ValCompare(f)(v1,v2); if (DebugCompareVal()) std::cerr << v1.toString() << RelToString(r) << v2.toString() << " under " << f << std::endl; return r; }