summaryrefslogtreecommitdiff
path: root/src/context.h
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2013-04-27 05:01:45 (GMT)
committerMarius Kintel <marius@kintel.net>2013-04-27 05:01:45 (GMT)
commit17df3f6275fce73119c311cc73a6ad057d3b47ee (patch)
tree6c907e241b53c40c10743bbf08754b86a13f6457 /src/context.h
parent6b3daa748543f13cc7cf8eff1c9efeebd6dc3a14 (diff)
parent7858b0443e7fb09134f2b69a535417688353c0bb (diff)
Merge pull request #328 from openscad/issue116
Issue116
Diffstat (limited to 'src/context.h')
-rw-r--r--src/context.h34
1 files changed, 16 insertions, 18 deletions
diff --git a/src/context.h b/src/context.h
index eb9a175..51fc45c 100644
--- a/src/context.h
+++ b/src/context.h
@@ -5,48 +5,46 @@
#include <vector>
#include <boost/unordered_map.hpp>
#include "value.h"
+#include "typedefs.h"
class Context
{
public:
- Context(const Context *parent = NULL, const class Module *library = NULL);
- ~Context();
+ Context(const Context *parent = NULL);
+ virtual ~Context();
- 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);
+ virtual Value evaluate_function(const std::string &name, const class EvalContext *evalctx) const;
+ virtual class AbstractNode *evaluate_module(const class ModuleInstantiation &inst, const EvalContext *evalctx) const;
+
+ void setVariables(const AssignmentList &args,
+ const class EvalContext *evalctx = NULL);
void set_variable(const std::string &name, const Value &value);
void set_constant(const std::string &name, const 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;
void setDocumentPath(const std::string &path) { this->document_path = path; }
+ const std::string &documentPath() const { return this->document_path; }
std::string getAbsolutePath(const std::string &filename) const;
public:
const Context *parent;
- const boost::unordered_map<std::string, class AbstractFunction*> *functions_p;
- const boost::unordered_map<std::string, class AbstractModule*> *modules_p;
- typedef boost::unordered_map<std::string, class Module*> ModuleContainer;
- const ModuleContainer *usedlibs_p;
- const ModuleInstantiation *inst_p;
static std::vector<const Context*> ctx_stack;
- mutable boost::unordered_map<std::string, int> recursioncount;
-
-private:
+protected:
typedef boost::unordered_map<std::string, Value> ValueMap;
ValueMap constants;
ValueMap variables;
ValueMap config_variables;
+
std::string document_path;
+
+#ifdef DEBUG
+public:
+ virtual void dump(const class AbstractModule *mod, const ModuleInstantiation *inst);
+#endif
};
#endif
contact: Jan Huwald // Impressum