void rangeTest(char *me, double imin, double imax) { double omin, omax; baneRange *range; int i; printf("input range (%g,%g) ---------------------\n", imin, imax); for (i=1; i<baneRangeLast; i++) { range = baneRangeNew(i); range->answer(&omin, &omax, imin, imax); printf("%s: range %s --> (%g,%g)\n", me, range->name, omin, omax); range = baneRangeNix(range); } }
baneRange * baneRangeNew(int type) { char me[]="baneRangeNew", err[BIFF_STRLEN]; baneRange *range = NULL; if (!AIR_IN_OP(baneRangeUnknown, type, baneRangeLast)) { sprintf(err, "%s: baneRange %d not valid", me, type); biffAdd(BANE, err); return NULL; } range = (baneRange *)calloc(1, sizeof(baneRange)); if (!range) { sprintf(err, "%s: couldn't allocate baneRange!", me); biffAdd(BANE, err); return NULL; } range->type = type; range->center = AIR_NAN; switch(type) { case baneRangePositive: sprintf(range->name, "positive"); range->answer = _baneRangePositive_Answer; break; case baneRangeNegative: sprintf(range->name, "negative"); range->answer = _baneRangeNegative_Answer; break; case baneRangeZeroCentered: sprintf(range->name, "zero-centered"); range->answer = _baneRangeZeroCentered_Answer; break; case baneRangeAnywhere: sprintf(range->name, "anywhere"); range->answer = _baneRangeAnywhere_Answer; break; default: sprintf(err, "%s: Sorry, baneRange %d not implemented", me, type); biffAdd(BANE, err); baneRangeNix(range); return NULL; } return range; }