mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +02:00
add scm_c_values helper
* libguile/values.h: * libguile/values.c (scm_c_values): New public helper.
This commit is contained in:
parent
4bd53c1ba3
commit
c15defef7f
2 changed files with 18 additions and 5 deletions
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 2000, 2001, 2006, 2008, 2009, 2011 Free Software Foundation, Inc.
|
/* Copyright (C) 2000, 2001, 2006, 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public License
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
@ -108,14 +108,26 @@ SCM_DEFINE (scm_values, "values", 0, 0, 1,
|
||||||
if (n == 1)
|
if (n == 1)
|
||||||
result = SCM_CAR (args);
|
result = SCM_CAR (args);
|
||||||
else
|
else
|
||||||
{
|
result = scm_c_make_struct (scm_values_vtable, 0, 1, SCM_UNPACK (args));
|
||||||
result = scm_c_make_struct (scm_values_vtable, 0, 1, SCM_UNPACK (args));
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#undef FUNC_NAME
|
#undef FUNC_NAME
|
||||||
|
|
||||||
|
SCM
|
||||||
|
scm_c_values (SCM *base, size_t nvalues)
|
||||||
|
{
|
||||||
|
SCM ret, *walk;
|
||||||
|
|
||||||
|
if (nvalues == 1)
|
||||||
|
return *base;
|
||||||
|
|
||||||
|
for (ret = SCM_EOL, walk = base + nvalues - 1; walk >= base; walk--)
|
||||||
|
ret = scm_cons (*walk, ret);
|
||||||
|
|
||||||
|
return scm_values (ret);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
scm_init_values (void)
|
scm_init_values (void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#ifndef SCM_VALUES_H
|
#ifndef SCM_VALUES_H
|
||||||
#define SCM_VALUES_H
|
#define SCM_VALUES_H
|
||||||
|
|
||||||
/* Copyright (C) 2000,2001, 2006, 2008 Free Software Foundation, Inc.
|
/* Copyright (C) 2000,2001, 2006, 2008, 2012 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public License
|
* modify it under the terms of the GNU Lesser General Public License
|
||||||
|
@ -33,6 +33,7 @@ SCM_API SCM scm_values_vtable;
|
||||||
SCM_INTERNAL void scm_i_extract_values_2 (SCM obj, SCM *p1, SCM *p2);
|
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_API SCM scm_c_values (SCM *base, size_t nvalues);
|
||||||
SCM_API SCM scm_c_value_ref (SCM values, size_t idx);
|
SCM_API SCM scm_c_value_ref (SCM values, size_t idx);
|
||||||
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