From 8e4a21154b9c48a7e81b0915f588de89e0394917 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 28 Jul 2015 01:35:58 -0400 Subject: [PATCH] Added Cyc_make_vector --- runtime.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/runtime.c b/runtime.c index 959e180a..8da57e09 100644 --- a/runtime.c +++ b/runtime.c @@ -1079,6 +1079,23 @@ object Cyc_command_line_arguments(object cont) { return_funcall1(cont, lis); } +object Cyc_make_vector(object cont, object len, object fill) { + object v = nil; + int i; + Cyc_check_int(len); + v = alloca(sizeof(vector_type)); + ((vector)v)->tag = vector_tag; + ((vector)v)->num_elt = ((integer_type *)len)->value; + ((vector)v)->elts = + (((vector)v)->num_elt > 0) ? + (object *)alloca(sizeof(object) * ((vector)v)->num_elt) : + NULL; + for (i = 0; i < ((vector)v)->num_elt; i++) { + ((vector)v)->elts[i] = fill; + } + return_funcall1(cont, v); +} + integer_type Cyc_system(object cmd) { if (nullp(cmd) || is_value_type(cmd) || type_of(cmd) != string_tag) { make_int(n, -1); @@ -1656,11 +1673,9 @@ void _make_91vector(object cont, object args) { Cyc_check_num_args("make-vector", 1, args); { integer_type argc = Cyc_length(args); if (argc.value >= 2) { - make_vector(v, car(args), cadr(args)); - return_funcall1(cont, v);} + Cyc_make_vector(cont, car(args), cadr(args));} else { - make_vector(v, car(args), boolean_f); - return_funcall1(cont, v);}}} + Cyc_make_vector(cont, car(args), boolean_f);}}} void _vector_91ref(object cont, object args) { Cyc_check_num_args("vector-ref", 2, args); { object ref = Cyc_vector_ref(car(args), cadr(args));