Changeset: 6973a579443a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6973a579443a
Added Files:
        gdk/gdk_setop.c
Removed Files:
        gdk/gdk_setop.mx
Modified Files:
        gdk/Makefile.ag
Branch: default
Log Message:

The last .mx file bites the dust.
This is a very simplistic conversion where the MX macros were simple
replaced by C macros.


diffs (truncated from 1063 to 300 lines):

diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag
--- a/gdk/Makefile.ag
+++ b/gdk/Makefile.ag
@@ -26,7 +26,7 @@ lib_gdk = {
                gdk.h gdk_atomic.h gdk_batop.c gdk_select.c \
                gdk_search.c gdk_search.h gdk_tm.c \
                gdk_align.c gdk_bbp.c gdk_bbp.h \
-               gdk_heap.c gdk_setop.mx gdk_utils.c gdk_utils.h \
+               gdk_heap.c gdk_setop.c gdk_utils.c gdk_utils.h \
                gdk_atoms.c gdk_atoms.h \
                gdk_qsort.c gdk_qsort_impl.h gdk_ssort.c gdk_ssort_impl.h \
                gdk_storage.c gdk_bat.c \
diff --git a/gdk/gdk_setop.mx b/gdk/gdk_setop.c
rename from gdk/gdk_setop.mx
rename to gdk/gdk_setop.c
--- a/gdk/gdk_setop.mx
+++ b/gdk/gdk_setop.c
@@ -1,25 +1,26 @@
-@/
-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-2013 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-2013 MonetDB B.V.
-All Rights Reserved.
-@
-
-@f gdk_setop
-
-@c
+/*
+ * @f gdk_setop
+ *
+ */
 /*
  * @a Peter Boncz
  *
@@ -66,7 +67,7 @@ All Rights Reserved.
  * The @emph{kintersect(l,r)} is used also as implementation for the
  * @emph{semijoin()}.
  */
-@c
+
 #include "monetdb_config.h"
 #include "gdk.h"
 #include "gdk_private.h"
@@ -76,8 +77,6 @@ All Rights Reserved.
 #define HITs(t1,t2)            ((*cmp)(t1,t2) == 0)
 #define EQUALs(t1,t2)          ((*cmp)(t1,t2) == 0 && (*cmp)(t1,tnil))
 #define EQUALk(t1,t2)          TRUE
-#define FLIPs                  TRUE
-#define FLIPk                  FALSE
 
 #define HITintersect(h,t)       bunfastins(bn,h,t)
 #define HITdiff(h,t)
@@ -102,105 +101,115 @@ All Rights Reserved.
  * Comes in two flavors: looking at one column, or at two at-a-time.
  * Implementation is either merge- or hash-based.
  */
-@= mergeelim
-       BATloop(b, p, q) {
-               ptr h = BUNh@2(bi,p);
-               ptr t = BUNt@3(bi,p);
+#define mergeelim(a1,a2,a3,a4,a5)                                      \
+       do {                                                            \
+               BATloop(b, p, q) {                                      \
+                       ptr h = BUNh##a2(bi,p);                         \
+                       ptr t = BUNt##a3(bi,p);                         \
+                                                                       \
+                       for (r = p + 1; r < q && a4 == 0; r++) {        \
+                               if (HIT##a1(t, BUNt##a3(bi, r)))        \
+                                       goto next##a2##a3##a5;          \
+                       }                                               \
+                       bunfastins(bn, h, t);                           \
+                 next##a2##a3##a5:;                                    \
+               }                                                       \
+       } while (0)
+#define hashelim(a1,a2,a3,a4)                                          \
+       do {                                                            \
+               zz = BUNfirst(bn);                                      \
+               if (!bn->H->hash) {                                     \
+                       if (BAThash(bn, BATcapacity(bn)) == NULL) {     \
+                               BBPreclaim(bn);                         \
+                               return NULL;                            \
+                       }                                               \
+               }                                                       \
+               BATloop(b, p, q) {                                      \
+                       ptr h = BUNh##a2(bi, p);                        \
+                       ptr t = BUNt##a3(bi, p);                        \
+                       int ins = 1;                                    \
+                       BUN yy;                                         \
+                                                                       \
+                       if (BATprepareHash(bn)) {                       \
+                               BBPreclaim(bn);                         \
+                               return NULL;                            \
+                       }                                               \
+                       HASHloop##a4(bni, bn->H->hash, yy, h) {         \
+                               if (HIT##a1(t, BUNt##a3(bni, yy))) {    \
+                                       ins = 0;                        \
+                                       break;                          \
+                               }                                       \
+                       }                                               \
+                       if (ins) {                                      \
+                               bunfastins(bn, h, t);                   \
+                               if (bn->H->hash)                        \
+                                       HASHins##a4(bn->H->hash, zz, h); \
+                               zz++;                                   \
+                       }                                               \
+               }                                                       \
+       } while (0)
+#define elim(a1,a2,a3,a4)                                              \
+       {                                                               \
+               int (*cmp)(const void *, const void *) = 
BATatoms[b->ttype].atomCmp; \
+               BUN zz;                                                 \
+               BUN p, q, r;                                            \
+                                                                       \
+               if (BAThordered(b)) {                                   \
+                       ALGODEBUG fprintf(stderr, "#BATins_%sunique: 
BAThordered(b)\n", #a1); \
+                       ALGODEBUG fprintf(stderr, "#BATins_%sunique: 
mergeelim\n", #a1); \
+                       if (b->tvarsized) {                             \
+                               mergeelim(a1,a2,var,a4,a3);             \
+                       } else {                                        \
+                               mergeelim(a1,a2,loc,a4,a3);             \
+                       }                                               \
+               } else if (b->tvarsized) {                              \
+                       ALGODEBUG fprintf(stderr, "#BATins_%sunique: 
hashelim\n", #a1); \
+                       hashelim(a1,a2,var,a3);                         \
+               } else {                                                \
+                       ALGODEBUG fprintf(stderr, "#BATins_%sunique: 
hashelim\n", #a1); \
+                       hashelim(a1,a2,loc,a3);                         \
+               }                                                       \
+               (void) cmp;                                             \
+               break;                                                  \
+       }
+#define elim_doubles(a1)                                               \
+       switch (ATOMstorage(b->htype)) {                                \
+       case TYPE_bte:                                                  \
+               elim(a1,loc,_bte,simple_CMP(h,BUNhloc(bi,r),bte));      \
+               break;                                                  \
+       case TYPE_sht:                                                  \
+               elim(a1,loc,_sht,simple_CMP(h,BUNhloc(bi,r),sht));      \
+               break;                                                  \
+       case TYPE_int:                                                  \
+               elim(a1,loc,_int,simple_CMP(h,BUNhloc(bi,r),int));      \
+               break;                                                  \
+       case TYPE_flt:                                                  \
+               elim(a1,loc,_flt,simple_CMP(h,BUNhloc(bi,r),flt));      \
+               break;                                                  \
+       case TYPE_dbl:                                                  \
+               elim(a1,loc,_dbl,simple_CMP(h,BUNhloc(bi,r),dbl));      \
+               break;                                                  \
+       case TYPE_lng:                                                  \
+               elim(a1,loc,_lng,simple_CMP(h,BUNhloc(bi,r),lng));      \
+               break;                                                  \
+       case TYPE_str:                                                  \
+               if (b->H->vheap->hashash) {                             \
+                       elim(a1,var,_str_hv,GDK_STRCMP(h,BUNhvar(bi,r))); \
+                       break;                                          \
+               }                                                       \
+               /* fall through */                                      \
+       default: {                                                      \
+               int (*merge)(const void *, const void *) = 
BATatoms[b->htype].atomCmp; \
+                                                                       \
+               if (b->hvarsized) {                                     \
+                       elim(a1,var,var,((*merge)(h,BUNhvar(bi,r))));   \
+               } else {                                                \
+                       elim(a1,loc,loc,((*merge)(h,BUNhloc(bi,r))));   \
+               }                                                       \
+               break;                                                  \
+       }                                                               \
+       }
 
-               for (r = p + 1; r < q && @4 == 0; r++) {
-                       if (HIT@1(t, BUNt@3(bi, r)))
-                               goto next@2@3@5;
-               }
-               bunfastins(bn, h, t);
-  next@2@3@5:;
-       }
-@= hashelim
-       zz = BUNfirst(bn);
-       if (!bn->H->hash) {
-               if (BAThash(bn, BATcapacity(bn)) == NULL) {
-                       BBPreclaim(bn);
-                       return NULL;
-               }
-       }
-       BATloop(b, p, q) {
-               ptr h = BUNh@2(bi, p);
-               ptr t = BUNt@3(bi, p);
-               int ins = 1;
-               BUN yy;
-
-               if (BATprepareHash(bn)) {
-                       BBPreclaim(bn);
-                       return NULL;
-               }
-               HASHloop@4(bni, bn->H->hash, yy, h) {
-                       if (HIT@1(t, BUNt@3(bni, yy))) {
-                               ins = 0;
-                               break;
-                       }
-               }
-               if (ins) {
-                       bunfastins(bn, h, t);
-                       if (bn->H->hash)
-                               HASHins@4(bn->H->hash, zz, h);
-                       zz++;
-               }
-       }
-@= elim
-       {
-               int (*cmp)(const void *, const void *) = 
BATatoms[b->ttype].atomCmp;
-               BUN zz;
-               BUN p, q, r;
-
-               if (BAThordered(b)) {
-                       ALGODEBUG fprintf(stderr, "#BATins_@1unique: 
BAThordered(b)\n");
-                       ALGODEBUG fprintf(stderr, "#BATins_@1unique: 
mergeelim\n");
-                       if (b->tvarsized) {
-                               @:mergeelim(@1,@2,var,@4,@3)@
-                       } else {
-                               @:mergeelim(@1,@2,loc,@4,@3)@
-                       }
-               } else if (b->tvarsized) {
-                       ALGODEBUG fprintf(stderr, "#BATins_@1unique: 
hashelim\n");
-                       @:hashelim(@1,@2,var,@3)@
-               } else {
-                       ALGODEBUG fprintf(stderr, "#BATins_@1unique: 
hashelim\n");
-                       @:hashelim(@1,@2,loc,@3)@
-               }
-               (void) cmp;
-               break;
-       }
-@= elim_doubles
-       switch (ATOMstorage(b->htype)) {
-       case TYPE_bte:
-               @:elim(@1,loc,_bte,simple_CMP(h,BUNhloc(bi,r),bte))@
-       case TYPE_sht:
-               @:elim(@1,loc,_sht,simple_CMP(h,BUNhloc(bi,r),sht))@
-       case TYPE_int:
-               @:elim(@1,loc,_int,simple_CMP(h,BUNhloc(bi,r),int))@
-       case TYPE_flt:
-               @:elim(@1,loc,_flt,simple_CMP(h,BUNhloc(bi,r),flt))@
-       case TYPE_dbl:
-               @:elim(@1,loc,_dbl,simple_CMP(h,BUNhloc(bi,r),dbl))@
-       case TYPE_lng:
-               @:elim(@1,loc,_lng,simple_CMP(h,BUNhloc(bi,r),lng))@
-       case TYPE_str:
-               if (b->H->vheap->hashash) {
-                       @:elim(@1,var,_str_hv,GDK_STRCMP(h,BUNhvar(bi,r)))@
-               }
-               /* fall through */
-       default:
-               {
-                       int (*merge)(const void *, const void *) = 
BATatoms[b->htype].atomCmp;
-
-                       if (b->hvarsized) {
-                               @:elim(@1,var,var,((*merge)(h,BUNhvar(bi,r))))@
-                       } else {
-                               @:elim(@1,loc,loc,((*merge)(h,BUNhloc(bi,r))))@
-                       }
-               }
-       }
-@
-@c
 static BAT *
 BATins_kunique(BAT *bn, BAT *b)
 {
@@ -211,7 +220,7 @@ BATins_kunique(BAT *bn, BAT *b)
        BATcheck(b, "BATins_kunique: src BAT required");
        BATcheck(bn, "BATins_kunique: dst BAT required");
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to