diff options
author | Martin Grabmüller <mgrabmue@cs.tu-berlin.de> | 2001-04-25 14:28:11 +0000 |
---|---|---|
committer | Martin Grabmüller <mgrabmue@cs.tu-berlin.de> | 2001-04-25 14:28:11 +0000 |
commit | 653c72912796acd1084f2fd05edd249327cf3ea8 (patch) | |
tree | ce7de407d91d401ec9da8356a0e858c209d99d80 | |
parent | 0d3e064b0b798dbec9b155aa9aebfd255060cb28 (diff) | |
download | guile-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/ChangeLog | 16 | ||||
-rw-r--r-- | srfi/Makefile.am | 3 | ||||
-rw-r--r-- | srfi/srfi-13.c | 11 | ||||
-rw-r--r-- | srfi/srfi-13.h | 131 | ||||
-rw-r--r-- | srfi/srfi-14.c | 2 | ||||
-rw-r--r-- | srfi/srfi-14.h | 47 |
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 */ |