guile-commits
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]