#ifndef MODULE_H_ #define MODULE_H_ #include #include #include #include "value.h" class ModuleInstantiation { public: QString label; QString modname; QVector argnames; QVector argexpr; QVector argvalues; QVector children; bool tag_root; bool tag_highlight; bool tag_background; const class Context *ctx; ModuleInstantiation() : tag_root(false), tag_highlight(false), tag_background(false), ctx(NULL) { } ~ModuleInstantiation(); QString dump(QString indent) const; class AbstractNode *evaluate(const Context *ctx) const; }; class AbstractModule { public: virtual ~AbstractModule(); virtual class AbstractNode *evaluate(const Context *ctx, const ModuleInstantiation *inst) const; virtual QString dump(QString indent, QString name) const; }; class Module : public AbstractModule { public: QVector argnames; QVector argexpr; QVector assignments_var; QVector assignments_expr; QHash functions; QHash modules; QVector children; Module() { } virtual ~Module(); virtual AbstractNode *evaluate(const Context *ctx, const ModuleInstantiation *inst) const; virtual QString dump(QString indent, QString name) const; }; #endif