Changeset: 2dbea92e4786 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2dbea92e4786
Added Files:
        monetdb5/modules/kernel/array.c
        monetdb5/modules/kernel/array.h
        monetdb5/modules/kernel/array.mal
        monetdb5/modules/kernel/mmath.c
        monetdb5/modules/kernel/mmath.h
        monetdb5/modules/kernel/mmath.mal
Removed Files:
        monetdb5/modules/kernel/array.mx
        monetdb5/modules/kernel/mmath.mx
Modified Files:
        monetdb5/modules/kernel/Makefile.ag
        monetdb5/modules/kernel/bat5.mal
        monetdb5/tests/gdkTests/Tests/append_dense_tail.mal
        monetdb5/tests/gdkTests/Tests/append_dense_tail.stable.out
        monetdb5/tests/gdkTests/Tests/void.mal
        monetdb5/tests/gdkTests/Tests/void.stable.out
Branch: default
Log Message:

De-Mx array and mmath modules


diffs (truncated from 1804 to 300 lines):

diff --git a/monetdb5/modules/kernel/Makefile.ag 
b/monetdb5/modules/kernel/Makefile.ag
--- a/monetdb5/modules/kernel/Makefile.ag
+++ b/monetdb5/modules/kernel/Makefile.ag
@@ -40,7 +40,7 @@ lib_kernel = {
                aggr.mx \
                alarm.c alarm.h \
                algebra.mx \
-               array.mx \
+               array.c array.h \
                bat5.c bat5.h \
                batcalc.c \
                batcolor.mx \
@@ -54,7 +54,7 @@ lib_kernel = {
                lock.c lock.h \
                logger.c \
                microbenchmark.c microbenchmark.h \
-               mmath.mx \
+               mmath.c mmath.h \
                sema.c \
                status.c status.h \
                unix.c
@@ -64,9 +64,9 @@ headers_mal = {
        HEADERS = mal
        DIR = libdir/monetdb5
        SOURCES = calc.mal bat5.mal algebra.mx status.mal unix.mal \
-               mmath.mx lock.mal sema.mal alarm.mal batstr.mx batmtime.mx \
+               mmath.mal lock.mal sema.mal alarm.mal batstr.mx batmtime.mx \
                batcolor.mx batifthen.mx batcalc.mal batmmath.mx \
-               group.mx aggr.mx array.mx \
+               group.mx aggr.mx array.mal \
                counters.mal logger.mal microbenchmark.mal
 }
 
diff --git a/monetdb5/modules/kernel/array.mx b/monetdb5/modules/kernel/array.c
rename from monetdb5/modules/kernel/array.mx
rename to monetdb5/modules/kernel/array.c
--- a/monetdb5/modules/kernel/array.mx
+++ b/monetdb5/modules/kernel/array.c
@@ -1,28 +1,24 @@
-@/
-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.
-@
-
-@f array
-
-@c
 /*
- * @a A.R. van Ballegooij
- * @+ Basic array support
+ * 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.
+*/
+/*
+ * A.R. van Ballegooij
+ * Basic array support
  *
  * The array support library constructs the index arrays essential
  * for the Relational Algebra Model language.
@@ -33,63 +29,6 @@ All Rights Reserved.
  *
  * The optimization is captured in a contraction macro.
  */
-@mal
-module array;
-@= grid_mdefs
-command grid(i:@1,j:@1,k:@1,l:@1) :bat[:oid,:@1] 
-address ARRAYgrid_@1
-comment  "Generates an index BAT, (grpcount,grpsize,clustersize,offset)";
-
-command grid(i:@1,j:@1,k:@1,l:@1,s:@1) :bat[:oid,:@1] 
-address ARRAYgridShift_@1
-comment  "Generates an index BAT, (grpcount,grpsize,clustersize,offset)
-and shift all elements with a factor s";
-
-command grid(b:bat[:oid,:@1],i:@1,j:@1,k:@1,l:@1) :bat[:oid,:@1] 
-address ARRAYgridBAT_@1
-comment  "Fills an index BAT, (grpcount,grpsize,clustersize,offset)";
-
-command grid(b:bat[:oid,:@1],i:@1,j:@1,k:@1,l:@1,s:@1) :bat[:oid,:@1] 
-address ARRAYgridBATshift_@1
-comment  "Fills an index BAT, (grpcount,grpsize,clustersize,offset)
-and shift all elemenets with a factor s";
-
-@
-@mal
-@:grid_mdefs(int)@
-@:grid_mdefs(lng)@
-
-command product(b:bat[:any_3,:any_1],c:bat[:any_4,:any_2]):bat[:any_1,:any_2]
-address ARRAYproduct
-comment "Produce an array product";
-
-command project(b:bat[:oid,:any_1],i:int):bat[:oid,:int]
-address ARRAYproject
-comment "Fill an array representation with constants ";
-
-# @- Implementation
-@c
-/*============================================================================*/
-#include "monetdb_config.h"
-#include "gdk.h"
-#include "algebra.h"
-#include <math.h>
-#include <time.h>
-
-/*----------------------------------------------------------------------------*/
-
-#ifdef WIN32
-#if !defined(LIBMAL) && !defined(LIBATOMS) && !defined(LIBKERNEL) && 
!defined(LIBMAL) && !defined(LIBOPTIMIZER) && !defined(LIBSCHEDULER) && 
!defined(LIBMONETDB5)
-#define array_export extern __declspec(dllimport)
-#else
-#define array_export extern __declspec(dllexport)
-#endif
-#else
-#define array_export extern
-#endif
-
-array_export str ARRAYproduct(int *ret, int *bid, int *rid);
-array_export str ARRAYproject(int *ret, int *bid, int *cst);
 
 #define new_bat(b, s, TYPE)                                                    
                        \
                do {                                                            
                                        \
@@ -107,33 +46,27 @@ array_export str ARRAYproject(int *ret, 
                } while (0)
 #define get_ptr(b,TYPE)   ((TYPE*)(Tloc(b,BUNfirst((b)))))
 
-@= grid_impl
-array_export str ARRAYgrid_@1(@1 *ret, @1 *groups, @1 *groupsize, @1 
*clustersize, @1 *offset);
-array_export str ARRAYgridShift_@1(@1 *ret, @1 *groups, @1 *groupsize, @1 
*clustersize, @1 *offset, @1 *shift);
-array_export str ARRAYgridBAT_@1(@1 *ret, @1 *bid, @1 *groups, @1 *groupsize, 
@1 *clustersize, @1 *offset);
-array_export str ARRAYgridBATshift_@1(@1 *ret, @1 *bid, @1 *groups, @1 
*groupsize, @1 *clustersize, @1 *offset, @1 *shift);
-
 static int
-fillgrid_@1(BAT **out, @1 *groups, @1 *groupsize, @1 *clustersize, @1 *offset, 
@1 *shift)
+fillgrid_int(BAT **out, int *groups, int *groupsize, int *clustersize, int 
*offset, int *shift)
 {
-       register @1 *ptr;
-       @1 i = *groups;
-       @1 n = *groupsize + *offset;
-       @1 r = *clustersize;
-       @1 o = *offset;
-       @1 s = *shift;
+       register int *ptr;
+       int i = *groups;
+       int n = *groupsize + *offset;
+       int r = *clustersize;
+       int o = *offset;
+       int s = *shift;
 
 #ifdef EXCESSIVE_DEBUGGING
        fprintf(stderr, "[grid] (%d,%d,%d,%d)", i, n, r, o);
 #endif
 
-       ptr = get_ptr(*out, @1);
+       ptr = get_ptr(*out, int);
 
        while (i--) {
-               register @1 ni = o;
+               register int ni = o;
 
                while (ni < n) {
-                       register @1 ri = r;
+                       register int ri = r;
 
                        while (ri--)
                                (*(ptr ++)) = ni * s;
@@ -149,63 +82,128 @@ fillgrid_@1(BAT **out, @1 *groups, @1 *g
 }
 
 static int
-grid_@1(BAT **out, @1 *groups, @1 *groupsize, @1 *clustersize, @1 *offset)
+grid_int(BAT **out, int *groups, int *groupsize, int *clustersize, int *offset)
 {
-       @1 i = *groups;
-       @1 n = *groupsize + *offset;
-       @1 r = *clustersize;
-       @1 o = *offset;
-       @1 s = 1;
+       int i = *groups;
+       int n = *groupsize + *offset;
+       int r = *clustersize;
+       int o = *offset;
+       int s = 1;
 
 #ifdef EXCESSIVE_DEBUGGING
        fprintf(stderr, "[grid] (%d,%d,%d,%d)", i, n, r, o);
 #endif
 
-       new_bat(*out, (i * (n - o) * r), @1);
+       new_bat(*out, (i * (n - o) * r), int);
        if (out == NULL) {
-               GDKerror("grid: cannot create the bat (" @2 " BUNs)\n", (i * (n 
- o) * r));
+               GDKerror("grid: cannot create the bat (%d BUNs)\n", (i * (n - 
o) * r));
                return GDK_FAIL;
        }
-       add_vals(*out, (i * (n - o) * r), @1);
-       return fillgrid_@1(out, groups, groupsize, clustersize, offset, &s);
+       add_vals(*out, (i * (n - o) * r), int);
+       return fillgrid_int(out, groups, groupsize, clustersize, offset, &s);
 }
 
 static int
-gridShift_@1(BAT **out, @1 *groups, @1 *groupsize, @1 *clustersize, @1 
*offset, @1 *shift)
+gridShift_int(BAT **out, int *groups, int *groupsize, int *clustersize, int 
*offset, int *shift)
 {
-       @1 i = *groups;
-       @1 n = *groupsize + *offset;
-       @1 r = *clustersize;
-       @1 o = *offset;
+       int i = *groups;
+       int n = *groupsize + *offset;
+       int r = *clustersize;
+       int o = *offset;
 
 #ifdef EXCESSIVE_DEBUGGING
        fprintf(stderr, "[grid] (%d,%d,%d,%d)", i, n, r, o);
 #endif
 
-       new_bat(*out, (i * (n - o) * r), @1);
+       new_bat(*out, (i * (n - o) * r), int);
        if (*out == 0)
                return GDK_FAIL;
-       add_vals(*out, (i * (n - o) * r), @1);
-       return fillgrid_@1(out, groups, groupsize, clustersize, offset, shift);
+       add_vals(*out, (i * (n - o) * r), int);
+       return fillgrid_int(out, groups, groupsize, clustersize, offset, shift);
 }
 
-@
-@c
-@:grid_impl(int,"%d")@
-@:grid_impl(lng,LLFMT)@
+static int
+fillgrid_lng(BAT **out, lng *groups, lng *groupsize, lng *clustersize, lng 
*offset, lng *shift)
+{
+       register lng *ptr;
+       lng i = *groups;
+       lng n = *groupsize + *offset;
+       lng r = *clustersize;
+       lng o = *offset;
+       lng s = *shift;
 
-/*
- * @+
- * The M5 wrapper code
- */
-#include "mal.h"
-@= grid_wrapper_impl
+#ifdef EXCESSIVE_DEBUGGING
+       fprintf(stderr, "[grid] (%d,%d,%d,%d)", i, n, r, o);
+#endif
+
+       ptr = get_ptr(*out, lng);
+
+       while (i--) {
+               register lng ni = o;
+
+               while (ni < n) {
+                       register lng ri = r;
+
+                       while (ri--)
+                               (*(ptr ++)) = ni * s;
+                       ni++;
+               }
+       }
+
+#ifdef EXCESSIVE_DEBUGGING
+       fprintf(stderr, "- done\n");
+#endif
+
+       return GDK_SUCCEED;
_______________________________________________
Checkin-list mailing list
Checkin-list@monetdb.org
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to