mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +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;
|
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
|
static SCM
|
||||||
print_values (SCM obj, SCM pwps)
|
print_values (SCM obj, SCM pwps)
|
||||||
{
|
{
|
||||||
|
|
|
@ -30,6 +30,8 @@ SCM_API SCM scm_values_vtable;
|
||||||
#define SCM_VALUESP(x) (SCM_STRUCTP (x)\
|
#define SCM_VALUESP(x) (SCM_STRUCTP (x)\
|
||||||
&& scm_is_eq (scm_struct_vtable (x), scm_values_vtable))
|
&& 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_API SCM scm_values (SCM args);
|
||||||
SCM_INTERNAL void scm_init_values (void);
|
SCM_INTERNAL void scm_init_values (void);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue