Changeset: 6af3633de353 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6af3633de353 Modified Files: gdk/gdk_select.c Branch: default Log Message:
Cleanup, no real code changes.
diffs (truncated from 412 to 300 lines):
diff --git a/gdk/gdk_select.c b/gdk/gdk_select.c
--- a/gdk/gdk_select.c
+++ b/gdk/gdk_select.c
@@ -179,110 +179,157 @@ BAT_hashselect(BAT *b, BAT *s, BAT *bn,
} \
} while (0)
-#define addresult(I) {\
- if( cnt == lim ){ \
- BATextend(bn, BATcount( b));\
- lim = BATcapacity(bn); \
- dst = (oid*) Tloc(bn, bn->U->first);\
- } \
- (dst)[cnt++] = I;\
-}
+#define LT(a, b) ((a) < (b))
+#define LE(a, b) ((a) <= (b))
+#define GT(a, b) ((a) > (b))
+#define GE(a, b) ((a) >= (b))
-#define SCANLOOPCAND5(TYPE,OP1,OP2,OP3,OP4)\
- do { TYPE *src = (TYPE*) Tloc(b, b->U->first);\
- oid *dst = (oid*) Tloc(bn, bn->U->first);\
- BUN lim = BATcapacity(bn); \
- BUN r;\
- if (equi){\
- assert(li && hi);\
- assert(!anti);\
- for ((i) = (p); (i) < (q); (i)++){ \
- r = (BUN) (*candlist++ - off) ;\
- if ( (src)[r] == *(TYPE*) tl ) \
- addresult(r);\
- }\
- } else if (anti){\
- if ( nil == NULL) \
- for ((i) = (p); (i) < (q); (i)++) {\
- r = (BUN) (*candlist++ - off) ;\
- if ( ((lval && ( *(TYPE*) tl OP1 (src)[r])) )
||\
- (hval && ( *(TYPE*) th OP2 (src)[r])) )\
- addresult(r);\
- } else \
- for ((i) = (p); (i) < (q); (i)++) {\
- r = (BUN) (*candlist++ - off) ;\
- if ( ((lval && ( *(TYPE*) tl OP1 (src)[r]) ) ||\
- (hval && ( *(TYPE*) th OP2 (src)[r]) )))\
- if ( (src)[r] != TYPE##_nil)
addresult(r); \
- }\
- } else {\
- if ( nil == NULL) \
- for ((i) = (p); (i) < (q); (i)++) {\
- r = (BUN) (*candlist++ - off) ;\
- if ( (!lval || ( *(TYPE*) tl OP3 (src)[r] )) &&
\
- (!hval || ( *(TYPE*) th OP4 (src)[r] )) ) \
- addresult(r);\
- } else \
- for ((i) = (p); (i) < (q); (i)++) {\
- r = (BUN) (*candlist++ - off) ;\
- if ( (!lval || ( *(TYPE*) tl OP3 (src)[r] )) &&
\
- (!hval || ( *(TYPE*) th OP4 (src)[r] )) ) \
- if ( (src)[r] != TYPE##_nil)
addresult(r); \
- }\
- }\
- BATsetcount(bn,cnt);\
- } while (0);
+#define addresult(I) \
+ do { \
+ if (cnt == lim) { \
+ BATextend(bn, BATcount(b)); \
+ lim = BATcapacity(bn); \
+ dst = (oid*) Tloc(bn, bn->U->first); \
+ } \
+ dst[cnt++] = I; \
+ } while (0)
-#define SCANLOOPCAND(TYPE) \
- if ( li && hi ) { SCANLOOPCAND5(TYPE,>,<,<=,>=) } \
- else if (li ) {SCANLOOPCAND5(TYPE,>,<=,<=,>) } \
- else if (hi ) {SCANLOOPCAND5(TYPE,>=,<,<,>=) } \
- else {SCANLOOPCAND5(TYPE,>=,<=,<,>) }
+#define SCANLOOPCAND5(TYPE, OP1, OP2) \
+ do { \
+ TYPE *src = (TYPE *) Tloc(b, b->U->first); \
+ oid *dst = (oid *) Tloc(bn, bn->U->first); \
+ BUN lim = BATcapacity(bn); \
+ BUN r; \
+ if (equi) { \
+ assert(li && hi); \
+ assert(!anti); \
+ for (i = p; i < q; i++) { \
+ r = (BUN) (*candlist++ - off); \
+ if (src[r] == *(TYPE *) tl) \
+ addresult(r); \
+ } \
+ } else if (anti) { \
+ if (nil == NULL) { \
+ for (i = p; i < q; i++) { \
+ r = (BUN) (*candlist++ - off) ; \
+ if ((lval && \
+ OP1(*(TYPE *) tl, src[r])) || \
+ (hval && \
+ OP2(*(TYPE *) th, src[r]))) \
+ addresult(r); \
+ } \
+ } else { \
+ for (i = p; i < q; i++) { \
+ r = (BUN) (*candlist++ - off) ; \
+ if (((lval && \
+ OP1(*(TYPE *) tl, src[r])) || \
+ (hval && \
+ OP2(*(TYPE *) th, src[r]))) && \
+ src[r] != TYPE##_nil) \
+ addresult(r); \
+ } \
+ } \
+ } else { \
+ if (nil == NULL) { \
+ for (i = p; i < q; i++) { \
+ r = (BUN) (*candlist++ - off) ; \
+ if ((!lval || \
+ !OP1(*(TYPE *) tl, src[r])) && \
+ (!hval || \
+ !OP2(*(TYPE *) th, src[r]))) \
+ addresult(r); \
+ } \
+ } else { \
+ for (i = p; i < q; i++) { \
+ r = (BUN) (*candlist++ - off) ; \
+ if ((!lval || \
+ !OP1(*(TYPE *) tl, src[r])) && \
+ (!hval || \
+ !OP2(*(TYPE *) th, src[r])) && \
+ src[r] != TYPE##_nil) \
+ addresult(r); \
+ } \
+ } \
+ } \
+ BATsetcount(bn,cnt); \
+ } while (0)
+#define SCANLOOPCAND(TYPE) \
+ do { \
+ if (li && hi) \
+ SCANLOOPCAND5(TYPE, GT, LT); \
+ else if (li) \
+ SCANLOOPCAND5(TYPE, GT, LE); \
+ else if (hi) \
+ SCANLOOPCAND5(TYPE, GE, LT); \
+ else \
+ SCANLOOPCAND5(TYPE, GE, LE); \
+ } while (0)
-#define SCANLOOP5(TYPE,OP1,OP2,OP3,OP4)\
- do { TYPE *src = (TYPE*) Tloc(b, b->U->first);\
- oid *dst = (oid*) Tloc(bn, bn->U->first);\
- BUN lim = BATcapacity(bn); \
- if (equi){\
- assert(li && hi);\
- assert(!anti);\
- for ((i) = (p); (i) < (q); (i)++) \
- if ( (src)[i] == *(TYPE*) tl ) \
- addresult(i); \
- } else if (anti){\
- if ( nil == NULL) \
- for ((i) = (p); (i) < (q); (i)++) {\
- if ( ((lval && ( *(TYPE*) tl OP1 (src)[i])) )
||\
- (hval && ( *(TYPE*) th OP2 (src)[i])) )\
- addresult(i); \
- } else \
- for ((i) = (p); (i) < (q); (i)++) {\
- if ( ((lval && ( *(TYPE*) tl OP1 (src)[i]) ) ||\
- (hval && ( *(TYPE*) th OP2 (src)[i]) )))\
- if ( (src)[i] != TYPE##_nil)
addresult(i); \
- }\
- } else {\
- if ( nil == NULL) \
- for ((i) = (p); (i) < (q); (i)++) {\
- if ( (!lval || ( *(TYPE*) tl OP3 (src)[i] )) &&
\
- (!hval || ( *(TYPE*) th OP4 (src)[i] )) ) \
- addresult(i); \
- } else \
- for ((i) = (p); (i) < (q); (i)++) {\
- if ( (!lval || ( *(TYPE*) tl OP3 (src)[i] )) &&
\
- (!hval || ( *(TYPE*) th OP4 (src)[i] )) ) \
- if ( (src)[i] != TYPE##_nil)
addresult(i); \
- }\
- }\
- BATsetcount(bn,cnt);\
- } while (0);
+#define SCANLOOP5(TYPE, OP1, OP2) \
+ do { \
+ TYPE *src = (TYPE *) Tloc(b, b->U->first); \
+ oid *dst = (oid *) Tloc(bn, bn->U->first); \
+ BUN lim = BATcapacity(bn); \
+ if (equi) { \
+ assert(li && hi); \
+ assert(!anti); \
+ for (i = p; i < q; i++) \
+ if (src[i] == *(TYPE *) tl) \
+ addresult(i); \
+ } else if (anti) { \
+ if (nil == NULL) { \
+ for (i = p; i < q; i++) { \
+ if ((lval && \
+ OP1(*(TYPE *) tl, src[i])) || \
+ (hval && \
+ OP2(*(TYPE *) th, src[i]))) \
+ addresult(i); \
+ } \
+ } else { \
+ for (i = p; i < q; i++) { \
+ if (((lval && \
+ OP1(*(TYPE *) tl, src[i])) || \
+ (hval && \
+ OP2(*(TYPE *) th, src[i]))) && \
+ src[i] != TYPE##_nil) \
+ addresult(i); \
+ } \
+ } \
+ } else { \
+ if (nil == NULL) { \
+ for (i = p; i < q; i++) { \
+ if ((!lval || \
+ !OP1(*(TYPE *) tl, src[i])) && \
+ (!hval || \
+ !OP2(*(TYPE *) th, src[i]))) \
+ addresult(i); \
+ } \
+ } else { \
+ for (i = p; i < q; i++) { \
+ if ((!lval || \
+ !OP1(*(TYPE *) tl, src[i])) && \
+ (!hval || \
+ !OP2(*(TYPE *) th, src[i])) && \
+ src[i] != TYPE##_nil) \
+ addresult(i); \
+ } \
+ } \
+ } \
+ BATsetcount(bn,cnt); \
+ } while (0)
-#define SCANLOOP(TYPE) \
- if ( li && hi ) { SCANLOOP5(TYPE,>,<,<=,>=) } \
- else if (li ) {SCANLOOP5(TYPE,>,<=,<=,>) } \
- else if (hi ) {SCANLOOP5(TYPE,>=,<,<,>=) } \
- else {SCANLOOP5(TYPE,>=,<=,<,>) }
+#define SCANLOOP(TYPE) \
+ do { \
+ if (li && hi) \
+ SCANLOOP5(TYPE, GT, LT); \
+ else if (li) \
+ SCANLOOP5(TYPE, GT, LE); \
+ else if (hi) \
+ SCANLOOP5(TYPE, GE, LT); \
+ else \
+ SCANLOOP5(TYPE, GE, LE); \
+ } while (0)
static BAT *
BAT_scanselect(BAT *b, BAT *s, BAT *bn, const void *tl, const void *th,
@@ -325,34 +372,48 @@ BAT_scanselect(BAT *b, BAT *s, BAT *bn,
/* should we return an error if p > BUNfirst(s) || q <
* BUNlast(s) (i.e. s not fully used)? */
candlist = (const oid *) Tloc(s, p);
- switch(ATOMstorage(b->ttype) ){
- case TYPE_bte: SCANLOOPCAND(bte); break;
- case TYPE_sht: SCANLOOPCAND(sht); break;
- case TYPE_int: SCANLOOPCAND(int); break;
- case TYPE_flt: SCANLOOPCAND(flt); break;
- case TYPE_dbl: SCANLOOPCAND(dbl); break;
- case TYPE_lng: SCANLOOPCAND(lng); break;
- default:
+ switch (ATOMstorage(b->ttype)) {
+ case TYPE_bte:
+ SCANLOOPCAND(bte);
+ break;
+ case TYPE_sht:
+ SCANLOOPCAND(sht);
+ break;
+ case TYPE_int:
+ SCANLOOPCAND(int);
+ break;
+ case TYPE_flt:
+ SCANLOOPCAND(flt);
+ break;
+ case TYPE_dbl:
+ SCANLOOPCAND(dbl);
+ break;
+ case TYPE_lng:
+ SCANLOOPCAND(lng);
+ break;
+ default:
if (equi) {
assert(li && hi);
assert(!anti);
candscanloop((*cmp)(tl, v) == 0);
} else if (anti) {
- candscanloop((nil == NULL || (*cmp)(v, nil) !=
0) &&
- ((lval &&
- ((c = (*cmp)(tl, v)) > 0 ||
_______________________________________________
checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list
