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