diff options
author | Mark H Weaver <mhw@netris.org> | 2019-05-07 02:28:26 -0400 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2019-05-23 17:48:46 +0200 |
commit | d5c420a88880caf1e364af7339b66932411b5234 (patch) | |
tree | c1eaffa1c50752bd96c5a40b9cf4e53fdf2e549e /libguile/chars.c | |
parent | 7e208c8f256ac4d7ef670655aa42711433fdd781 (diff) | |
download | guile-d5c420a88880caf1e364af7339b66932411b5234.tar.gz |
Add 'scm_c_make_char' and use it where appropriate.
This reverts the change to SCM_MAKE_CHAR made in the previous commit
63818453ad226cd3c2d1fd8ade12e3d7c1d43c05, which used an arithmetic trick
to avoid evaluating its argument more than once.
Here, we restore the previous implementation of SCM_MAKE_CHAR, which
evaluates its argument twice. Instead, we introduce a new inlinable
function 'scm_c_make_char' and replace uses of SCM_MAKE_CHAR with calls
to 'scm_c_make_char' where appropriate.
* libguile/chars.h (scm_c_make_char): New inline function.
* libguile/inline.c: Include chars.h.
* libguile/srfi-13.c (REF_IN_CHARSET, scm_string_any, scm_string_every)
(scm_string_trim, scm_string_trim_right, scm_string_trim_both)
(scm_string_index, scm_string_index_right, scm_string_skip)
(scm_string_skip_right, scm_string_count, string_titlecase_x)
(string_reverse_x, scm_string_fold, scm_string_fold_right)
(scm_string_for_each, scm_string_filter, scm_string_delete):
Use 'scm_c_make_char' instead of 'SCM_MAKE_CHAR' in cases where the
argument calls a function.
* libguile/chars.c (scm_char_upcase, scm_char_downcase, scm_char_titlecase),
libguile/ports.c (scm_port_decode_char),
libguile/print.c (scm_simple_format),
libguile/read.c (scm_read_character),
libguile/strings.c (scm_string_ref, scm_c_string_ref),
Diffstat (limited to 'libguile/chars.c')
-rw-r--r-- | libguile/chars.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libguile/chars.c b/libguile/chars.c index 21df24730..fe55f9e2e 100644 --- a/libguile/chars.c +++ b/libguile/chars.c @@ -1,4 +1,4 @@ -/* Copyright 1995-1996,1998,2000-2001,2004,2006,2008-2011,2014,2018 +/* Copyright 1995-1996,1998,2000-2001,2004,2006,2008-2011,2014,2018-2019 Free Software Foundation, Inc. This file is part of Guile. @@ -460,7 +460,7 @@ SCM_DEFINE (scm_char_upcase, "char-upcase", 1, 0, 0, #define FUNC_NAME s_scm_char_upcase { SCM_VALIDATE_CHAR (1, chr); - return SCM_MAKE_CHAR (scm_c_upcase (SCM_CHAR (chr))); + return scm_c_make_char (scm_c_upcase (SCM_CHAR (chr))); } #undef FUNC_NAME @@ -471,7 +471,7 @@ SCM_DEFINE (scm_char_downcase, "char-downcase", 1, 0, 0, #define FUNC_NAME s_scm_char_downcase { SCM_VALIDATE_CHAR (1, chr); - return SCM_MAKE_CHAR (scm_c_downcase (SCM_CHAR(chr))); + return scm_c_make_char (scm_c_downcase (SCM_CHAR(chr))); } #undef FUNC_NAME @@ -481,7 +481,7 @@ SCM_DEFINE (scm_char_titlecase, "char-titlecase", 1, 0, 0, #define FUNC_NAME s_scm_char_titlecase { SCM_VALIDATE_CHAR (1, chr); - return SCM_MAKE_CHAR (scm_c_titlecase (SCM_CHAR(chr))); + return scm_c_make_char (scm_c_titlecase (SCM_CHAR(chr))); } #undef FUNC_NAME |