summaryrefslogtreecommitdiff
path: root/src/dxfdim.cc
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2013-04-19 01:42:33 (GMT)
committerMarius Kintel <marius@kintel.net>2013-04-26 21:42:32 (GMT)
commit64ed1eb9fe00e287d84b18830df86cc0de6b122a (patch)
tree3b5f4a51209b62a14d28abc7c0e01fc5753e162c /src/dxfdim.cc
parenta96f3f3c67d496279151cd3fff47589b8684c378 (diff)
Experiment: Lazy evaluation of argument lists in evaluation context. Allows e.g. for loop variables to be dependent on each other
Diffstat (limited to 'src/dxfdim.cc')
-rw-r--r--src/dxfdim.cc40
1 files changed, 20 insertions, 20 deletions
diff --git a/src/dxfdim.cc b/src/dxfdim.cc
index fbc24c4..ecdae80 100644
--- a/src/dxfdim.cc
+++ b/src/dxfdim.cc
@@ -52,17 +52,17 @@ Value builtin_dxf_dim(const Context *ctx, const EvalContext *evalctx)
// FIXME: We don't lookup the file relative to where this function was instantiated
// since the path is only available for ModuleInstantiations, not function expressions.
// See issue #217
- for (size_t i = 0; i < evalctx->eval_arguments.size(); i++) {
- if (evalctx->eval_arguments[i].first == "file")
- filename = ctx->getAbsolutePath(evalctx->eval_arguments[i].second.toString());
- if (evalctx->eval_arguments[i].first == "layer")
- layername = evalctx->eval_arguments[i].second.toString();
- if (evalctx->eval_arguments[i].first == "origin")
- evalctx->eval_arguments[i].second.getVec2(xorigin, yorigin);
- if (evalctx->eval_arguments[i].first == "scale")
- evalctx->eval_arguments[i].second.getDouble(scale);
- if (evalctx->eval_arguments[i].first == "name")
- name = evalctx->eval_arguments[i].second.toString();
+ for (size_t i = 0; i < evalctx->numArgs(); i++) {
+ if (evalctx->getArgName(i) == "file")
+ filename = ctx->getAbsolutePath(evalctx->getArgValue(i).toString());
+ if (evalctx->getArgName(i) == "layer")
+ layername = evalctx->getArgValue(i).toString();
+ if (evalctx->getArgName(i) == "origin")
+ evalctx->getArgValue(i).getVec2(xorigin, yorigin);
+ if (evalctx->getArgName(i) == "scale")
+ evalctx->getArgValue(i).getDouble(scale);
+ if (evalctx->getArgName(i) == "name")
+ name = evalctx->getArgValue(i).toString();
}
std::stringstream keystream;
@@ -146,15 +146,15 @@ Value builtin_dxf_cross(const Context *ctx, const EvalContext *evalctx)
// FIXME: We don't lookup the file relative to where this function was instantiated
// since the path is only available for ModuleInstantiations, not function expressions.
// See isse #217
- for (size_t i = 0; i < evalctx->eval_arguments.size(); i++) {
- if (evalctx->eval_arguments[i].first == "file")
- filename = ctx->getAbsolutePath(evalctx->eval_arguments[i].second.toString());
- if (evalctx->eval_arguments[i].first == "layer")
- layername = evalctx->eval_arguments[i].second.toString();
- if (evalctx->eval_arguments[i].first == "origin")
- evalctx->eval_arguments[i].second.getVec2(xorigin, yorigin);
- if (evalctx->eval_arguments[i].first == "scale")
- evalctx->eval_arguments[i].second.getDouble(scale);
+ for (size_t i = 0; i < evalctx->numArgs(); i++) {
+ if (evalctx->getArgName(i) == "file")
+ filename = ctx->getAbsolutePath(evalctx->getArgValue(i).toString());
+ if (evalctx->getArgName(i) == "layer")
+ layername = evalctx->getArgValue(i).toString();
+ if (evalctx->getArgName(i) == "origin")
+ evalctx->getArgValue(i).getVec2(xorigin, yorigin);
+ if (evalctx->getArgName(i) == "scale")
+ evalctx->getArgValue(i).getDouble(scale);
}
std::stringstream keystream;
contact: Jan Huwald // Impressum