X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?a=blobdiff_plain;f=pctb%2Fstructure.c;h=370892c2785b02fb26c9e2dbfe91f4a4f975c34c;hb=05700033bb05f67407798385699519a96da803c0;hp=fba7670a3b510e105dff978f1d21350928c0963f;hpb=8d6cf0f224b5df9866eba9350343067edcee78dd;p=ypp-sc-tools.db-test.git diff --git a/pctb/structure.c b/pctb/structure.c index fba7670..370892c 100644 --- a/pctb/structure.c +++ b/pctb/structure.c @@ -133,20 +133,23 @@ static void mustfail2(void) { #define REQUIRE_RECTANGLE(tlx,tly,brx,bry,ok) \ require_rectangle(tlx, tly, brx, bry, ok, __LINE__); -static void require_rectangle(int tlx, int tly, int brx, int bry, - const char *ok, int lineno) { +#define FOR_P_RECT(p,rect) \ + for ((p).x=(rr).tl.x; (p).x<=(rr).br.x; (p).x++) \ + for ((p).y=(rr).tl.y; (p).y<=(rr).br.y; (p).y++) + +static void require_rectangle_r(Rect rr, const char *ok, int lineno) { Point p; - for (p.x=tlx; p.x<=brx; p.x++) - for (p.y=tly; p.y<=bry; p.y++) { - int c= get_p(p); - MUST( strchr(ok,c), ({ - Rect rm={{tlx,tly},{brx,bry}}; - MI(lineno),MR(rm);MP(p);MS(ok); - })); - } + FOR_P_RECT(p,rr) { + int c= get_p(p); + MUST( strchr(ok,c), ({ + MI(lineno),MR(rr);MP(p);MS(ok); + })); + } } -static void require_rectangle_r(Rect rr, const char *ok, int lineno) { - require_rectangle(rr.tl.x,rr.tl.y, rr.br.x,rr.br.y, ok, lineno); +static void require_rectangle(int tlx, int tly, int brx, int bry, + const char *ok, int lineno) { + Rect rr= {{tlx,tly},{brx,bry}}; + require_rectangle_r(rr, ok, lineno); } static void debug_rect(const char *what, int whati, Rect rr) {