mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 03:30:27 +02:00
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.
This commit is contained in:
parent
1fa6ac0014
commit
a85c1f93f0
2 changed files with 20 additions and 0 deletions
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -30,6 +30,8 @@ SCM_API SCM scm_values_vtable;
|
|||
#define SCM_VALUESP(x) (SCM_STRUCTP (x)\
|
||||
&& scm_is_eq (scm_struct_vtable (x), scm_values_vtable))
|
||||
|
||||
SCM_INTERNAL void scm_i_extract_values_2 (SCM obj, SCM *p1, SCM *p2);
|
||||
|
||||
SCM_API SCM scm_values (SCM args);
|
||||
SCM_INTERNAL void scm_init_values (void);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue