#include "libguile/strings.h"
#include "libguile/srfi-13.h"
#include "libguile/dynwind.h"
--#include "libguile/deprecation.h"
#include "libguile/bdw-gc.h"
SCM
scm_vector_length (SCM v)
{
-- if (SCM_I_IS_VECTOR (v))
- {
- if (SCM_I_WVECTP (v))
- scm_c_issue_deprecation_warning
- ("Using vector-length on weak vectors is deprecated. "
- "Use weak-vector-length from (ice-9 weak-vectors) instead.");
- return scm_from_size_t (SCM_I_VECTOR_LENGTH (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)
{
scm_t_array_dim *dim = SCM_I_ARRAY_DIMS (v);
{
if (SCM_I_IS_NONWEAK_VECTOR (v))
{
- register SCM elt;
-
if (k >= SCM_I_VECTOR_LENGTH (v))
scm_out_of_range (NULL, scm_from_size_t (k));
- elt = (SCM_I_VECTOR_ELTS(v))[k];
-
- return elt;
- }
- else if (SCM_I_WVECTP (v))
- {
- scm_c_issue_deprecation_warning
- ("Using vector-ref on weak vectors is deprecated. "
- "Instead, use weak-vector-ref from (ice-9 weak-vectors).");
- return scm_c_weak_vector_ref (v, 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);
SCM vv = SCM_I_ARRAY_V (v);
- if (SCM_I_IS_VECTOR (vv))
- {
- register SCM elt;
-
- if (k >= dim->ubnd - dim->lbnd + 1)
- scm_out_of_range (NULL, scm_from_size_t (k));
- k = SCM_I_ARRAY_BASE (v) + k*dim->inc;
- elt = (SCM_I_VECTOR_ELTS (vv))[k];
-
- if (SCM_UNPACK (elt) == 0 && (SCM_I_WVECTP (vv)))
- {
- scm_c_issue_deprecation_warning
- ("Weak arrays are deprecated. Use weak vectors instead.");
- /* ELT was a weak pointer and got nullified by the GC. */
- return SCM_BOOL_F;
- }
-
- return elt;
- }
- scm_wrong_type_arg_msg (NULL, 0, v, "non-uniform vector");
+
+ k = SCM_I_ARRAY_BASE (v) + k*dim->inc;
+ if (k >= dim->ubnd - dim->lbnd + 1)
+ scm_out_of_range (NULL, scm_from_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");
}
else
- SCM_WTA_DISPATCH_2 (g_vector_ref, v, scm_from_size_t (k), 2, NULL);
+ return scm_wta_dispatch_2 (g_vector_ref, v, scm_from_size_t (k), 2,
+ "vector-ref");
}
SCM_GPROC (s_vector_set_x, "vector-set!", 3, 0, 0, scm_vector_set_x, g_vector_set_x);
if (SCM_I_IS_NONWEAK_VECTOR (v))
{
if (k >= SCM_I_VECTOR_LENGTH (v))
- scm_out_of_range (NULL, scm_from_size_t (k));
- (SCM_I_VECTOR_WELTS(v))[k] = obj;
- }
- else if (SCM_I_WVECTP (v))
- {
- scm_c_issue_deprecation_warning
- ("Using vector-set! on weak vectors is deprecated. "
- "Instead, use weak-vector-set! from (ice-9 weak-vectors).");
- scm_c_weak_vector_set_x (v, k, 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);
SCM vv = SCM_I_ARRAY_V (v);
- if (SCM_I_IS_VECTOR (vv))
- {
- if (k >= dim->ubnd - dim->lbnd + 1)
- scm_out_of_range (NULL, scm_from_size_t (k));
- k = SCM_I_ARRAY_BASE (v) + k*dim->inc;
- (SCM_I_VECTOR_WELTS (vv))[k] = obj;
-
- if (SCM_I_WVECTP (vv))
- {
- /* Make it a weak pointer. */
- SCM *link = & SCM_I_VECTOR_WELTS (vv)[k];
- SCM_I_REGISTER_DISAPPEARING_LINK ((void **) link, SCM2PTR (obj));
- scm_c_issue_deprecation_warning
- ("Weak arrays are deprecated. Use weak vectors instead.");
- }
- }
+
+ k = SCM_I_ARRAY_BASE (v) + k*dim->inc;
+ if (k >= dim->ubnd - dim->lbnd + 1)
+ scm_out_of_range (NULL, scm_from_size_t (k));
+
+ 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");
}