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
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list