From dc0ecebee11c7dc7a8650efd2f8537cb1a869ad4 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 15 Feb 2017 19:22:46 -0800 Subject: New internal function: vec. * lib.c (vec): New function. * lib.h (vec): Declared. --- lib.c | 22 ++++++++++++++++++++++ lib.h | 1 + 2 files changed, 23 insertions(+) diff --git a/lib.c b/lib.c index 98e80315..22135f89 100644 --- a/lib.c +++ b/lib.c @@ -6668,6 +6668,28 @@ val vectorv(struct args *args) return vec; } +val vec(val first, ...) +{ + va_list vl; + val vec = vector(zero, nil); + val next; + int count; + + va_start (vl, first); + + for (next = first, count = 0; + next != nao && count < 32; + next = va_arg(vl, val), count++) + { + vec_push(vec, next); + } + + if (count == 32 && next != nao) + internal_error("runaway arguments in vec function"); + + return vec; +} + val vec_list(val list) { val vec = vector(zero, nil); diff --git a/lib.h b/lib.h index 5f44eb41..2e374e7c 100644 --- a/lib.h +++ b/lib.h @@ -893,6 +893,7 @@ val vec_push(val vec, val item); val length_vec(val vec); val size_vec(val vec); val vectorv(struct args *); +val vec(val first, ...); val vec_list(val list); val list_vec(val vector); val copy_vec(val vec); -- cgit v1.2.3