Changeset: 4e624df920a2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4e624df920a2 Modified Files: gdk/gdk.h gdk/gdk_atoms.c gdk/gdk_atoms.h Branch: compressedcandidates Log Message:
more TYPE_msk related code diffs (156 lines): diff --git a/gdk/gdk.h b/gdk/gdk.h --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -107,6 +107,8 @@ * Longs: the C @strong{long long} type (64-bit integers). * @item hge: * "huge" integers: the GCC @strong{__int128} type (128-bit integers). + * @item msk: + * mask: an 8-bit unsigned char bit-vector type * @item str: * UTF-8 strings (Unicode). A zero-terminated byte sequence. * @item bat: @@ -610,6 +612,7 @@ typedef uint64_t BUN8type; #define BUN8_NONE ((BUN8type) LL_CONSTANT(0xFFFFFFFFFFFFFFFF)) #endif +#define SIZEOF_MSK 1 /* * @- Checking and Error definitions: @@ -723,6 +726,7 @@ typedef struct { flt fval; ptr pval; bat bval; + msk mval; str sval; dbl dval; lng lval; @@ -2373,6 +2377,7 @@ VALptr(const ValRecord *v) #ifdef HAVE_HGE case TYPE_hge: return (const void *) &v->val.hval; #endif + case TYPE_msk: return (const void *) &v->val.mval; case TYPE_str: return (const void *) v->val.sval; default: return (const void *) v->val.pval; } @@ -2781,6 +2786,7 @@ gdk_export void ALIGNsetT(BAT *b1, BAT * #ifdef HAVE_HGE #define HASHloop_hge(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, hge) #endif +#define HASHloop_msk(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, flt) #define HASHloop_flt(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, flt) #define HASHloop_dbl(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, dbl) diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c --- a/gdk/gdk_atoms.c +++ b/gdk/gdk_atoms.c @@ -61,6 +61,12 @@ lngCmp(const lng *l, const lng *r) return simple_CMP(l, r, lng); } +static int +mskCmp(const msk *l, const msk *r) +{ + return simple_CMP(l, r, lng); +} + #ifdef HAVE_HGE static int hgeCmp(const hge *l, const hge *r) @@ -103,6 +109,14 @@ lngHash(const lng *v) return (BUN) mix_lng(*(const ulng *) v); } +static BUN +mskHash(const msk *v) +{ + /* not sure what is the hash of a mask bit-vector */ + (void) v; + return (BUN) 0; +} + #ifdef HAVE_HGE static BUN hgeHash(const hge *v) @@ -303,6 +317,8 @@ ATOMcmp(int t, const void *l, const void #endif case TYPE_dbl: return simple_CMP(l, r, dbl); + case TYPE_msk: + return simple_CMP(l, r, msk); default: return (l == r) ? 0 : atom_CMP(l, r, t); } @@ -1892,7 +1908,7 @@ OIDtoStr(char **dst, size_t *len, const /* MSK operations */ ssize_t -mskFromStr(const char *src, size_t *len, oid **dst) +mskFromStr(const char *src, size_t *len, msk **dst) { (void) dst; (void) len; @@ -1902,7 +1918,7 @@ mskFromStr(const char *src, size_t *len, } ssize_t -mskToStr(str *dst, size_t *len, const oid *src) +mskToStr(str *dst, size_t *len, const msk *src) { (void) dst; (void) len; @@ -2166,10 +2182,10 @@ atomDesc BATatoms[MAXATOMS] = { (ptr) &msk_nil, /* atomNull */ (ssize_t (*)(const char *, size_t *, ptr *)) mskFromStr, /* atomFromStr */ (ssize_t (*)(str *, size_t *, const void *)) mskToStr, /* atomToStr */ - (void *(*)(void *, stream *, size_t)) intRead, /* atomRead */ - (gdk_return (*)(const void *, stream *, size_t)) intWrite, /* atomWrite */ - (int (*)(const void *, const void *)) intCmp, /* atomCmp */ - (BUN (*)(const void *)) intHash, /* atomHash */ + 0, /* atomRead */ + 0, /* atomWrite */ + (int (*)(const void *, const void *)) mskCmp, /* atomCmp */ + (BUN (*)(const void *)) mskHash, /* atomHash */ 0, /* atomFix */ 0, /* atomUnfix */ 0, /* atomPut */ diff --git a/gdk/gdk_atoms.h b/gdk/gdk_atoms.h --- a/gdk/gdk_atoms.h +++ b/gdk/gdk_atoms.h @@ -58,6 +58,7 @@ #endif #define fltStrlen 48 #define dblStrlen 96 +#define mskStrlen 8 /* * The system comes with the traditional atomic types: int (4 bytes), @@ -90,8 +91,8 @@ gdk_export ssize_t fltFromStr(const char gdk_export ssize_t fltToStr(str *dst, size_t *len, const flt *src); gdk_export ssize_t dblFromStr(const char *src, size_t *len, dbl **dst); gdk_export ssize_t dblToStr(str *dst, size_t *len, const dbl *src); -gdk_export ssize_t mskFromStr(const char *src, size_t *len, oid **dst); -gdk_export ssize_t mskToStr(str *dst, size_t *len, const oid *src); +gdk_export ssize_t mskFromStr(const char *src, size_t *len, msk **dst); +gdk_export ssize_t mskToStr(str *dst, size_t *len, const msk *src); gdk_export ssize_t GDKstrFromStr(unsigned char *dst, const unsigned char *src, ssize_t len); gdk_export ssize_t strFromStr(const char *src, size_t *len, str *dst); gdk_export BUN strHash(const char *s); @@ -124,6 +125,8 @@ gdk_export size_t escapedStr(char *dst, (((hge) 1) << 126)) #define GDK_hge_min (-GDK_hge_max-1) #endif +#define GDK_msk_max ((msk) UCHAR_MAX) +#define GDK_msk_min ((msk) 0) #define GDK_dbl_max ((dbl) DBL_MAX) #define GDK_dbl_min (-GDK_dbl_max) /* GDK_oid_max see below */ @@ -138,6 +141,7 @@ gdk_export const lng lng_nil; #ifdef HAVE_HGE gdk_export const hge hge_nil; #endif +gdk_export const msk msk_nil; gdk_export const oid oid_nil; gdk_export const char str_nil[2]; gdk_export const ptr ptr_nil; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list