1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-17 09:10:22 +02:00
Conflicts:
	libguile/vectors.c
	test-suite/tests/weaks.test
This commit is contained in:
Andy Wingo 2014-02-07 15:36:06 +01:00
commit 9db57a19e1
3 changed files with 30 additions and 38 deletions

View file

@ -1,5 +1,5 @@
/* Copyright (C) 1995,1996,1998,1999,2000,2001, 2006, 2008, 2009, 2010,
* 2011, 2012 Free Software Foundation, Inc.
* 2011, 2012, 2014 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@ -35,7 +35,6 @@
#include "libguile/strings.h"
#include "libguile/srfi-13.h"
#include "libguile/dynwind.h"
#include "libguile/deprecation.h"
#include "libguile/bdw-gc.h"
@ -112,7 +111,7 @@ SCM_GPROC (s_vector_length, "vector-length", 1, 0, 0, scm_vector_length, g_vecto
SCM
scm_vector_length (SCM v)
{
if (SCM_I_IS_VECTOR (v))
if (SCM_I_IS_NONWEAK_VECTOR (v))
return scm_from_size_t (SCM_I_VECTOR_LENGTH (v));
else if (SCM_I_ARRAYP (v) && SCM_I_ARRAY_NDIM (v) == 1)
{
@ -126,7 +125,7 @@ scm_vector_length (SCM v)
size_t
scm_c_vector_length (SCM v)
{
if (SCM_I_IS_VECTOR (v))
if (SCM_I_IS_NONWEAK_VECTOR (v))
return SCM_I_VECTOR_LENGTH (v);
else
return scm_to_size_t (scm_vector_length (v));
@ -208,8 +207,6 @@ scm_c_vector_ref (SCM v, size_t k)
scm_out_of_range (NULL, scm_from_size_t (k));
return SCM_SIMPLE_VECTOR_REF (v, k);
}
else if (SCM_I_WVECTP (v))
return scm_c_weak_vector_ref (v, k);
else if (SCM_I_ARRAYP (v) && SCM_I_ARRAY_NDIM (v) == 1)
{
scm_t_array_dim *dim = SCM_I_ARRAY_DIMS (v);
@ -221,8 +218,6 @@ scm_c_vector_ref (SCM v, size_t k)
if (SCM_I_IS_NONWEAK_VECTOR (vv))
return SCM_SIMPLE_VECTOR_REF (vv, k);
else if (SCM_I_WVECTP (vv))
return scm_c_weak_vector_ref (vv, k);
else
scm_wrong_type_arg_msg (NULL, 0, v, "non-uniform vector");
}
@ -262,8 +257,6 @@ scm_c_vector_set_x (SCM v, size_t k, SCM obj)
scm_out_of_range (NULL, scm_from_size_t (k));
SCM_SIMPLE_VECTOR_SET (v, k, obj);
}
else if (SCM_I_WVECTP (v))
scm_c_weak_vector_set_x (v, k, obj);
else if (SCM_I_ARRAYP (v) && SCM_I_ARRAY_NDIM (v) == 1)
{
scm_t_array_dim *dim = SCM_I_ARRAY_DIMS (v);
@ -275,8 +268,6 @@ scm_c_vector_set_x (SCM v, size_t k, SCM obj)
if (SCM_I_IS_NONWEAK_VECTOR (vv))
SCM_SIMPLE_VECTOR_SET (vv, k, obj);
else if (SCM_I_WVECTP (vv))
scm_c_weak_vector_set_x (vv, k, obj);
else
scm_wrong_type_arg_msg (NULL, 0, v, "non-uniform vector");
}