diff options
author | Mark H Weaver <mhw@netris.org> | 2011-02-10 18:03:14 -0500 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2011-02-14 20:29:54 +0100 |
commit | a85c1f93f03e1de8f6a52a09b186e885c4c2f216 (patch) | |
tree | fb7612f3a472e05ad9ad46d3548529524cb34b3a /libguile/values.c | |
parent | 1fa6ac0014bd2b26b4eeb985ef123ba6cd4468e6 (diff) | |
download | guile-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.c | 18 |
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) { |