summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Grabmüller <mgrabmue@cs.tu-berlin.de>2001-04-25 14:28:11 +0000
committerMartin Grabmüller <mgrabmue@cs.tu-berlin.de>2001-04-25 14:28:11 +0000
commit653c72912796acd1084f2fd05edd249327cf3ea8 (patch)
treece7de407d91d401ec9da8356a0e858c209d99d80
parent0d3e064b0b798dbec9b155aa9aebfd255060cb28 (diff)
downloadguile-653c72912796acd1084f2fd05edd249327cf3ea8.tar.gz
* srfi-13.c (scm_string_replace): Take sizeof (char) into account
when using memmove(). * srfi-14.h: Added prototypes for all exported procedures.. * srfi-13.c: Include srfi-13.h * srfi-13.h: New file containing the prototypes. * Makefile.am: Removed guile-srfi.texi and info_TEXINFOS variable. (libguile_srfi_srfi_13_14_la_SOURCES): Added srfi-14.h, so it gets distributed. (libguile_srfi_srfi_13_14_la_SOURCES): Added srfi-13.h.
-rw-r--r--srfi/ChangeLog16
-rw-r--r--srfi/Makefile.am3
-rw-r--r--srfi/srfi-13.c11
-rw-r--r--srfi/srfi-13.h131
-rw-r--r--srfi/srfi-14.c2
-rw-r--r--srfi/srfi-14.h47
6 files changed, 203 insertions, 7 deletions
diff --git a/srfi/ChangeLog b/srfi/ChangeLog
index 5dca1a5cb..f3be106e4 100644
--- a/srfi/ChangeLog
+++ b/srfi/ChangeLog
@@ -1,3 +1,19 @@
+2001-04-25 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
+
+ * srfi-13.c (scm_string_replace): Take sizeof (char) into account
+ when using memmove().
+
+ * srfi-14.h: Added prototypes for all exported procedures..
+
+ * srfi-13.c: Include srfi-13.h
+
+ * srfi-13.h: New file containing the prototypes.
+
+ * Makefile.am: Removed guile-srfi.texi and info_TEXINFOS variable.
+ (libguile_srfi_srfi_13_14_la_SOURCES): Added srfi-14.h, so it gets
+ distributed.
+ (libguile_srfi_srfi_13_14_la_SOURCES): Added srfi-13.h.
+
2001-04-24 Neil Jerram <neil@ossau.uklinux.net>
* Makefile.am: Fixed "srf-14.x" typo.
diff --git a/srfi/Makefile.am b/srfi/Makefile.am
index 0c8f95040..6a211b978 100644
--- a/srfi/Makefile.am
+++ b/srfi/Makefile.am
@@ -34,7 +34,8 @@ INCLUDES = -I.. -I$(srcdir)/..
lib_LTLIBRARIES = libguile-srfi-srfi-13-14.la
BUILT_SOURCES = srfi-13.x srfi-14.x
-libguile_srfi_srfi_13_14_la_SOURCES = srfi-13.x srfi-13.c srfi-14.x srfi-14.c
+libguile_srfi_srfi_13_14_la_SOURCES = srfi-13.x srfi-13.c srfi-14.x srfi-14.c\
+ srfi-13.h srfi-14.h
libguile_srfi_srfi_13_14_la_LDFLAGS = -version-info 0:0 -export-dynamic
srfidir = $(datadir)/guile/$(VERSION)/srfi
diff --git a/srfi/srfi-13.c b/srfi/srfi-13.c
index 584c8e889..8372a7ad7 100644
--- a/srfi/srfi-13.c
+++ b/srfi/srfi-13.c
@@ -49,6 +49,7 @@
#include <libguile.h>
+#include "srfi-13.h"
#include "srfi-14.h"
SCM_DEFINE (scm_string_any, "string-any", 2, 2, 0,
@@ -2775,11 +2776,11 @@ SCM_DEFINE (scm_string_replace, "string-replace", 2, 4, 0,
result = scm_allocate_string (cstart1 + (cend2 - cstart2) +
SCM_STRING_LENGTH (s1) - cend1);
p = SCM_STRING_CHARS (result);
- memmove (p, cstr1, cstart1);
- memmove (p + cstart1, cstr2 + cstart2, (cend2 - cstart2));
+ memmove (p, cstr1, cstart1 * sizeof (char));
+ memmove (p + cstart1, cstr2 + cstart2, (cend2 - cstart2) * sizeof (char));
memmove (p + cstart1 + (cend2 - cstart2),
cstr1 + cend1,
- SCM_STRING_LENGTH (s1) - cend1);
+ (SCM_STRING_LENGTH (s1) - cend1) * sizeof (char));
return result;
}
#undef FUNC_NAME
@@ -3021,7 +3022,7 @@ SCM_DEFINE (scm_string_delete, "string-delete", 2, 2, 0,
void
-scm_init_srfi_13 ()
+scm_init_srfi_13 (void)
{
#ifndef SCM_MAGIC_SNARFER
#include "srfi-13.x"
@@ -3030,7 +3031,7 @@ scm_init_srfi_13 ()
void
-scm_init_srfi_13_14 ()
+scm_init_srfi_13_14 (void)
{
static int initialized = 0;
diff --git a/srfi/srfi-13.h b/srfi/srfi-13.h
new file mode 100644
index 000000000..525089d15
--- /dev/null
+++ b/srfi/srfi-13.h
@@ -0,0 +1,131 @@
+#ifndef SCM_SRFI_13_H
+#define SCM_SRFI_13_H
+/* srfi-13.c --- SRFI-13 procedures for Guile
+ *
+ * Copyright (C) 2001 Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+ * Boston, MA 02111-1307 USA
+ *
+ * As a special exception, the Free Software Foundation gives
+ * permission for additional uses of the text contained in its release
+ * of GUILE.
+ *
+ * The exception is that, if you link the GUILE library with other
+ * files to produce an executable, this does not by itself cause the
+ * resulting executable to be covered by the GNU General Public
+ * License. Your use of that executable is in no way restricted on
+ * account of linking the GUILE library code into it.
+ *
+ * This exception does not however invalidate any other reasons why
+ * the executable file might be covered by the GNU General Public
+ * License.
+ *
+ * This exception applies only to the code released by the Free
+ * Software Foundation under the name GUILE. If you copy code from
+ * other Free Software Foundation releases into a copy of GUILE, as
+ * the General Public License permits, the exception does not apply to
+ * the code that you add in this way. To avoid misleading anyone as
+ * to the status of such modified files, you must delete this
+ * exception notice from them.
+ *
+ * If you write modifications of your own for GUILE, it is your choice
+ * whether to permit this exception to apply to your modifications.
+ * If you do not wish that, delete this exception notice. */
+
+
+void scm_init_srfi_13 (void);
+void scm_init_srfi_13_14 (void);
+
+SCM scm_string_any (SCM pred, SCM s, SCM start, SCM end);
+SCM scm_string_every (SCM pred, SCM s, SCM start, SCM end);
+SCM scm_string_tabulate (SCM proc, SCM len);
+SCM scm_string_to_listS (SCM str, SCM start, SCM end);
+SCM scm_reverse_list_to_string (SCM chrs);
+SCM scm_string_join (SCM ls, SCM delimiter, SCM grammar);
+SCM scm_string_copyS (SCM str, SCM start, SCM end);
+SCM scm_substring_shared (SCM str, SCM start, SCM end);
+SCM scm_string_copy_x (SCM target, SCM tstart, SCM s, SCM start, SCM end);
+SCM scm_string_take (SCM s, SCM n);
+SCM scm_string_drop (SCM s, SCM n);
+SCM scm_string_take_right (SCM s, SCM n);
+SCM scm_string_drop_right (SCM s, SCM n);
+SCM scm_string_pad (SCM s, SCM len, SCM chr, SCM start, SCM end);
+SCM scm_string_pad_right (SCM s, SCM len, SCM chr, SCM start, SCM end);
+SCM scm_string_trim (SCM s, SCM char_pred, SCM start, SCM end);
+SCM scm_string_trim_right (SCM s, SCM char_pred, SCM start, SCM end);
+SCM scm_string_trim_both (SCM s, SCM char_pred, SCM start, SCM end);
+SCM scm_string_fill_xS (SCM str, SCM chr, SCM start, SCM end);
+SCM scm_string_compare (SCM s1, SCM s2, SCM proc_lt, SCM proc_eq, SCM proc_gt, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_compare_ci (SCM s1, SCM s2, SCM proc_lt, SCM proc_eq, SCM proc_gt, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_eq (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_neq (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_lt (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_gt (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_le (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_ge (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_ci_eq (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_ci_neq (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_ci_lt (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_ci_gt (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_ci_le (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_ci_ge (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_prefix_length (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_prefix_length_ci (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_suffix_length (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_suffix_length_ci (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_prefix_p (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_prefix_ci_p (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_suffix_p (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_suffix_ci_p (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_indexS (SCM s, SCM char_pred, SCM start, SCM end);
+SCM scm_string_index_right (SCM s, SCM char_pred, SCM start, SCM end);
+SCM scm_string_skip (SCM s, SCM char_pred, SCM start, SCM end);
+SCM scm_string_skip_right (SCM s, SCM char_pred, SCM start, SCM end);
+SCM scm_string_count (SCM s, SCM char_pred, SCM start, SCM end);
+SCM scm_string_contains (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_contains_ci (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_upcase_xS (SCM str, SCM start, SCM end);
+SCM scm_string_upcaseS (SCM str, SCM start, SCM end);
+SCM scm_string_downcase_xS (SCM str, SCM start, SCM end);
+SCM scm_string_downcaseS (SCM str, SCM start, SCM end);
+SCM scm_string_titlecase_x (SCM str, SCM start, SCM end);
+SCM scm_string_titlecase (SCM str, SCM start, SCM end);
+SCM scm_string_reverse (SCM str, SCM start, SCM end);
+SCM scm_string_reverse_x (SCM str, SCM start, SCM end);
+SCM scm_string_append_shared (SCM ls);
+SCM scm_string_concatenate (SCM ls);
+SCM scm_reverse_string_concatenate (SCM ls, SCM final_string, SCM end);
+SCM scm_string_concatenate_shared (SCM ls);
+SCM scm_reverse_string_concatenate_shared (SCM ls, SCM final_string, SCM end);
+SCM scm_string_map (SCM s, SCM proc, SCM start, SCM end);
+SCM scm_string_map_x (SCM s, SCM proc, SCM start, SCM end);
+SCM scm_string_fold (SCM kons, SCM knil, SCM s, SCM start, SCM end);
+SCM scm_string_fold_right (SCM kons, SCM knil, SCM s, SCM start, SCM end);
+SCM scm_string_unfold (SCM p, SCM f, SCM g, SCM seed, SCM base, SCM make_final);
+SCM scm_string_unfold_right (SCM p, SCM f, SCM g, SCM seed, SCM base, SCM make_final);
+SCM scm_string_for_each (SCM s, SCM proc, SCM start, SCM end);
+SCM scm_xsubstring (SCM s, SCM from, SCM to, SCM start, SCM end);
+SCM scm_string_xcopy_x (SCM target, SCM tstart, SCM s, SCM sfrom, SCM sto, SCM start, SCM end);
+SCM scm_string_replace (SCM s1, SCM s2, SCM start1, SCM end1, SCM start2, SCM end2);
+SCM scm_string_tokenize (SCM s, SCM token_char, SCM start, SCM end);
+SCM scm_string_filter (SCM s, SCM char_pred, SCM start, SCM end);
+SCM scm_string_delete (SCM s, SCM char_pred, SCM start, SCM end);
+
+
+
+
+
+#endif /* SCM_SRFI_13_H */
diff --git a/srfi/srfi-14.c b/srfi/srfi-14.c
index b3af7c2b4..3cbf63c6e 100644
--- a/srfi/srfi-14.c
+++ b/srfi/srfi-14.c
@@ -1348,7 +1348,7 @@ SCM_DEFINE (scm_char_set_diff_plus_intersection_x, "char-set-diff+intersection!"
void
-scm_init_srfi_14 ()
+scm_init_srfi_14 (void)
{
scm_tc16_charset = scm_make_smob_type ("character-set",
SCM_CHARSET_SIZE * sizeof (long));
diff --git a/srfi/srfi-14.h b/srfi/srfi-14.h
index 623d1f9ab..6eef6f9f7 100644
--- a/srfi/srfi-14.h
+++ b/srfi/srfi-14.h
@@ -58,4 +58,51 @@ extern int scm_tc16_charset;
void scm_init_srfi_14 (void);
+SCM scm_char_set_p (SCM obj);
+SCM scm_char_set_eq (SCM cs1, SCM csr);
+SCM scm_char_set_leq (SCM cs1, SCM csr);
+SCM scm_char_set_hash (SCM cs, SCM bound);
+SCM scm_char_set_cursor (SCM cs);
+SCM scm_char_set_ref (SCM cs, SCM cursor);
+SCM scm_char_set_cursor_next (SCM cs, SCM cursor);
+SCM scm_end_of_char_set_p (SCM cursor);
+SCM scm_char_set_fold (SCM kons, SCM knil, SCM cs);
+SCM scm_char_set_unfold (SCM p, SCM f, SCM g, SCM seed, SCM base_cs);
+SCM scm_char_set_unfold_x (SCM p, SCM f, SCM g, SCM seed, SCM base_cs);
+SCM scm_char_set_for_each (SCM proc, SCM cs);
+SCM scm_char_set_map (SCM proc, SCM cs);
+SCM scm_char_set_copy (SCM cs);
+SCM scm_char_set (SCM rest);
+SCM scm_list_to_char_set (SCM list, SCM base_cs);
+SCM scm_list_to_char_set_x (SCM list, SCM base_cs);
+SCM scm_string_to_char_set (SCM str, SCM base_cs);
+SCM scm_string_to_char_set_x (SCM str, SCM base_cs);
+SCM scm_char_set_filter (SCM pred, SCM cs, SCM base_cs);
+SCM scm_char_set_filter_x (SCM pred, SCM cs, SCM base_cs);
+SCM scm_ucs_range_to_char_set (SCM lower, SCM upper, SCM error, SCM base_cs);
+SCM scm_ucs_range_to_char_set_x (SCM lower, SCM upper, SCM error, SCM base_cs);
+SCM scm_char_set_size (SCM cs);
+SCM scm_char_set_count (SCM pred, SCM cs);
+SCM scm_char_set_to_list (SCM cs);
+SCM scm_char_set_to_string (SCM cs);
+SCM scm_char_set_contains_p (SCM cs, SCM ch);
+SCM scm_char_set_every (SCM pred, SCM cs);
+SCM scm_char_set_any (SCM pred, SCM cs);
+SCM scm_char_set_adjoin (SCM cs, SCM rest);
+SCM scm_char_set_delete (SCM cs, SCM rest);
+SCM scm_char_set_adjoin_x (SCM cs, SCM rest);
+SCM scm_char_set_delete_x (SCM cs, SCM rest);
+SCM scm_char_set_complement (SCM cs);
+SCM scm_char_set_union (SCM rest);
+SCM scm_char_set_intersection (SCM cs1, SCM rest);
+SCM scm_char_set_difference (SCM cs1, SCM rest);
+SCM scm_char_set_xor (SCM cs1, SCM rest);
+SCM scm_char_set_diff_plus_intersection (SCM cs1, SCM rest);
+SCM scm_char_set_complement_x (SCM cs);
+SCM scm_char_set_union_x (SCM cs1, SCM rest);
+SCM scm_char_set_intersection_x (SCM cs1, SCM rest);
+SCM scm_char_set_difference_x (SCM cs1, SCM rest);
+SCM scm_char_set_xor_x (SCM cs1, SCM rest);
+SCM scm_char_set_diff_plus_intersection_x (SCM cs1, SCM rest);
+
#endif /* SCM_SRFI_14_H */