Register experimental features only with ENABLE_EXPERIMENTAL defined (fixes #687).

experimental-features-fix
Torsten Paul 2014-03-04 21:16:13 +01:00
parent c1ed1146cf
commit 0c2f2b0749
3 changed files with 14 additions and 2 deletions

View File

@ -16,11 +16,21 @@ Builtins *Builtins::instance(bool erase)
void Builtins::init(const char *name, class AbstractModule *module) void Builtins::init(const char *name, class AbstractModule *module)
{ {
#ifndef ENABLE_EXPERIMENTAL
if (module->is_experimental()) {
return;
}
#endif
Builtins::instance()->globalscope.modules[name] = module; Builtins::instance()->globalscope.modules[name] = module;
} }
void Builtins::init(const char *name, class AbstractFunction *function) void Builtins::init(const char *name, class AbstractFunction *function)
{ {
#ifndef ENABLE_EXPERIMENTAL
if (function->is_experimental()) {
return;
}
#endif
Builtins::instance()->globalscope.functions[name] = function; Builtins::instance()->globalscope.functions[name] = function;
} }

View File

@ -17,7 +17,8 @@ public:
AbstractFunction() : feature(NULL) {} AbstractFunction() : feature(NULL) {}
AbstractFunction(const Feature& feature) : feature(&feature) {} AbstractFunction(const Feature& feature) : feature(&feature) {}
virtual ~AbstractFunction(); virtual ~AbstractFunction();
virtual bool is_enabled() const { return (feature == NULL) || feature->is_enabled(); }; virtual bool is_experimental() const { return feature != NULL; }
virtual bool is_enabled() const { return (feature == NULL) || feature->is_enabled(); }
virtual Value evaluate(const class Context *ctx, const class EvalContext *evalctx) const; virtual Value evaluate(const class Context *ctx, const class EvalContext *evalctx) const;
virtual std::string dump(const std::string &indent, const std::string &name) const; virtual std::string dump(const std::string &indent, const std::string &name) const;
}; };

View File

@ -67,7 +67,8 @@ public:
AbstractModule() : feature(NULL) {} AbstractModule() : feature(NULL) {}
AbstractModule(const Feature& feature) : feature(&feature) {} AbstractModule(const Feature& feature) : feature(&feature) {}
virtual ~AbstractModule(); virtual ~AbstractModule();
virtual bool is_enabled() const { return (feature == NULL) || feature->is_enabled(); }; virtual bool is_experimental() const { return feature != NULL; }
virtual bool is_enabled() const { return (feature == NULL) || feature->is_enabled(); }
virtual class AbstractNode *instantiate(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; virtual std::string dump(const std::string &indent, const std::string &name) const;
}; };