Changeset: 4905e134e9ee for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/4905e134e9ee Modified Files: gdk/gdk_bat.c gdk/gdk_batop.c gdk/gdk_calc.c gdk/gdk_calc_private.h Branch: nilmask Log Message:
Checkpoint: implementing operations on unsigned types. diffs (truncated from 2512 to 300 lines): diff --git a/gdk/gdk_bat.c b/gdk/gdk_bat.c --- a/gdk/gdk_bat.c +++ b/gdk/gdk_bat.c @@ -2001,14 +2001,17 @@ BUNfnd(BAT *b, const void *v) } switch (ATOMbasetype(bi.type)) { case TYPE_bte: + case TYPE_ubte: HASHloop_bte(bi, b->thash, r, v) break; break; case TYPE_sht: + case TYPE_usht: HASHloop_sht(bi, b->thash, r, v) break; break; case TYPE_int: + case TYPE_uint: HASHloop_int(bi, b->thash, r, v) break; break; @@ -2021,11 +2024,13 @@ BUNfnd(BAT *b, const void *v) break; break; case TYPE_lng: + case TYPE_ulng: HASHloop_lng(bi, b->thash, r, v) break; break; #ifdef HAVE_HGE case TYPE_hge: + case TYPE_uhge: HASHloop_hge(bi, b->thash, r, v) break; break; diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c --- a/gdk/gdk_batop.c +++ b/gdk/gdk_batop.c @@ -2031,19 +2031,34 @@ BATordered(BAT *b) case TYPE_bte: BAT_ORDERED(bte); break; + case TYPE_ubte: + BAT_ORDERED(ubte); + break; case TYPE_sht: BAT_ORDERED(sht); break; + case TYPE_usht: + BAT_ORDERED(usht); + break; case TYPE_int: BAT_ORDERED(int); break; + case TYPE_uint: + BAT_ORDERED(uint); + break; case TYPE_lng: BAT_ORDERED(lng); break; + case TYPE_ulng: + BAT_ORDERED(ulng); + break; #ifdef HAVE_HGE case TYPE_hge: BAT_ORDERED(hge); break; + case TYPE_uhge: + BAT_ORDERED(uhge); + break; #endif case TYPE_flt: BAT_ORDERED_FP(flt); @@ -2207,19 +2222,34 @@ BATordered_rev(BAT *b) case TYPE_bte: BAT_REVORDERED(bte); break; + case TYPE_ubte: + BAT_REVORDERED(ubte); + break; case TYPE_sht: BAT_REVORDERED(sht); break; + case TYPE_usht: + BAT_REVORDERED(usht); + break; case TYPE_int: BAT_REVORDERED(int); break; + case TYPE_uint: + BAT_REVORDERED(uint); + break; case TYPE_lng: BAT_REVORDERED(lng); break; + case TYPE_ulng: + BAT_REVORDERED(ulng); + break; #ifdef HAVE_HGE case TYPE_hge: BAT_REVORDERED(hge); break; + case TYPE_uhge: + BAT_REVORDERED(uhge); + break; #endif case TYPE_flt: BAT_REVORDERED_FP(flt); @@ -2838,19 +2868,23 @@ BATconstant(oid hseq, int tailtype, cons memset(p, 0x00, 4 * ((n + 31) / 32)); break; case TYPE_bte: + case TYPE_ubte: memset(p, *(bte*)v, n); break; case TYPE_sht: + case TYPE_usht: for (i = 0; i < n; i++) ((sht *) p)[i] = *(sht *) v; break; case TYPE_int: + case TYPE_uint: case TYPE_flt: assert(sizeof(int) == sizeof(flt)); for (i = 0; i < n; i++) ((int *) p)[i] = *(int *) v; break; case TYPE_lng: + case TYPE_ulng: case TYPE_dbl: assert(sizeof(lng) == sizeof(dbl)); for (i = 0; i < n; i++) @@ -2858,6 +2892,7 @@ BATconstant(oid hseq, int tailtype, cons break; #ifdef HAVE_HGE case TYPE_hge: + case TYPE_uhge: for (i = 0; i < n; i++) ((hge *) p)[i] = *(hge *) v; break; diff --git a/gdk/gdk_calc.c b/gdk/gdk_calc.c --- a/gdk/gdk_calc.c +++ b/gdk/gdk_calc.c @@ -55,13 +55,11 @@ BATcalcnot(BAT *b, BAT *s) bhseqbase = b->hseqbase; canditer_init(&ci, b, s); - if (ci.ncand == 0) - return BATconstant(ci.hseq, b->ttype, - ATOMnilptr(b->ttype), ci.ncand, TRANSIENT); - bn = COLnew(ci.hseq, b->ttype, ci.ncand, TRANSIENT); if (bn == NULL) return NULL; + if (ci.ncand == 0) + return bn; BATiter bi = bat_iterator(b); switch (ATOMbasetype(bi.type)) { @@ -102,19 +100,34 @@ BATcalcnot(BAT *b, BAT *s) UNARY_2TYPE_FUNC_nilcheck(bte, bte, NOT, ON_OVERFLOW1(bte, "NOT")); } break; + case TYPE_ubte: + UNARY_2TYPE_FUNC_nonil(ubte, ubte, NOT); + break; case TYPE_sht: UNARY_2TYPE_FUNC_nilcheck(sht, sht, NOT, ON_OVERFLOW1(sht, "NOT")); break; + case TYPE_usht: + UNARY_2TYPE_FUNC_nonil(usht, usht, NOT); + break; case TYPE_int: UNARY_2TYPE_FUNC_nilcheck(int, int, NOT, ON_OVERFLOW1(int, "NOT")); break; + case TYPE_uint: + UNARY_2TYPE_FUNC_nonil(uint, uint, NOT); + break; case TYPE_lng: UNARY_2TYPE_FUNC_nilcheck(lng, lng, NOT, ON_OVERFLOW1(lng, "NOT")); break; + case TYPE_ulng: + UNARY_2TYPE_FUNC_nonil(ulng, ulng, NOT); + break; #ifdef HAVE_HGE case TYPE_hge: UNARY_2TYPE_FUNC_nilcheck(hge, hge, NOT, ON_OVERFLOW1(hge, "NOT")); break; + case TYPE_uhge: + UNARY_2TYPE_FUNC_nonil(uhge, uhge, NOT); + break; #endif default: GDKerror("type %s not supported.\n", ATOMname(bi.type)); @@ -166,6 +179,9 @@ VARcalcnot(ValPtr ret, const ValRecord * } } break; + case TYPE_ubte: + ret->val.ubtval = ~v->val.ubtval; + break; case TYPE_sht: if (is_sht_nil(v->val.shval)) ret->val.shval = sht_nil; @@ -178,6 +194,9 @@ VARcalcnot(ValPtr ret, const ValRecord * } } break; + case TYPE_usht: + ret->val.ushval = ~v->val.ushval; + break; case TYPE_int: if (is_int_nil(v->val.ival)) ret->val.ival = int_nil; @@ -190,6 +209,9 @@ VARcalcnot(ValPtr ret, const ValRecord * } } break; + case TYPE_uint: + ret->val.uival = ~v->val.uival; + break; case TYPE_lng: if (is_lng_nil(v->val.lval)) ret->val.lval = lng_nil; @@ -202,6 +224,9 @@ VARcalcnot(ValPtr ret, const ValRecord * } } break; + case TYPE_ulng: + ret->val.ulval = ~v->val.ulval; + break; #ifdef HAVE_HGE case TYPE_hge: if (is_hge_nil(v->val.hval)) @@ -216,6 +241,9 @@ VARcalcnot(ValPtr ret, const ValRecord * } } break; + case TYPE_uhge: + ret->val.uhval = ~v->val.uhval; + break; #endif default: GDKerror("bad input type %s.\n", ATOMname(v->vtype)); @@ -248,13 +276,11 @@ BATcalcnegate(BAT *b, BAT *s) bhseqbase = b->hseqbase; canditer_init(&ci, b, s); - if (ci.ncand == 0) - return BATconstant(ci.hseq, b->ttype, - ATOMnilptr(b->ttype), ci.ncand, TRANSIENT); - bn = COLnew(ci.hseq, b->ttype, ci.ncand, TRANSIENT); if (bn == NULL) return NULL; + if (ci.ncand) + return bn; BATiter bi = bat_iterator(b); switch (ATOMbasetype(bi.type)) { @@ -386,13 +412,11 @@ BATcalcabsolute(BAT *b, BAT *s) bhseqbase = b->hseqbase; canditer_init(&ci, b, s); - if (ci.ncand == 0) - return BATconstant(ci.hseq, b->ttype, - ATOMnilptr(b->ttype), ci.ncand, TRANSIENT); - bn = COLnew(ci.hseq, b->ttype, ci.ncand, TRANSIENT); if (bn == NULL) return NULL; + if (ci.ncand == 0) + return bn; BATiter bi = bat_iterator(b); switch (ATOMbasetype(bi.type)) { @@ -419,6 +443,16 @@ BATcalcabsolute(BAT *b, BAT *s) case TYPE_dbl: UNARY_2TYPE_FUNC(dbl, dbl, fabs); break; + case TYPE_ubte: + case TYPE_usht: + case TYPE_uint: + case TYPE_ulng: +#ifdef HAVE_HGE + case TYPE_uhge: +#endif + if (BATappend(bn, b, s, false) != GDK_SUCCEED) + goto bailout; + break; default: GDKerror("bad input type %s.\n", ATOMname(bi.type)); goto bailout; @@ -497,6 +531,15 @@ VARcalcabsolute(ValPtr ret, const ValRec else ret->val.dval = fabs(v->val.dval); break; + case TYPE_ubte: + case TYPE_usht: + case TYPE_uint: _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org