diff options
Diffstat (limited to 'src/context.cc')
-rw-r--r-- | src/context.cc | 20 |
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; + } } |