summaryrefslogtreecommitdiff
path: root/src/context.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/context.cc')
-rw-r--r--src/context.cc20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/context.cc b/src/context.cc
index bfe9eb6..ba2690c 100644
--- a/src/context.cc
+++ b/src/context.cc
@@ -85,6 +85,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)
@@ -94,6 +96,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))
@@ -148,8 +158,16 @@ AbstractNode *Context::evaluate_module(const ModuleInstantiation *inst) const
return NULL;
}
+/*!
+ Returns the absolute path to the given filename, unless it's empty.
+ */
QString Context::get_absolute_path(const QString &filename) const
{
- return QFileInfo(QDir(this->document_path), filename).absoluteFilePath();
+ if (!filename.isEmpty()) {
+ return QFileInfo(QDir(this->document_path), filename).absoluteFilePath();
+ }
+ else {
+ return filename;
+ }
}
contact: Jan Huwald // Impressum