diff options
author | Marius Kintel <marius@kintel.net> | 2012-03-27 22:05:00 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2012-03-27 22:05:58 (GMT) |
commit | 327310f190bbd81c7b71b568d5bf72bb900cc9db (patch) | |
tree | 9399bb490ecafe9f0c7fd209c680311d829eb631 /src/import.cc | |
parent | 4394c7a030ce7a08c95bd1af2e8c38ffcf972439 (diff) |
Rewrote the Value class to be based on boost::variant - this should reduce memory footprint and improve performance
Diffstat (limited to 'src/import.cc')
-rw-r--r-- | src/import.cc | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/src/import.cc b/src/import.cc index 597ecfb..221ee55 100644 --- a/src/import.cc +++ b/src/import.cc @@ -69,17 +69,15 @@ AbstractNode *ImportModule::evaluate(const Context *ctx, const ModuleInstantiati // Map old argnames to new argnames for compatibility std::vector<std::string> inst_argnames = inst->argnames; for (size_t i=0; i<inst_argnames.size(); i++) { - if (inst_argnames[i] == "filename") - inst_argnames[i] = "file"; - if (inst_argnames[i] == "layername") - inst_argnames[i] = "layer"; + if (inst_argnames[i] == "filename") inst_argnames[i] = "file"; + if (inst_argnames[i] == "layername") inst_argnames[i] = "layer"; } Context c(ctx); c.args(argnames, argexpr, inst_argnames, inst->argvalues); Value v = c.lookup_variable("file"); - std::string filename = c.getAbsolutePath(v.text); + std::string filename = c.getAbsolutePath(v.isUndefined() ? "" : v.toString()); import_type_e actualtype = this->type; if (actualtype == TYPE_UNKNOWN) { std::string extraw = boosty::extension_str( path(filename) ); @@ -91,22 +89,22 @@ AbstractNode *ImportModule::evaluate(const Context *ctx, const ModuleInstantiati ImportNode *node = new ImportNode(inst, actualtype); - node->fn = c.lookup_variable("$fn").num; - node->fs = c.lookup_variable("$fs").num; - node->fa = c.lookup_variable("$fa").num; + node->fn = c.lookup_variable("$fn").toDouble(); + node->fs = c.lookup_variable("$fs").toDouble(); + node->fa = c.lookup_variable("$fa").toDouble(); node->filename = filename; - node->layername = c.lookup_variable("layer", true).text; - node->convexity = c.lookup_variable("convexity", true).num; + Value layerval = c.lookup_variable("layer", true); + node->layername = layerval.isUndefined() ? "" : layerval.toString(); + node->convexity = c.lookup_variable("convexity", true).toDouble(); - if (node->convexity <= 0) - node->convexity = 1; + if (node->convexity <= 0) node->convexity = 1; Value origin = c.lookup_variable("origin", true); node->origin_x = node->origin_y = 0; - origin.getv2(node->origin_x, node->origin_y); + origin.getVec2(node->origin_x, node->origin_y); - node->scale = c.lookup_variable("scale", true).num; + node->scale = c.lookup_variable("scale", true).toDouble(); if (node->scale <= 0) node->scale = 1; |