Changeset: bec89ec7852f for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bec89ec7852f
Added Files:
        monetdb5/modules/mosaic/mosaic_projection_template.h
Removed Files:
        monetdb5/modules/mosaic/mosaic_projection.h
Modified Files:
        monetdb5/modules/mosaic/Makefile.ag
        monetdb5/modules/mosaic/mosaic.c
        monetdb5/modules/mosaic/mosaic_delta.c
        monetdb5/modules/mosaic/mosaic_dict.c
        monetdb5/modules/mosaic/mosaic_dict256.c
        monetdb5/modules/mosaic/mosaic_frame.c
        monetdb5/modules/mosaic/mosaic_linear.c
        monetdb5/modules/mosaic/mosaic_prefix.c
        monetdb5/modules/mosaic/mosaic_raw.c
        monetdb5/modules/mosaic/mosaic_runlength.c
        monetdb5/modules/mosaic/mosaic_template.h
        monetdb5/modules/mosaic/mosaic_utility.h
Branch: mosaic
Log Message:

Refactor projection macro's to template functions.


diffs (truncated from 600 to 300 lines):

diff --git a/monetdb5/modules/mosaic/Makefile.ag 
b/monetdb5/modules/mosaic/Makefile.ag
--- a/monetdb5/modules/mosaic/Makefile.ag
+++ b/monetdb5/modules/mosaic/Makefile.ag
@@ -22,8 +22,8 @@ lib_mosaic = {
                mosaic.c mosaic.h mosaic_template.h \
                mosaic_utility.h \
                mosaic_hdr.c mosaic_hdr.h \
-               mosaic_select.h mosaic_select_template.h 
mosaic_select_template2.h \
-               mosaic_projection.h \
+               mosaic_select_template.h mosaic_select_template2.h \
+               mosaic_projection_template.h \
                mosaic_join.h \
                mosaic_raw.c mosaic_raw.h mosaic_raw_template.h \
                mosaic_runlength.c mosaic_runlength.h 
mosaic_runlength_template.h \
diff --git a/monetdb5/modules/mosaic/mosaic.c b/monetdb5/modules/mosaic/mosaic.c
--- a/monetdb5/modules/mosaic/mosaic.c
+++ b/monetdb5/modules/mosaic/mosaic.c
@@ -842,16 +842,6 @@ str MOSthetaselect(Client cntxt, MalBlkP
        throw(MAL, "mosaic.MOSthetaselect", "unknown operator.");
 }
 
-MOSprojection_generic_DEF(bte)
-MOSprojection_generic_DEF(sht)
-MOSprojection_generic_DEF(int)
-MOSprojection_generic_DEF(lng)
-MOSprojection_generic_DEF(flt)
-MOSprojection_generic_DEF(dbl)
-#ifdef HAVE_HGE
-MOSprojection_generic_DEF(hge)
-#endif
-
 str MOSprojection(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci)
 {
        bat *ret, *lid =0, *rid=0;
diff --git a/monetdb5/modules/mosaic/mosaic_delta.c 
b/monetdb5/modules/mosaic/mosaic_delta.c
--- a/monetdb5/modules/mosaic/mosaic_delta.c
+++ b/monetdb5/modules/mosaic/mosaic_delta.c
@@ -142,13 +142,25 @@ MOSlayout_delta(MOStask* task, BAT *btec
        }\
 }
 
-MOSprojection_DEF(delta, bte)
-MOSprojection_DEF(delta, sht)
-MOSprojection_DEF(delta, int)
-MOSprojection_DEF(delta, lng)
+#define NAME delta
+#define TPE bte
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE sht
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE int
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE lng
+#include "mosaic_projection_template.h"
+#undef TPE
 #ifdef HAVE_HGE
-MOSprojection_DEF(delta, hge)
+#define TPE hge
+#include "mosaic_projection_template.h"
+#undef TPE
 #endif
+#undef NAME
 
 #define outer_loop_delta(HAS_NIL, NIL_MATCHES, TPE, LEFT_CI_NEXT, 
RIGHT_CI_NEXT) \
 {\
diff --git a/monetdb5/modules/mosaic/mosaic_dict.c 
b/monetdb5/modules/mosaic/mosaic_dict.c
--- a/monetdb5/modules/mosaic/mosaic_dict.c
+++ b/monetdb5/modules/mosaic/mosaic_dict.c
@@ -146,15 +146,31 @@ MOSlayout_dict(MOStask* task, BAT *btech
 #define projection_loop_dict(TPE, CI_NEXT) \
     projection_loop_dictionary(dict, TPE, CI_NEXT)
 
-MOSprojection_DEF(dict, bte)
-MOSprojection_DEF(dict, sht)
-MOSprojection_DEF(dict, int)
-MOSprojection_DEF(dict, lng)
-MOSprojection_DEF(dict, flt)
-MOSprojection_DEF(dict, dbl)
+#define NAME dict
+#define TPE bte
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE sht
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE int
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE lng
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE flt
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE dbl
+#include "mosaic_projection_template.h"
+#undef TPE
 #ifdef HAVE_HGE
-MOSprojection_DEF(dict, hge)
+#define TPE hge
+#include "mosaic_projection_template.h"
+#undef TPE
 #endif
+#undef NAME
 
 #define outer_loop_dict(HAS_NIL, NIL_MATCHES, TPE, LEFT_CI_NEXT, 
RIGHT_CI_NEXT) \
     outer_loop_dictionary(HAS_NIL, NIL_MATCHES, dict, TPE, LEFT_CI_NEXT, 
RIGHT_CI_NEXT)
diff --git a/monetdb5/modules/mosaic/mosaic_dict256.c 
b/monetdb5/modules/mosaic/mosaic_dict256.c
--- a/monetdb5/modules/mosaic/mosaic_dict256.c
+++ b/monetdb5/modules/mosaic/mosaic_dict256.c
@@ -170,15 +170,31 @@ MOSlayout_dict256(MOStask* task, BAT *bt
 #define projection_loop_dict256(TPE, CI_NEXT) \
     projection_loop_dictionary(dict256, TPE, CI_NEXT)
 
-MOSprojection_DEF(dict256, bte)
-MOSprojection_DEF(dict256, sht)
-MOSprojection_DEF(dict256, int)
-MOSprojection_DEF(dict256, lng)
-MOSprojection_DEF(dict256, flt)
-MOSprojection_DEF(dict256, dbl)
+#define NAME dict256
+#define TPE bte
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE sht
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE int
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE lng
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE flt
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE dbl
+#include "mosaic_projection_template.h"
+#undef TPE
 #ifdef HAVE_HGE
-MOSprojection_DEF(dict256, hge)
+#define TPE hge
+#include "mosaic_projection_template.h"
+#undef TPE
 #endif
+#undef NAME
 
 #define outer_loop_dict256(HAS_NIL, NIL_MATCHES, TPE, LEFT_CI_NEXT, 
RIGHT_CI_NEXT) \
     outer_loop_dictionary(HAS_NIL, NIL_MATCHES, dict256, TPE, LEFT_CI_NEXT, 
RIGHT_CI_NEXT)
diff --git a/monetdb5/modules/mosaic/mosaic_frame.c 
b/monetdb5/modules/mosaic/mosaic_frame.c
--- a/monetdb5/modules/mosaic/mosaic_frame.c
+++ b/monetdb5/modules/mosaic/mosaic_frame.c
@@ -127,13 +127,25 @@ MOSlayout_frame(MOStask* task, BAT *btec
        }\
 }
 
-MOSprojection_DEF(frame, bte)
-MOSprojection_DEF(frame, sht)
-MOSprojection_DEF(frame, int)
-MOSprojection_DEF(frame, lng)
+#define NAME frame
+#define TPE bte
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE sht
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE int
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE lng
+#include "mosaic_projection_template.h"
+#undef TPE
 #ifdef HAVE_HGE
-MOSprojection_DEF(frame, hge)
+#define TPE hge
+#include "mosaic_projection_template.h"
+#undef TPE
 #endif
+#undef NAME
 
 #define outer_loop_frame(HAS_NIL, NIL_MATCHES, TPE, LEFT_CI_NEXT, 
RIGHT_CI_NEXT) \
 {\
diff --git a/monetdb5/modules/mosaic/mosaic_linear.c 
b/monetdb5/modules/mosaic/mosaic_linear.c
--- a/monetdb5/modules/mosaic/mosaic_linear.c
+++ b/monetdb5/modules/mosaic/mosaic_linear.c
@@ -123,13 +123,25 @@ MOSlayout_linear(MOStask* task, BAT *bte
        }\
 }
 
-MOSprojection_DEF(linear, bte)
-MOSprojection_DEF(linear, sht)
-MOSprojection_DEF(linear, int)
-MOSprojection_DEF(linear, lng)
+#define NAME linear
+#define TPE bte
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE sht
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE int
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE lng
+#include "mosaic_projection_template.h"
+#undef TPE
 #ifdef HAVE_HGE
-MOSprojection_DEF(linear, hge)
+#define TPE hge
+#include "mosaic_projection_template.h"
+#undef TPE
 #endif
+#undef NAME
 
 #define outer_loop_linear(HAS_NIL, NIL_MATCHES, TPE, LEFT_CI_NEXT, 
RIGHT_CI_NEXT) \
 {\
diff --git a/monetdb5/modules/mosaic/mosaic_prefix.c 
b/monetdb5/modules/mosaic/mosaic_prefix.c
--- a/monetdb5/modules/mosaic/mosaic_prefix.c
+++ b/monetdb5/modules/mosaic/mosaic_prefix.c
@@ -164,13 +164,25 @@ MOSlayout_prefix(MOStask* task, BAT *bte
        }\
 }
 
-MOSprojection_DEF(prefix, bte)
-MOSprojection_DEF(prefix, sht)
-MOSprojection_DEF(prefix, int)
-MOSprojection_DEF(prefix, lng)
+#define NAME prefix
+#define TPE bte
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE sht
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE int
+#include "mosaic_projection_template.h"
+#undef TPE
+#define TPE lng
+#include "mosaic_projection_template.h"
+#undef TPE
 #ifdef HAVE_HGE
-MOSprojection_DEF(prefix, hge)
+#define TPE hge
+#include "mosaic_projection_template.h"
+#undef TPE
 #endif
+#undef NAME
 
 #define outer_loop_prefix(HAS_NIL, NIL_MATCHES, TPE, LEFT_CI_NEXT, 
RIGHT_CI_NEXT) \
 {\
diff --git a/monetdb5/modules/mosaic/mosaic_projection.h 
b/monetdb5/modules/mosaic/mosaic_projection.h
deleted file mode 100644
--- a/monetdb5/modules/mosaic/mosaic_projection.h
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0.  If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
- */
-
-/*
- * authors Martin Kersten, Aris Koning
- */
-#ifndef _MOSAIC_PROJECTION_
-#define _MOSAIC_PROJECTION_
-
-#include "mosaic.h"
-
-#define MOSprojection_SIGNATURE(NAME, TPE) \
-str                                                            \
-MOSprojection_##NAME##_##TPE(MOStask* task)\
-
-#define MOSprojection_DEF(NAME, TPE)\
-MOSprojection_SIGNATURE(NAME, TPE)\
-{\
-       BUN first = task->start;\
-       BUN last = first + MOSgetCnt(task->blk);\
-\
-       ASSERT_ALIGNMENT_BLOCK_HEADER(task->blk, NAME, TPE);\
-\
-       TPE* bt= (TPE*) task->src;\
-\
-       /* Advance the candidate iterator to the first element within
-        * the oid range of the current block.
-        */\
-       oid c = canditer_next(task->ci);\
-       while (!is_oid_nil(c) && c < first ) {\
-               c = canditer_next(task->ci);\
-       }\
-\
-       if              (is_oid_nil(c)) {\
-               /* Nothing left to scan.
-                * So we can signal the generic select function to stop now.
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to