On 04/29, Oleg Nesterov wrote:
>
> Why the environment? Because this way it is very easy to add more
> primitives using a single keyword
For example. I noticed two undocumented primitives, lowest() and highest(),
both consume a keyword.
Both look useful to me, but they do not work. This trivial program
process = +(100) : lowest;
crashes the faust compiler (I didn't try to investigate).
While the trivial change below (on top of this patch) seems to work:
process = +(100) <: meta.lo, meta.hi;
compiles to
output0[i0] = FAUSTFLOAT(99.0f);
output1[i0] = FAUSTFLOAT(101.0f);
Oleg.
---
compiler/extended/metaprim.hh | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/compiler/extended/metaprim.hh b/compiler/extended/metaprim.hh
index 20cc5982e..255fd3f0c 100644
--- a/compiler/extended/metaprim.hh
+++ b/compiler/extended/metaprim.hh
@@ -47,6 +47,11 @@ class MetaPrim : public xtended {
case 1:
ret = getSigOrder(sig);
break;
+ case 2: case 3: {
+ typeAnnotation(sig, false);
+ interval i = getCertifiedSigType(sig)->getInterval();
+ return tree(fOp == 2 ? i.lo() : i.hi());
+ }
default:
faustassert(false);
}
@@ -89,6 +94,8 @@ static Tree mkMetaEnv()
defs = add_meta_def(defs, 0, "serial");
defs = add_meta_def(defs, 1, "order");
+ defs = add_meta_def(defs, 2, "lo");
+ defs = add_meta_def(defs, 3, "hi");
return boxWithLocalDef(boxEnvironment(), defs);
}
--
2.39.2
_______________________________________________
Faudiostream-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/faudiostream-devel