diff options
author | Marius Kintel <marius@kintel.net> | 2013-04-19 21:52:01 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2013-04-26 21:45:03 (GMT) |
commit | 9a297ecee57549a4eb3919bde4f7b41a548724de (patch) | |
tree | b1f523e93f528559e9ada2d38d76be7a0362f9d4 /src/module.h | |
parent | b4568a09df8be0f212ba1c4fd1660459900e3cf0 (diff) |
Refactoring: Split out FileModule from Module, Added LocalScope renamed some confusing 'evaluate' methods to 'instantiate', added FileContext (not yet used)
Diffstat (limited to 'src/module.h')
-rw-r--r-- | src/module.h | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/src/module.h b/src/module.h index 94de25e..39d4bba 100644 --- a/src/module.h +++ b/src/module.h @@ -7,6 +7,7 @@ #include <boost/unordered_map.hpp> #include "value.h" #include "typedefs.h" +#include "localscope.h" class ModuleInstantiation { @@ -16,8 +17,8 @@ public: virtual ~ModuleInstantiation(); std::string dump(const std::string &indent) const; - class AbstractNode *evaluate_instance(const class Context *ctx) const; - std::vector<AbstractNode*> evaluateChildren(const Context *evalctx) const; + class AbstractNode *evaluate(const class Context *ctx) const; + std::vector<AbstractNode*> instantiateChildren(const Context *evalctx) const; void setPath(const std::string &path) { this->modpath = path; } const std::string &path() const { return this->modpath; } @@ -29,7 +30,7 @@ public: bool isRoot() const { return this->tag_root; } AssignmentList arguments; - std::vector<ModuleInstantiation*> children; + LocalScope scope; bool tag_root; bool tag_highlight; @@ -45,55 +46,53 @@ class IfElseModuleInstantiation : public ModuleInstantiation { public: IfElseModuleInstantiation() : ModuleInstantiation("if") { } virtual ~IfElseModuleInstantiation(); - std::vector<AbstractNode*> evaluateElseChildren(const Context *evalctx) const; + std::vector<AbstractNode*> instantiateElseChildren(const Context *evalctx) const; - std::vector<ModuleInstantiation*> else_children; + LocalScope else_scope; }; class AbstractModule { public: virtual ~AbstractModule(); - virtual class AbstractNode *evaluate(const Context *ctx, const ModuleInstantiation *inst, const class EvalContext *evalctx = NULL) const; + virtual class AbstractNode *instantiate(const Context *ctx, const ModuleInstantiation *inst, const class EvalContext *evalctx = NULL) const; virtual std::string dump(const std::string &indent, const std::string &name) const; }; class Module : public AbstractModule { public: - Module() : is_handling_dependencies(false) { } + Module() { } virtual ~Module(); - void setModulePath(const std::string &path) { this->path = path; } - const std::string &modulePath() const { return this->path; } - - virtual AbstractNode *evaluate(const Context *ctx, const ModuleInstantiation *inst, const EvalContext *evalctx) const; + virtual AbstractNode *instantiate(const Context *ctx, const ModuleInstantiation *inst, const EvalContext *evalctx) const; virtual std::string dump(const std::string &indent, const std::string &name) const; - void addChild(ModuleInstantiation *ch) { this->children.push_back(ch); } + void addChild(ModuleInstantiation *ch); - typedef boost::unordered_map<std::string, class Module*> ModuleContainer; - ModuleContainer usedlibs; - void registerInclude(const std::string &filename); - typedef boost::unordered_map<std::string, time_t> IncludeContainer; - IncludeContainer includes; - bool is_handling_dependencies; - bool handleDependencies(); + AssignmentList definition_arguments; - AssignmentList assignments; - - typedef boost::unordered_map<std::string, class AbstractFunction*> FunctionContainer; - FunctionContainer functions; - typedef boost::unordered_map<std::string, AbstractModule*> AbstractModuleContainer; - AbstractModuleContainer modules; + LocalScope scope; +}; - std::vector<ModuleInstantiation*> children; +class FileModule : public Module +{ +public: + FileModule() : is_handling_dependencies(false) {} + virtual ~FileModule() {} - std::vector<Assignment> definition_arguments; + void setModulePath(const std::string &path) { this->path = path; } + const std::string &modulePath() const { return this->path; } + void registerInclude(const std::string &filename); + bool handleDependencies(); -protected: + typedef boost::unordered_map<std::string, class FileModule*> ModuleContainer; + ModuleContainer usedlibs; + typedef boost::unordered_map<std::string, time_t> IncludeContainer; + IncludeContainer includes; private: + bool is_handling_dependencies; std::string path; }; |