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

Reply via email to