[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] GNU Guile branch, master, updated. v2.1.0-715-g787f7b6
From: |
Andy Wingo |
Subject: |
[Guile-commits] GNU Guile branch, master, updated. v2.1.0-715-g787f7b6 |
Date: |
Sat, 08 Feb 2014 16:00:40 +0000 |
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 <address@hidden>
Date: Sat Feb 8 17:00:32 2014 +0100
Merge commit '24cac6554073bb6e691605cd6ac6196f3c0851a3'
Conflicts:
libguile/vectors.c
commit e0a00fe7e400aeb4d4314af410d43aea706cef62
Merge: 8051cf2 5cfeff1
Author: Andy Wingo <address@hidden>
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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Guile-commits] GNU Guile branch, master, updated. v2.1.0-715-g787f7b6,
Andy Wingo <=