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. release_1-9-13-88-g9f


From: Andy Wingo
Subject: [Guile-commits] GNU Guile branch, master, updated. release_1-9-13-88-g9fe717e
Date: Fri, 19 Nov 2010 16:04:45 +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=9fe717e23c50680b77860dcb3e30b00184caba4f

The branch, master has been updated
       via  9fe717e23c50680b77860dcb3e30b00184caba4f (commit)
      from  402c35ac8115a48ee1fe300eb87b3ed43518be94 (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 9fe717e23c50680b77860dcb3e30b00184caba4f
Author: Andy Wingo <address@hidden>
Date:   Fri Nov 19 17:08:36 2010 +0100

    fix string-filter and string-delete argument order
    
    * libguile/srfi-13.h:
    * libguile/srfi-13.c (scm_string_filter, scm_string_delete): Swap
      char_pred and s argument order, to comply with SRFI-13. There is a
      back-compat shim that will detect programs that used the old,
      erroneous interface, while giving a warning.
    
    * doc/ref/api-data.texi: Update docs.

-----------------------------------------------------------------------

Summary of changes:
 doc/ref/api-data.texi |    8 ++++----
 libguile/srfi-13.c    |   41 +++++++++++++++++++++++++++++++++++------
 libguile/srfi-13.h    |    6 +++---
 3 files changed, 42 insertions(+), 13 deletions(-)

diff --git a/doc/ref/api-data.texi b/doc/ref/api-data.texi
index 6dcab05..14b81f5 100755
--- a/doc/ref/api-data.texi
+++ b/doc/ref/api-data.texi
@@ -3850,8 +3850,8 @@ If @var{start} or @var{end} indices are provided, they 
restrict
 of @var{s}.
 @end deffn
 
address@hidden {Scheme Procedure} string-filter s char_pred [start [end]]
address@hidden {C Function} scm_string_filter (s, char_pred, start, end)
address@hidden {Scheme Procedure} string-filter char_pred s [start [end]]
address@hidden {C Function} scm_string_filter (char_pred, s, start, end)
 Filter the string @var{s}, retaining only those characters which
 satisfy @var{char_pred}.
 
@@ -3860,8 +3860,8 @@ a predicate, if it is a character, it is tested for 
equality and if it
 is a character set, it is tested for membership.
 @end deffn
 
address@hidden {Scheme Procedure} string-delete s char_pred [start [end]]
address@hidden {C Function} scm_string_delete (s, char_pred, start, end)
address@hidden {Scheme Procedure} string-delete char_pred s [start [end]]
address@hidden {C Function} scm_string_delete (char_pred, s, start, end)
 Delete characters satisfying @var{char_pred} from @var{s}.
 
 If @var{char_pred} is a procedure, it is applied to each character as
diff --git a/libguile/srfi-13.c b/libguile/srfi-13.c
index e9bf94e..afeb804 100644
--- a/libguile/srfi-13.c
+++ b/libguile/srfi-13.c
@@ -29,6 +29,7 @@
 
 #include "libguile.h"
 
+#include <libguile/deprecation.h>
 #include "libguile/srfi-13.h"
 #include "libguile/srfi-14.h"
 
@@ -3033,7 +3034,7 @@ SCM_DEFINE (scm_string_split, "string-split", 2, 0, 0,
 
 
 SCM_DEFINE (scm_string_filter, "string-filter", 2, 2, 0,
-           (SCM s, SCM char_pred, SCM start, SCM end),
+           (SCM char_pred, SCM s, SCM start, SCM end),
            "Filter the string @var{s}, retaining only those characters\n"
            "which satisfy @var{char_pred}.\n"
            "\n"
@@ -3047,7 +3048,21 @@ SCM_DEFINE (scm_string_filter, "string-filter", 2, 2, 0,
   SCM result;
   size_t idx;
 
-  MY_VALIDATE_SUBSTRING_SPEC (1, s,
+  if (scm_is_string (char_pred))
+    {
+      SCM tmp;
+      
+      scm_c_issue_deprecation_warning
+        ("Guile used to use the wrong argument order for string-filter.\n"
+         "This call to string-filter had the arguments in the wrong order.\n"
+         "See SRFI-13 for more details. At some point we will remove this 
hack.");
+
+      tmp = char_pred;
+      char_pred = s;
+      s = tmp;
+    }
+
+  MY_VALIDATE_SUBSTRING_SPEC (2, s,
                              3, start, cstart,
                              4, end, cend);
 
@@ -3130,7 +3145,7 @@ SCM_DEFINE (scm_string_filter, "string-filter", 2, 2, 0,
       SCM ls = SCM_EOL;
 
       SCM_ASSERT (scm_is_true (scm_procedure_p (char_pred)),
-                  char_pred, SCM_ARG2, FUNC_NAME);
+                  char_pred, SCM_ARG1, FUNC_NAME);
       idx = cstart;
       while (idx < cend)
        {
@@ -3151,7 +3166,7 @@ SCM_DEFINE (scm_string_filter, "string-filter", 2, 2, 0,
 
 
 SCM_DEFINE (scm_string_delete, "string-delete", 2, 2, 0,
-           (SCM s, SCM char_pred, SCM start, SCM end),
+           (SCM char_pred, SCM s, SCM start, SCM end),
            "Delete characters satisfying @var{char_pred} from @var{s}.\n"
            "\n"
            "If @var{char_pred} is a procedure, it is applied to each\n"
@@ -3164,7 +3179,21 @@ SCM_DEFINE (scm_string_delete, "string-delete", 2, 2, 0,
   SCM result;
   size_t idx;
 
-  MY_VALIDATE_SUBSTRING_SPEC (1, s,
+  if (scm_is_string (char_pred))
+    {
+      SCM tmp;
+      
+      scm_c_issue_deprecation_warning
+        ("Guile used to use the wrong argument order for string-delete.\n"
+         "This call to string-filter had the arguments in the wrong order.\n"
+         "See SRFI-13 for more details. At some point we will remove this 
hack.");
+
+      tmp = char_pred;
+      char_pred = s;
+      s = tmp;
+    }
+
+  MY_VALIDATE_SUBSTRING_SPEC (2, s,
                              3, start, cstart,
                              4, end, cend);
 
@@ -3265,7 +3294,7 @@ SCM_DEFINE (scm_string_delete, "string-delete", 2, 2, 0,
     {
       SCM ls = SCM_EOL;
       SCM_ASSERT (scm_is_true (scm_procedure_p (char_pred)),
-                  char_pred, SCM_ARG2, FUNC_NAME);
+                  char_pred, SCM_ARG1, FUNC_NAME);
 
       idx = cstart;
       while (idx < cend)
diff --git a/libguile/srfi-13.h b/libguile/srfi-13.h
index 478a55d..f63239a 100644
--- a/libguile/srfi-13.h
+++ b/libguile/srfi-13.h
@@ -3,7 +3,7 @@
 
 /* srfi-13.c --- SRFI-13 procedures for Guile
  *
- *     Copyright (C) 2001, 2004, 2006, 2008 Free Software Foundation, Inc.
+ *     Copyright (C) 2001, 2004, 2006, 2008, 2010 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
@@ -111,8 +111,8 @@ SCM_API SCM scm_string_xcopy_x (SCM target, SCM tstart, SCM 
s, SCM sfrom, SCM st
 SCM_API SCM scm_string_replace (SCM s1, SCM s2, SCM start1, SCM end1, SCM 
start2, SCM end2);
 SCM_API SCM scm_string_tokenize (SCM s, SCM token_char, SCM start, SCM end);
 SCM_API SCM scm_string_split (SCM s, SCM chr);
-SCM_API SCM scm_string_filter (SCM s, SCM char_pred, SCM start, SCM end);
-SCM_API SCM scm_string_delete (SCM s, SCM char_pred, SCM start, SCM end);
+SCM_API SCM scm_string_filter (SCM char_pred, SCM s, SCM start, SCM end);
+SCM_API SCM scm_string_delete (SCM char_pred, SCM s, SCM start, SCM end);
 
 SCM_INTERNAL void scm_init_srfi_13 (void);
 SCM_INTERNAL void scm_init_srfi_13_14 (void);


hooks/post-receive
-- 
GNU Guile



reply via email to

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