summaryrefslogtreecommitdiff
path: root/libguile/values.c
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2011-02-10 18:03:14 -0500
committerAndy Wingo <wingo@pobox.com>2011-02-14 20:29:54 +0100
commita85c1f93f03e1de8f6a52a09b186e885c4c2f216 (patch)
treefb7612f3a472e05ad9ad46d3548529524cb34b3a /libguile/values.c
parent1fa6ac0014bd2b26b4eeb985ef123ba6cd4468e6 (diff)
downloadguile-a85c1f93f03e1de8f6a52a09b186e885c4c2f216.tar.gz
Added internal C function to extract from values object
* libguile/values.c (scm_i_extract_values_2): New internal function that extracts two values from a values object. * libguile/values.h: Added prototype.
Diffstat (limited to 'libguile/values.c')
-rw-r--r--libguile/values.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/libguile/values.c b/libguile/values.c
index 8bbfc7164..7dd9ecc9d 100644
--- a/libguile/values.c
+++ b/libguile/values.c
@@ -35,6 +35,24 @@
SCM scm_values_vtable;
+/* OBJ must be a values object containing exactly two values.
+ scm_i_extract_values_2 puts those two values into *p1 and *p2. */
+void
+scm_i_extract_values_2 (SCM obj, SCM *p1, SCM *p2)
+{
+ SCM values;
+
+ SCM_ASSERT_TYPE (SCM_VALUESP (obj), obj, SCM_ARG1,
+ "scm_i_extract_values_2", "values");
+ values = scm_struct_ref (obj, SCM_INUM0);
+ if (!scm_is_null_or_nil (SCM_CDDR (values)))
+ scm_wrong_type_arg_msg
+ ("scm_i_extract_values_2", SCM_ARG1, obj,
+ "a values object containing exactly two values");
+ *p1 = SCM_CAR (values);
+ *p2 = SCM_CADR (values);
+}
+
static SCM
print_values (SCM obj, SCM pwps)
{