From 4aee427d4f3eb26d4857c16d68245d3526e111f4 Mon Sep 17 00:00:00 2001 From: Learning Date: Thu, 26 Feb 2026 19:35:37 +0530 Subject: [PATCH] =?UTF-8?q?[200=5F27]=20=E8=BF=81=E7=A7=BB=20string-length?= =?UTF-8?q?=20=E5=88=B0=20s7=5Fliii=5Fstring.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/s7.c | 19 +++---------------- src/s7_liii_string.c | 14 ++++++++++++++ src/s7_liii_string.h | 1 + 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/s7.c b/src/s7.c index 3c8ad3c9..75ebf568 100644 --- a/src/s7.c +++ b/src/s7.c @@ -25651,22 +25651,9 @@ static s7_pointer make_string_p_i(s7_scheme *sc, s7_int len) #if !WITH_PURE_S7 /* -------------------------------- string-length -------------------------------- */ -static s7_pointer g_string_length(s7_scheme *sc, s7_pointer args) -{ - #define H_string_length "(string-length str) returns the length of the string str" - #define Q_string_length s7_make_signature(sc, 2, sc->is_integer_symbol, sc->is_string_symbol) - s7_pointer str = car(args); - if (!is_string(str)) - return(sole_arg_method_or_bust(sc, str, sc->string_length_symbol, args, sc->type_names[T_STRING])); - return(make_integer(sc, string_length(str))); -} -static s7_int string_length_i_7p(s7_scheme *sc, s7_pointer str) -{ - if (!is_string(str)) - return(integer(method_or_bust_p(sc, str, sc->string_length_symbol, sc->type_names[T_STRING]))); - return(string_length(str)); -} + + #endif @@ -96793,7 +96780,7 @@ static void init_opt_functions(s7_scheme *sc) s7_set_p_pp_function(sc, global_value(sc->vector_append_symbol), vector_append_p_pp); s7_set_p_ppp_function(sc, global_value(sc->vector_append_symbol), vector_append_p_ppp); s7_set_i_i_function(sc, global_value(sc->integer_length_symbol), integer_length_i_i); - s7_set_i_7p_function(sc, global_value(sc->string_length_symbol), string_length_i_7p); + // DELETED : s7_set_i_7p_function(sc, global_value(sc->string_length_symbol), string_length_i_7p); s7_set_i_7p_function(sc, global_value(sc->vector_length_symbol), vector_length_i_7p); s7_set_p_p_function(sc, global_value(sc->vector_to_list_symbol), vector_to_list_p_p); s7_set_p_p_function(sc, global_value(sc->string_to_list_symbol), string_to_list_p_p); diff --git a/src/s7_liii_string.c b/src/s7_liii_string.c index f83b5b48..d725d219 100644 --- a/src/s7_liii_string.c +++ b/src/s7_liii_string.c @@ -152,3 +152,17 @@ s7_pointer g_string_set(s7_scheme *sc, s7_pointer args) str[ind] = (char)s7_character(c); return c; } + +/* -------------------------------- string-length! -------------------------------- */ + +s7_pointer g_string_length(s7_scheme *sc, s7_pointer args) +{ + #define H_string_length "(string-length str) returns the length of the string str" + #define Q_string_length s7_make_signature(sc, 2, sc->is_integer_symbol, sc->is_string_symbol) + + s7_pointer str = s7_car(args); + if (!s7_is_string(str)) + return method_or_bust(sc, str, "string-length", "a string"); + + return s7_make_integer(sc, s7_string_length(str)); +} \ No newline at end of file diff --git a/src/s7_liii_string.h b/src/s7_liii_string.h index 8f609524..ae240f72 100644 --- a/src/s7_liii_string.h +++ b/src/s7_liii_string.h @@ -20,6 +20,7 @@ s7_pointer g_string_downcase(s7_scheme *sc, s7_pointer args); s7_pointer g_string_ref(s7_scheme *sc, s7_pointer args); s7_pointer string_ref_1(s7_scheme *sc, s7_pointer strng, s7_pointer index); s7_pointer g_string_set(s7_scheme *sc, s7_pointer args); +s7_pointer g_string_length(s7_scheme *sc, s7_pointer args); #ifdef __cplusplus }