summaryrefslogtreecommitdiff
path: root/src/runtime/c/pgf/evaluator.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/c/pgf/evaluator.c')
-rw-r--r--src/runtime/c/pgf/evaluator.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/runtime/c/pgf/evaluator.c b/src/runtime/c/pgf/evaluator.c
index 0e94792d0..a3f22e274 100644
--- a/src/runtime/c/pgf/evaluator.c
+++ b/src/runtime/c/pgf/evaluator.c
@@ -268,6 +268,17 @@ pgf_evaluate_save_variables(PgfEvalState* state, PgfValue* val)
}
}
+void
+pgf_evaluate_slide(PgfEvalState* state, size_t a, size_t b)
+{
+ size_t len = gu_buf_length(state->stack);
+ for (size_t i = 0; i < b-a; i++) {
+ PgfClosure* c = gu_buf_get(state->stack, PgfClosure*, len-(b-a)+i);
+ gu_buf_set(state->stack, PgfClosure*, len-b+i, c);
+ }
+ gu_buf_trim_n(state->stack, a);
+}
+
static PgfExpr
pgf_value2expr(PgfEvalState* state, int level, PgfClosure* clos, GuPool* pool)
{