summaryrefslogtreecommitdiff
path: root/src/context.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/context.h')
-rw-r--r--src/context.h57
1 files changed, 35 insertions, 22 deletions
diff --git a/src/context.h b/src/context.h
index cbb1c4f..f085e01 100644
--- a/src/context.h
+++ b/src/context.h
@@ -1,39 +1,52 @@
#ifndef CONTEXT_H_
#define CONTEXT_H_
-#include <QHash>
-#include <QString>
+#include <string>
+#include <vector>
+#include <boost/unordered_map.hpp>
#include "value.h"
+using boost::unordered_map;
+
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;
- const QHash<QString, class AbstractModule*> *modules_p;
- const QHash<QString, class Module*> *usedlibs_p;
- const class ModuleInstantiation *inst_p;
- QString document_path;
-
- static QVector<const Context*> ctx_stack;
-
- Context(const Context *parent = NULL);
+ Context(const Context *parent = NULL, const class Module *library = NULL);
~Context();
- void args(const QVector<QString> &argnames, const QVector<class Expression*> &argexpr, const QVector<QString> &call_argnames, const QVector<Value> &call_argvalues);
+ void args(const std::vector<std::string> &argnames,
+ const std::vector<class Expression*> &argexpr,
+ const std::vector<std::string> &call_argnames,
+ const std::vector<Value> &call_argvalues);
- void set_variable(QString name, Value value);
- Value lookup_variable(QString name, bool silent = false) const;
+ void set_variable(const std::string &name, const Value &value);
+ void set_constant(const std::string &name, const Value &value);
- void set_constant(QString name, Value value);
+ Value lookup_variable(const std::string &name, bool silent = false) const;
+ Value evaluate_function(const std::string &name,
+ const std::vector<std::string> &argnames,
+ const std::vector<Value> &argvalues) const;
+ class AbstractNode *evaluate_module(const class ModuleInstantiation &inst) const;
- QString get_absolute_path(const QString &filename) const;
+ void setDocumentPath(const std::string &path) { this->document_path = path; }
+ std::string getAbsolutePath(const std::string &filename) const;
- Value evaluate_function(QString name, const QVector<QString> &argnames, const QVector<Value> &argvalues) const;
- class AbstractNode *evaluate_module(const ModuleInstantiation *inst) const;
+public:
+ const Context *parent;
+ const unordered_map<std::string, class AbstractFunction*> *functions_p;
+ const unordered_map<std::string, class AbstractModule*> *modules_p;
+ typedef unordered_map<std::string, class Module*> ModuleContainer;
+ const ModuleContainer *usedlibs_p;
+ const ModuleInstantiation *inst_p;
+
+ static std::vector<const Context*> ctx_stack;
+
+private:
+ typedef unordered_map<std::string, Value> ValueMap;
+ ValueMap constants;
+ ValueMap variables;
+ ValueMap config_variables;
+ std::string document_path;
};
#endif
contact: Jan Huwald // Impressum