diff options
-rw-r--r-- | src/context.cc | 10 | ||||
-rw-r--r-- | src/context.h | 3 | ||||
-rw-r--r-- | src/mainwin.cc | 2 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/context.cc b/src/context.cc index 4bc6ed5..65d5e23 100644 --- a/src/context.cc +++ b/src/context.cc @@ -84,6 +84,8 @@ Value Context::lookup_variable(QString name, bool silent) const } return Value(); } + if (!parent && constants.contains(name)) + return constants[name]; if (variables.contains(name)) return variables[name]; if (parent) @@ -93,6 +95,14 @@ Value Context::lookup_variable(QString name, bool silent) const return Value(); } +void Context::set_constant(QString name, Value value) +{ + if (constants.contains(name)) + PRINTA("WARNING: Attempt to modify constant '%1'.",name); + else + constants.insert(name,value); +} + Value Context::evaluate_function(QString name, const QVector<QString> &argnames, const QVector<Value> &argvalues) const { if (functions_p && functions_p->contains(name)) diff --git a/src/context.h b/src/context.h index d5be745..cbb1c4f 100644 --- a/src/context.h +++ b/src/context.h @@ -9,6 +9,7 @@ class Context { public: const Context *parent; + QHash<QString, Value> constants; QHash<QString, Value> variables; QHash<QString, Value> config_variables; const QHash<QString, class AbstractFunction*> *functions_p; @@ -27,6 +28,8 @@ public: void set_variable(QString name, Value value); Value lookup_variable(QString name, bool silent = false) const; + void set_constant(QString name, Value value); + QString get_absolute_path(const QString &filename) const; Value evaluate_function(QString name, const QVector<QString> &argnames, const QVector<Value> &argvalues) const; diff --git a/src/mainwin.cc b/src/mainwin.cc index 951c4f5..eeb7923 100644 --- a/src/mainwin.cc +++ b/src/mainwin.cc @@ -145,6 +145,8 @@ MainWindow::MainWindow(const QString &filename) root_ctx.set_variable("$fa", Value(12.0)); root_ctx.set_variable("$t", Value(0.0)); + root_ctx.set_constant("PI",Value(M_PI)); + Value zero3; zero3.type = Value::VECTOR; zero3.append(new Value(0.0)); |