summaryrefslogtreecommitdiff
path: root/src/func.cc
diff options
context:
space:
mode:
authorkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-07-09 09:35:19 (GMT)
committerkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-07-09 09:35:19 (GMT)
commit4dceada8f4380913cfded94a845abf59a6a4d3ee (patch)
treecf6306ee1c813e0dc65fec227cd3caf7e09f8120 /src/func.cc
parent9f6a3da9bd9160b89c50007d1a2b2c77acc29806 (diff)
sign() function suggested by Dan Zuras and implemented by Giles Bathgate
git-svn-id: http://svn.clifford.at/openscad/trunk@568 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'src/func.cc')
-rw-r--r--src/func.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/func.cc b/src/func.cc
index 9f1b8e7..eb0afcd 100644
--- a/src/func.cc
+++ b/src/func.cc
@@ -117,6 +117,13 @@ Value builtin_abs(const Context *, const QVector<QString>&, const QVector<Value>
return Value();
}
+Value builtin_sign(const Context *, const QVector<QString>&, const QVector<Value> &args)
+{
+ if (args.size() == 1 && args[0].type == Value::NUMBER)
+ return Value((args[0].num<0) ? -1.0 : ((args[0].num>0) ? 1.0 : 0.0));
+ return Value();
+}
+
Value builtin_min(const Context *, const QVector<QString>&, const QVector<Value> &args)
{
if (args.size() >= 1 && args[0].type == Value::NUMBER) {
@@ -292,6 +299,7 @@ Value builtin_lookup(const Context *, const QVector<QString>&, const QVector<Val
void initialize_builtin_functions()
{
builtin_functions["abs"] = new BuiltinFunction(&builtin_abs);
+ builtin_functions["sign"] = new BuiltinFunction(&builtin_sign);
builtin_functions["min"] = new BuiltinFunction(&builtin_min);
builtin_functions["max"] = new BuiltinFunction(&builtin_max);
builtin_functions["sin"] = new BuiltinFunction(&builtin_sin);
contact: Jan Huwald // Impressum