Changeset: fc046c40fc3a for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fc046c40fc3a
Modified Files:
monetdb5/mal/mal_builder.c
monetdb5/mal/mal_builder.h
Branch: default
Log Message:
Find or create constant variables.
diffs (270 lines):
diff --git a/monetdb5/mal/mal_builder.c b/monetdb5/mal/mal_builder.c
--- a/monetdb5/mal/mal_builder.c
+++ b/monetdb5/mal/mal_builder.c
@@ -218,6 +218,21 @@ newExitStmt(MalBlkPtr mb, str nme)
return q;
}
+int
+getIntConstant(MalBlkPtr mb, int val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_int;
+ cst.val.ival= val;
+ cst.len = 0;
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_int,&cst);
+ return _t;
+}
+
InstrPtr
pushInt(MalBlkPtr mb, InstrPtr q, int val)
{
@@ -233,6 +248,21 @@ pushInt(MalBlkPtr mb, InstrPtr q, int va
return pushArgument(mb, q, _t);
}
+int
+getWrdConstant(MalBlkPtr mb, wrd val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_wrd;
+ cst.val.wval= val;
+ cst.len = 0;
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_wrd, &cst);
+ return _t;
+}
+
InstrPtr
pushWrd(MalBlkPtr mb, InstrPtr q, wrd val)
{
@@ -248,6 +278,21 @@ pushWrd(MalBlkPtr mb, InstrPtr q, wrd va
return pushArgument(mb, q, _t);
}
+int
+getBteConstant(MalBlkPtr mb, bte val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_bte;
+ cst.val.btval= val;
+ cst.len = 0;
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_bte, &cst);
+ return _t;
+}
+
InstrPtr
pushBte(MalBlkPtr mb, InstrPtr q, bte val)
{
@@ -263,7 +308,22 @@ pushBte(MalBlkPtr mb, InstrPtr q, bte va
return pushArgument(mb, q, _t);
}
-InstrPtr
+int
+getOidConstant(MalBlkPtr mb, oid val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_oid;
+ cst.val.oval= val;
+ cst.len = 0;
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_oid, &cst);
+ return _t;
+}
+
+InstrPtr
pushOid(MalBlkPtr mb, InstrPtr q, oid val)
{
int _t;
@@ -293,6 +353,21 @@ pushVoid(MalBlkPtr mb, InstrPtr q)
return pushArgument(mb, q, _t);
}
+int
+getLngConstant(MalBlkPtr mb, lng val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_lng;
+ cst.val.lval= val;
+ cst.len = 0;
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_lng, &cst);
+ return _t;
+}
+
InstrPtr
pushLng(MalBlkPtr mb, InstrPtr q, lng val)
{
@@ -308,6 +383,21 @@ pushLng(MalBlkPtr mb, InstrPtr q, lng va
return pushArgument(mb, q, _t);
}
+int
+getShtConstant(MalBlkPtr mb, sht val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_sht;
+ cst.val.shval= val;
+ cst.len = 0;
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_sht, &cst);
+ return _t;
+}
+
InstrPtr
pushSht(MalBlkPtr mb, InstrPtr q, sht val)
{
@@ -322,6 +412,21 @@ pushSht(MalBlkPtr mb, InstrPtr q, sht va
}
#ifdef HAVE_HGE
+int
+getHgeConstant(MalBlkPtr mb, hge val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_oid;
+ cst.val.hval= val;
+ cst.len = 0;
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_hge, &cst);
+ return _t;
+}
+
InstrPtr
pushHge(MalBlkPtr mb, InstrPtr q, hge val)
{
@@ -335,6 +440,21 @@ pushHge(MalBlkPtr mb, InstrPtr q, hge va
}
#endif
+int
+getDblConstant(MalBlkPtr mb, dbl val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_dbl;
+ cst.val.dval= val;
+ cst.len = 0;
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_dbl, &cst);
+ return _t;
+}
+
InstrPtr
pushDbl(MalBlkPtr mb, InstrPtr q, dbl val)
{
@@ -350,6 +470,21 @@ pushDbl(MalBlkPtr mb, InstrPtr q, dbl va
return pushArgument(mb, q, _t);
}
+int
+getFltConstant(MalBlkPtr mb, flt val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_flt;
+ cst.val.fval= val;
+ cst.len = 0;
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_flt, &cst);
+ return _t;
+}
+
InstrPtr
pushFlt(MalBlkPtr mb, InstrPtr q, flt val)
{
@@ -365,6 +500,22 @@ pushFlt(MalBlkPtr mb, InstrPtr q, flt va
return pushArgument(mb, q, _t);
}
+int
+getStrConstant(MalBlkPtr mb, str val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_str;
+ if ((cst.val.sval= GDKstrdup(val)) == NULL)
+ return -1;
+ cst.len= (int) strlen(cst.val.sval);
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_str, &cst);
+ return _t;
+}
+
InstrPtr
pushStr(MalBlkPtr mb, InstrPtr q, const char *Val)
{
@@ -383,6 +534,21 @@ pushStr(MalBlkPtr mb, InstrPtr q, const
return pushArgument(mb, q, _t);
}
+int
+getBitConstant(MalBlkPtr mb, bit val)
+{
+ int _t;
+ ValRecord cst;
+
+ cst.vtype= TYPE_bit;
+ cst.val.btval= val;
+ cst.len = 0;
+ _t= fndConstant(mb, &cst, MAL_VAR_WINDOW);
+ if( _t < 0)
+ _t = defConstant(mb, TYPE_bit, &cst);
+ return _t;
+}
+
InstrPtr
pushBit(MalBlkPtr mb, InstrPtr q, bit val)
{
diff --git a/monetdb5/mal/mal_builder.h b/monetdb5/mal/mal_builder.h
--- a/monetdb5/mal/mal_builder.h
+++ b/monetdb5/mal/mal_builder.h
@@ -43,5 +43,18 @@ mal_export InstrPtr pushZero(MalBlkPtr m
mal_export InstrPtr pushEmptyBAT(MalBlkPtr mb, InstrPtr q, int tpe);
mal_export InstrPtr pushValue(MalBlkPtr mb, InstrPtr q, ValPtr cst);
+mal_export int getIntConstant(MalBlkPtr mb, int val);
+mal_export int getLngConstant(MalBlkPtr mb, lng val);
+mal_export int getShtConstant(MalBlkPtr mb, sht val);
+mal_export int getWrdConstant(MalBlkPtr mb, wrd val);
+mal_export int getBteConstant(MalBlkPtr mb, bte val);
+mal_export int getOidConstant(MalBlkPtr mb, oid val);
+mal_export int getDblConstant(MalBlkPtr mb, dbl val);
+mal_export int getFltConstant(MalBlkPtr mb, flt val);
+mal_export int getStrConstant(MalBlkPtr mb, str val);
+mal_export int getBitConstant(MalBlkPtr mb, bit val);
+#ifdef HAVE_HGE
+mal_export int getHgeConstant(MalBlkPtr mb, hge val);
+#endif
#endif /* _MAL_BUILDER_ */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list