Changeset: b239ef124dd8 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b239ef124dd8
Added Files:
gdk/gdk.h
Removed Files:
gdk/gdk.mx
Modified Files:
configure.ag
gdk/Makefile.ag
Branch: Apr2012
Log Message:
Converted gdk.mx to gdk.h.
diffs (286 lines):
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -28,7 +28,7 @@ AC_CANONICAL_HOST
AC_CANONICAL_TARGET
dnl use tar-ustar since we have long (longer than 99 characters) file names
AM_INIT_AUTOMAKE([tar-ustar no-dist-gzip dist-bzip2])
-AC_CONFIG_SRCDIR([gdk/gdk.mx])
+AC_CONFIG_SRCDIR([gdk/gdk.h])
AM_CONFIG_HEADER([monetdb_config.h])
AC_SUBST([CONFIG_H], [monetdb_config.h])
diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag
--- a/gdk/Makefile.ag
+++ b/gdk/Makefile.ag
@@ -34,7 +34,7 @@ lib_gdk = {
gdk_scanselect_defs_str.mx \
gdk_scanselect_defs_fix.mx \
gdk_scanselect_defs_var.mx \
- gdk_scanselect.mx gdk.mx gdk_batop.mx \
+ gdk_scanselect.mx gdk.h gdk_batop.mx \
gdk_search.mx gdk_tm.c gdk_align.c gdk_bbp.mx \
gdk_heap.c gdk_setop.mx gdk_utils.mx gdk_atoms.mx \
gdk_qsort.mx gdk_ssort.mx gdk_storage.c gdk_bat.mx \
diff --git a/gdk/gdk.mx b/gdk/gdk.h
rename from gdk/gdk.mx
rename to gdk/gdk.h
--- a/gdk/gdk.mx
+++ b/gdk/gdk.h
@@ -1,25 +1,22 @@
-@/
-The contents of this file are subject to the MonetDB Public License
-Version 1.1 (the "License"); you may not use this file except in
-compliance with the License. You may obtain a copy of the License at
-http://www.monetdb.org/Legal/MonetDBLicense
+/*
+ * The contents of this file are subject to the MonetDB Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.monetdb.org/Legal/MonetDBLicense
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * The Original Code is the MonetDB Database System.
+ *
+ * The Initial Developer of the Original Code is CWI.
+ * Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
+ * Copyright August 2008-2012 MonetDB B.V.
+ * All Rights Reserved.
+ */
-Software distributed under the License is distributed on an "AS IS"
-basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-License for the specific language governing rights and limitations
-under the License.
-
-The Original Code is the MonetDB Database System.
-
-The Initial Developer of the Original Code is CWI.
-Portions created by CWI are Copyright (C) 1997-July 2008 CWI.
-Copyright August 2008-2012 MonetDB B.V.
-All Rights Reserved.
-@
-
-@f gdk
-
-@h
/*
* @t The Goblin Database Kernel
* @v Version 3.05
@@ -828,13 +825,13 @@ typedef struct {
bte type; /* type id. */
bte shift; /* log2 of bunwidth */
bit sorted; /* 0=false, 1=true; */
- unsigned int
+ unsigned int
varsized:1, /* varsized(>0) or fixedsized(0). */
key:2, /* duplicates allowed? */
- dense:1,
+ dense:1,
nonil:1, /* nonil isn't propchecked yet */
nil:1, /* nil is set when we found one nil (propcheck)
*/
- unused:2;
+ unused:2;
oid align; /* OID for sync alignment */
BUN nosorted_rev; /* position that proves sorted_rev==FALSE */
BUN nokey[2]; /* positions that prove key ==FALSE */
@@ -1418,7 +1415,7 @@ gdk_export BUN BUNfnd(BAT *b, ptr left);
* storage space, but could tolerate more padding). It would mostly
* work, only the sort routine and strPut/strLocate (which do not see
* the BAT header) extra parameters would be needed in their APIs.
- */
+ */
typedef unsigned short stridx_t;
#define SIZEOF_STRIDX_T SIZEOF_SHORT
#define GDK_VARSHIFT 3
@@ -1456,7 +1453,7 @@ typedef var_t stridx_t; /* TODO: should
#define BUNtail(bi,p) ((bi).b->tvarsized?BUNtvar(bi,p):BUNtloc(bi,p))
static inline BATiter
-bat_iterator(BAT *b)
+bat_iterator(BAT *b)
{
BATiter bi;
@@ -1764,8 +1761,8 @@ gdk_export int BATordered_rev(BAT *b);
gdk_export BAT *BATssort(BAT *b);
gdk_export BAT *BATssort_rev(BAT *b);
-gdk_export void GDKqsort(void *h, void *t, void *base, size_t n, int hs, int
ts, int tpe);
-gdk_export void GDKqsort_rev(void *h, void *t, void *base, size_t n, int hs,
int ts, int tpe);
+gdk_export void GDKqsort(void *h, void *t, void *base, size_t n, int hs, int
ts, int tpe);
+gdk_export void GDKqsort_rev(void *h, void *t, void *base, size_t n, int hs,
int ts, int tpe);
#define BAThordered(b) (((b)->htype == TYPE_void)?GDK_SORTED:(b)->hsorted)
#define BATtordered(b) (((b)->ttype == TYPE_void)?GDK_SORTED:(b)->tsorted)
@@ -2518,8 +2515,8 @@ static inline char *
Hpos(BATiter *bi, BUN p)
{
bi->hvid = bi->b->hseqbase;
- if (bi->hvid != oid_nil)
- bi->hvid += p - BUNfirst(bi->b);
+ if (bi->hvid != oid_nil)
+ bi->hvid += p - BUNfirst(bi->b);
return (char*)&bi->hvid;
}
@@ -2527,8 +2524,8 @@ static inline char *
Tpos(BATiter *bi, BUN p)
{
bi->tvid = bi->b->tseqbase;
- if (bi->tvid != oid_nil)
- bi->tvid += p - BUNfirst(bi->b);
+ if (bi->tvid != oid_nil)
+ bi->tvid += p - BUNfirst(bi->b);
return (char*)&bi->tvid;
}
@@ -2973,43 +2970,40 @@ gdk_export int ALIGNsetH(BAT *b1, BAT *b
* (HASHlooploc) or variable-sized (HASHloopvar).
*/
#define HASHlooploc(bi, h, hb, v) \
- for (hb = (h)->hash[HASHprobe((h), v)]; \
+ for (hb = (h)->hash[HASHprobe(h, v)]; \
hb != BUN_NONE; \
hb = (h)->link[hb]) \
if (ATOMcmp(h->type, v, BUNhloc(bi, hb)) == 0)
#define HASHloopvar(bi, h, hb, v) \
- for (hb = (h)->hash[HASHprobe((h), v)]; \
+ for (hb = (h)->hash[HASHprobe(h, v)]; \
hb != BUN_NONE; \
hb = (h)->link[hb]) \
if (ATOMcmp(h->type, v, BUNhvar(bi, hb)) == 0)
-@:hashloop(bit,bte,simple,bte,hloc)@
-@:hashloop(bte,bte,simple,bte,hloc)@
-@:hashloop(sht,sht,simple,sht,hloc)@
-@:hashloop(int,int,simple,int,hloc)@
+#define HASHloop_TYPE(bi, h, hb, v, TYPE) \
+ for (hb = (h)->hash[hash_##TYPE(h, v)]; \
+ hb != BUN_NONE; \
+ hb = (h)->link[hb]) \
+ if (simple_EQ(v, BUNhloc(bi, hb), TYPE))
-@:hashloop(oid,oid,simple,oid,hloc)@
-@:hashloop(wrd,wrd,simple,wrd,hloc)@
-@:hashloop(bat,int,simple,int,hloc)@
+#define HASHloop_bit(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, bte)
+#define HASHloop_bte(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, bte)
+#define HASHloop_sht(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, sht)
+#define HASHloop_int(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, int)
+#define HASHloop_wrd(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, wrd)
+#define HASHloop_lng(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, lng)
+#define HASHloop_oid(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, oid)
+#define HASHloop_bat(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, bat)
+#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)
+#define HASHloop_ptr(bi, h, hb, v) HASHloop_TYPE(bi, h, hb, v, ptr)
-#if SIZEOF_VOID_P == SIZEOF_INT
-@:hashloop(ptr,int,simple,int,hloc)@
-#else /* SIZEOF_VOID_P == SIZEOF_LNG */
-@:hashloop(ptr,lng,simple,lng,hloc)@
-#endif
-@:hashloop(flt,int,simple,int,hloc)@
-@:hashloop(lng,lng,simple,lng,hloc)@
-@:hashloop(dbl,lng,simple,lng,hloc)@
-@:hashloop(any,any,atom,(bi).b->htype,head)@
+#define HASHloop_any(bi, h, hb, v) \
+ for (hb = (h)->hash[hash_any(h, v)]; \
+ hb != BUN_NONE; \
+ hb = (h)->link[hb]) \
+ if (atom_EQ(v, BUNhead(bi, hb), (bi).b->htype))
-@= hashloop
-#define HASHloop_@1(bi, h, hb, v) \
- for (hb = (h)->hash[hash_@2((h), v)]; \
- hb != BUN_NONE; \
- hb = (h)->link[hb]) \
- if (@3_EQ(v, BUN@5(bi, hb), @4))
-@
-@h
/*
* @- loop over a BAT with ordered tail
* Here we loop over a BAT with an ordered tail column (see for instance
@@ -3029,48 +3023,57 @@ gdk_export int ALIGNsetH(BAT *b1, BAT *b
p < q; \
p++)
-@:sortloop(bte,bte,bte,simple,&bte_nil)@
-@:sortloop(sht,sht,sht,simple,&sht_nil)@
-@:sortloop(int,int,int,simple,&int_nil)@
-@:sortloop(flt,flt,flt,simple,&flt_nil)@
-@:sortloop(lng,lng,lng,simple,&lng_nil)@
-@:sortloop(dbl,dbl,dbl,simple,&dbl_nil)@
-@:sortloop(loc,loc,(b)->ttype,atom,ATOMnilptr((b)->ttype))@
-@:sortloop(var,var,(b)->ttype,atom,ATOMnilptr((b)->ttype))@
-
-@= sortloop
-#define SORTloop_@1(b,p,q,tl,th) \
+#define SORTloop_TYPE(b, p, q, tl, th, TYPE) \
if (!(BATtordered(b) & 1)) \
- GDKerror("SORTloop_@1: BAT not sorted.\n"); \
- else for (p = @4_EQ(tl, @5, @3) ? BUNfirst(b) : SORTfndfirst_@2(b, tl),
\
- q = @4_EQ(th, @5, @3) ? BUNfirst(b) : SORTfndlast_@2(b, th); \
+ GDKerror("SORTloop_" #TYPE ": BAT not sorted.\n"); \
+ else for (p = simple_EQ(tl, &TYPE##_nil, TYPE) ? BUNfirst(b) :
SORTfndfirst_##TYPE(b, tl), \
+ q = simple_EQ(th, &TYPE##_nil, TYPE) ? BUNfirst(b) :
SORTfndlast_##TYPE(b, th); \
p < q; \
p++)
-@
-@h
+
+#define SORTloop_bte(b, p, q, tl, th) SORTloop_TYPE(b, p, q, tl, th, bte)
+#define SORTloop_sht(b, p, q, tl, th) SORTloop_TYPE(b, p, q, tl, th, sht)
+#define SORTloop_int(b, p, q, tl, th) SORTloop_TYPE(b, p, q, tl, th, int)
+#define SORTloop_lng(b, p, q, tl, th) SORTloop_TYPE(b, p, q, tl, th, lng)
+#define SORTloop_flt(b, p, q, tl, th) SORTloop_TYPE(b, p, q, tl, th, flt)
+#define SORTloop_dbl(b, p, q, tl, th) SORTloop_TYPE(b, p, q, tl, th, dbl)
+#define SORTloop_oid(b, p, q, tl, th) SORTloop_TYPE(b, p, q, tl, th, oid)
+#define SORTloop_wrd(b, p, q, tl, th) SORTloop_TYPE(b, p, q, tl, th, wrd)
+
+#define SORTloop_loc(b,p,q,tl,th) \
+ if (!(BATtordered(b) & 1)) \
+ GDKerror("SORTloop_loc: BAT not sorted.\n"); \
+ else for (p = atom_EQ(tl, ATOMnilptr((b)->ttype), (b)->ttype) ?
BUNfirst(b) : SORTfndfirst_loc(b, tl), \
+ q = atom_EQ(th, ATOMnilptr((b)->ttype), (b)->ttype) ?
BUNfirst(b) : SORTfndlast_loc(b, th); \
+ p < q; \
+ p++)
+
+#define SORTloop_var(b,p,q,tl,th) \
+ if (!(BATtordered(b) & 1)) \
+ GDKerror("SORTloop_var: BAT not sorted.\n"); \
+ else for (p = atom_EQ(tl, ATOMnilptr((b)->ttype), (b)->ttype) ?
BUNfirst(b) : SORTfndfirst_var(b, tl), \
+ q = atom_EQ(th, ATOMnilptr((b)->ttype), (b)->ttype) ?
BUNfirst(b) : SORTfndlast_var(b, th); \
+ p < q; \
+ p++)
/* OIDDEPEND */
#if SIZEOF_OID == SIZEOF_INT
#define SORTfnd_oid(b,v) SORTfnd_int(b,v)
#define SORTfndfirst_oid(b,v) SORTfndfirst_int(b,v)
#define SORTfndlast_oid(b,v) SORTfndlast_int(b,v)
-@:sortloop(oid,int,oid,simple,&oid_nil)@
#else
#define SORTfnd_oid(b,v) SORTfnd_lng(b,v)
#define SORTfndfirst_oid(b,v) SORTfndfirst_lng(b,v)
#define SORTfndlast_oid(b,v) SORTfndlast_lng(b,v)
-@:sortloop(oid,lng,oid,simple,&oid_nil)@
#endif
#if SIZEOF_WRD == SIZEOF_INT
#define SORTfnd_wrd(b,v) SORTfnd_int(b,v)
#define SORTfndfirst_wrd(b,v) SORTfndfirst_int(b,v)
#define SORTfndlast_wrd(b,v) SORTfndlast_int(b,v)
-@:sortloop(wrd,int,wrd,simple,&wrd_nil)@
#else
#define SORTfnd_wrd(b,v) SORTfnd_lng(b,v)
#define SORTfndfirst_wrd(b,v) SORTfndfirst_lng(b,v)
#define SORTfndlast_wrd(b,v) SORTfndlast_lng(b,v)
-@:sortloop(wrd,lng,wrd,simple,&wrd_nil)@
#endif
#define SORTloop_bit(b,p,q,tl,th) SORTloop_bte(b,p,q,tl,th)
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list