This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GNU Guile".
http://git.savannah.gnu.org/cgit/guile.git/commit/?id=787f7b644fa480b4815974c9850d5707881cf9f7 The branch, master has been updated via 787f7b644fa480b4815974c9850d5707881cf9f7 (commit) via e0a00fe7e400aeb4d4314af410d43aea706cef62 (commit) via 24cac6554073bb6e691605cd6ac6196f3c0851a3 (commit) via 5cfeff11cc58148c58a85a879fd7a3e7cfbbe8e2 (commit) from 8051cf23044e5dbbece0d328102197a04ce5718d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 787f7b644fa480b4815974c9850d5707881cf9f7 Merge: e0a00fe 24cac65 Author: Andy Wingo <[email protected]> Date: Sat Feb 8 17:00:32 2014 +0100 Merge commit '24cac6554073bb6e691605cd6ac6196f3c0851a3' Conflicts: libguile/vectors.c commit e0a00fe7e400aeb4d4314af410d43aea706cef62 Merge: 8051cf2 5cfeff1 Author: Andy Wingo <[email protected]> Date: Sat Feb 8 16:54:01 2014 +0100 Merge commit '5cfeff11cc58148c58a85a879fd7a3e7cfbbe8e2' Conflicts: libguile/vectors.c ----------------------------------------------------------------------- Summary of changes: libguile/sort.c | 16 +++-- libguile/vectors.c | 165 +++++++++++++++++----------------------------------- 2 files changed, 63 insertions(+), 118 deletions(-) diff --git a/libguile/sort.c b/libguile/sort.c index 2a36320..998be89 100644 --- a/libguile/sort.c +++ b/libguile/sort.c @@ -1,5 +1,5 @@ /* Copyright (C) 1999, 2000, 2001, 2002, 2004, 2006, 2007, 2008, 2009, - * 2010, 2011, 2012 Free Software Foundation, Inc. + * 2010, 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 @@ -377,12 +377,13 @@ SCM_DEFINE (scm_sort_x, "sort!", 2, 0, 0, SCM_VALIDATE_LIST_COPYLEN (1, items, len); return scm_merge_list_step (&items, less, len); } - else if (scm_is_vector (items)) + else if (scm_is_simple_vector (items) + || (scm_is_array (items) && scm_c_array_rank (items) == 1)) { scm_restricted_vector_sort_x (items, less, scm_from_int (0), - scm_vector_length (items)); + scm_array_length (items)); return items; } else @@ -403,7 +404,8 @@ SCM_DEFINE (scm_sort, "sort", 2, 0, 0, if (scm_is_pair (items)) return scm_sort_x (scm_list_copy (items), less); - else if (scm_is_vector (items)) + else if (scm_is_simple_vector (items) + || (scm_is_array (items) && scm_c_array_rank (items) == 1)) return scm_sort_x (scm_vector_copy (items), less); else SCM_WRONG_TYPE_ARG (1, items); @@ -489,7 +491,8 @@ SCM_DEFINE (scm_stable_sort_x, "stable-sort!", 2, 0, 0, SCM_VALIDATE_LIST_COPYLEN (1, items, len); return scm_merge_list_step (&items, less, len); } - else if (scm_is_vector (items)) + else if (scm_is_simple_vector (items) + || (scm_is_array (items) && scm_c_array_rank (items) == 1)) { scm_t_array_handle temp_handle, vec_handle; SCM temp, *temp_elts, *vec_elts; @@ -532,7 +535,8 @@ SCM_DEFINE (scm_stable_sort, "stable-sort", 2, 0, 0, if (scm_is_pair (items)) return scm_stable_sort_x (scm_list_copy (items), less); - else if (scm_is_vector (items)) + else if (scm_is_simple_vector (items) + || (scm_is_array (items) && scm_c_array_rank (items) == 1)) return scm_stable_sort_x (scm_vector_copy (items), less); else SCM_WRONG_TYPE_ARG (1, items); diff --git a/libguile/vectors.c b/libguile/vectors.c index 09989a8..1c659de 100644 --- a/libguile/vectors.c +++ b/libguile/vectors.c @@ -46,20 +46,13 @@ int scm_is_vector (SCM obj) { - if (SCM_I_IS_VECTOR (obj)) - return 1; - if (SCM_I_ARRAYP (obj) && SCM_I_ARRAY_NDIM (obj) == 1) - { - SCM v = SCM_I_ARRAY_V (obj); - return SCM_I_IS_VECTOR (v); - } - return 0; + return SCM_I_IS_NONWEAK_VECTOR (obj); } int scm_is_simple_vector (SCM obj) { - return SCM_I_IS_VECTOR (obj); + return SCM_I_IS_NONWEAK_VECTOR (obj); } const SCM * @@ -106,30 +99,24 @@ SCM_DEFINE (scm_vector_p, "vector?", 1, 0, 0, } #undef FUNC_NAME -SCM_GPROC (s_vector_length, "vector-length", 1, 0, 0, scm_vector_length, g_vector_length); -/* Returns the number of elements in @var{vector} as an exact integer. */ -SCM -scm_vector_length (SCM v) +SCM_DEFINE (scm_vector_length, "vector-length", 1, 0, 0, + (SCM v), + "Returns the number of elements in @var{vector} as an exact integer.") +#define FUNC_NAME s_scm_vector_length { - 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); - return scm_from_size_t (dim->ubnd - dim->lbnd + 1); - } - else - return scm_wta_dispatch_1 (g_vector_length, v, 1, "vector-length"); + return scm_from_size_t (scm_c_vector_length (v)); } +#undef FUNC_NAME size_t scm_c_vector_length (SCM v) +#define FUNC_NAME s_scm_vector_length { - if (SCM_I_IS_NONWEAK_VECTOR (v)) - return SCM_I_VECTOR_LENGTH (v); - else - return scm_to_size_t (scm_vector_length (v)); + SCM_VALIDATE_VECTOR (1, v); + + return SCM_I_VECTOR_LENGTH (v); } +#undef FUNC_NAME SCM_REGISTER_PROC (s_list_to_vector, "list->vector", 1, 0, 0, scm_vector); /* @@ -174,114 +161,68 @@ SCM_DEFINE (scm_vector, "vector", 0, 0, 1, } #undef FUNC_NAME -SCM_GPROC (s_vector_ref, "vector-ref", 2, 0, 0, scm_vector_ref, g_vector_ref); - -/* - "@var{k} must be a valid index of @var{vector}.\n" - "@samp{Vector-ref} returns the contents of element @var{k} of\n" - "@var{vector}.\n\n" - "@lisp\n" - "(vector-ref '#(1 1 2 3 5 8 13 21) 5) @result{} 8\n" - "(vector-ref '#(1 1 2 3 5 8 13 21)\n" - " (let ((i (round (* 2 (acos -1)))))\n" - " (if (inexact? i)\n" - " (inexact->exact i)\n" - " i))) @result{} 13\n" - "@end lisp" -*/ - -SCM -scm_vector_ref (SCM v, SCM k) -#define FUNC_NAME s_vector_ref +SCM_DEFINE (scm_vector_ref, "vector-ref", 2, 0, 0, + (SCM vector, SCM k), + "@var{k} must be a valid index of @var{vector}.\n" + "@samp{Vector-ref} returns the contents of element @var{k} of\n" + "@var{vector}.\n\n" + "@lisp\n" + "(vector-ref '#(1 1 2 3 5 8 13 21) 5) @result{} 8\n" + "(vector-ref '#(1 1 2 3 5 8 13 21)\n" + " (let ((i (round (* 2 (acos -1)))))\n" + " (if (inexact? i)\n" + " (inexact->exact i)\n" + " i))) @result{} 13\n" + "@end lisp") +#define FUNC_NAME s_scm_vector_ref { - return scm_c_vector_ref (v, scm_to_size_t (k)); + return scm_c_vector_ref (vector, scm_to_size_t (k)); } #undef FUNC_NAME SCM scm_c_vector_ref (SCM v, size_t k) +#define FUNC_NAME s_scm_vector_ref { - if (SCM_I_IS_NONWEAK_VECTOR (v)) - { - if (k >= SCM_I_VECTOR_LENGTH (v)) - scm_out_of_range (NULL, scm_from_size_t (k)); - return SCM_SIMPLE_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); + SCM_VALIDATE_VECTOR (1, v); - 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 (k >= SCM_I_VECTOR_LENGTH (v)) + 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 - scm_wrong_type_arg_msg (NULL, 0, v, "non-uniform vector"); - } - else - return scm_wta_dispatch_2 (g_vector_ref, v, scm_from_size_t (k), 2, - "vector-ref"); + return SCM_SIMPLE_VECTOR_REF (v, k); } +#undef FUNC_NAME -SCM_GPROC (s_vector_set_x, "vector-set!", 3, 0, 0, scm_vector_set_x, g_vector_set_x); - -/* "@var{k} must be a valid index of @var{vector}.\n" - "@code{Vector-set!} stores @var{obj} in element @var{k} of @var{vector}.\n" - "The value returned by @samp{vector-set!} is unspecified.\n" - "@lisp\n" - "(let ((vec (vector 0 '(2 2 2 2) "Anna")))\n" - " (vector-set! vec 1 '("Sue" "Sue"))\n" - " vec) @result{} #(0 ("Sue" "Sue") "Anna")\n" - "(vector-set! '#(0 1 2) 1 "doe") @result{} @emph{error} ; constant vector\n" - "@end lisp" -*/ - -SCM -scm_vector_set_x (SCM v, SCM k, SCM obj) -#define FUNC_NAME s_vector_set_x +SCM_DEFINE (scm_vector_set_x, "vector-set!", 3, 0, 0, + (SCM vector, SCM k, SCM obj), + "@var{k} must be a valid index of @var{vector}.\n" + "@code{Vector-set!} stores @var{obj} in element @var{k} of @var{vector}.\n" + "The value returned by @samp{vector-set!} is unspecified.\n" + "@lisp\n" + "(let ((vec (vector 0 '(2 2 2 2) \"Anna\")))\n" + " (vector-set! vec 1 '(\"Sue\" \"Sue\"))\n" + " vec) @result{} #(0 (\"Sue\" \"Sue\") \"Anna\")\n" + "(vector-set! '#(0 1 2) 1 \"doe\") @result{} @emph{error} ; constant vector\n" + "@end lisp") +#define FUNC_NAME s_scm_vector_set_x { - scm_c_vector_set_x (v, scm_to_size_t (k), obj); + scm_c_vector_set_x (vector, scm_to_size_t (k), obj); return SCM_UNSPECIFIED; } #undef FUNC_NAME void scm_c_vector_set_x (SCM v, size_t k, SCM obj) +#define FUNC_NAME s_scm_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_SIMPLE_VECTOR_SET (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); + SCM_VALIDATE_VECTOR (1, v); - 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 (k >= SCM_I_VECTOR_LENGTH (v)) + 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 - scm_wrong_type_arg_msg (NULL, 0, v, "non-uniform vector"); - } - else - { - if (SCM_UNPACK (g_vector_set_x)) - scm_wta_dispatch_n (g_vector_set_x, - scm_list_3 (v, scm_from_size_t (k), obj), - 0, - "vector-set!"); - else - scm_wrong_type_arg_msg (NULL, 0, v, "vector"); - } + SCM_SIMPLE_VECTOR_SET (v, k, obj); } +#undef FUNC_NAME SCM_DEFINE (scm_make_vector, "make-vector", 1, 1, 0, (SCM k, SCM fill), hooks/post-receive -- GNU Guile
