diff --git a/devel/200_21.md b/devel/200_21.md index ae437b9f..dcc01a2d 100644 --- a/devel/200_21.md +++ b/devel/200_21.md @@ -1,11 +1,4 @@ -# [200_21] 从 s7.c 拆分出 s7_r7rs.h 和 s7_r7rs.c - -## 任务相关的代码文件 -- `src/s7.c` -- `src/s7.h` -- 新文件:`src/s7_r7rs.h` -- 新文件:`src/s7_r7rs.c` - +# 200_21 ## 如何测试 ``` xmake config --yes -vD @@ -13,6 +6,8 @@ xmake build bin/goldfish tests/test_all.scm ``` +## 2026/02/14 s7_scheme_inexact + ## 2026/02/14 将 nan? 从 s7.c 迁移至 s7_r7rs.c ## 2026/02/14 将 sqrt 从 s7.c 迁移至 s7_r7rs.c diff --git a/src/s7.c b/src/s7.c index e9d08cc1..21986140 100644 --- a/src/s7.c +++ b/src/s7.c @@ -408,7 +408,7 @@ #endif #include "s7.h" -#include "s7_r7rs.h" +#include "s7_scheme_inexact.h" /* there is also apparently __STDC_NO_COMPLEX__ */ #if WITH_CLANG_PP @@ -13197,7 +13197,7 @@ static bool is_positive(s7_scheme *sc, s7_pointer x); static bool is_negative(s7_scheme *sc, s7_pointer x); static s7_pointer make_ratio(s7_scheme *sc, s7_int a, s7_int b); -/* is_NaN is declared in s7_r7rs.h and defined in s7_r7rs.c */ +/* is_NaN is declared in s7_scheme_inexact.h and defined in s7_scheme_inexact.c */ /* callgrind says this is faster than isnan, I think (very confusing data...) */ #if defined(__sun) && defined(__SVR4) @@ -98552,7 +98552,6 @@ static void change_scheme_version(s7_scheme *sc, s7_pointer val) /* need to check old and new curlet and whether we're coming from s7 or r5rs if envs match, and if either is rootlet, more headaches */ /* if ((!sc->r7rs_inited) || (sc->curlet != sc->rootlet)) */ /* TODO: check multiple threads here, also if not rootlet before and not == now, call r7rs_init again (or don't set flag if local?) */ r7rs_init(sc); - s7_load_c_string_with_environment(sc, r7rs_scm, strlen(r7rs_scm), sc->curlet); sc->args = args; } if ((val == sc->r7rs_symbol) || (val == sc->r5rs_symbol)) diff --git a/src/s7_r7rs.c b/src/s7_scheme_inexact.c similarity index 96% rename from src/s7_r7rs.c rename to src/s7_scheme_inexact.c index 2bc4f56c..3a19337a 100644 --- a/src/s7_r7rs.c +++ b/src/s7_scheme_inexact.c @@ -1,4 +1,4 @@ -/* s7_r7rs.c - R7RS specific implementations for s7 Scheme interpreter +/* s7_scheme_inexact.c - inexact number implementations for s7 Scheme interpreter * * derived from s7, a Scheme interpreter * SPDX-License-Identifier: 0BSD @@ -20,13 +20,11 @@ #endif #endif -#include "s7_r7rs.h" +#include "s7_scheme_inexact.h" #include #include #include -/* R7RS Scheme code string */ -const char r7rs_scm[] = ""; /* -------------------------------- sqrt -------------------------------- */ /* Helper function to check for NaN */ diff --git a/src/s7_r7rs.h b/src/s7_scheme_inexact.h similarity index 68% rename from src/s7_r7rs.h rename to src/s7_scheme_inexact.h index 01fbd0eb..df6b648e 100644 --- a/src/s7_r7rs.h +++ b/src/s7_scheme_inexact.h @@ -1,4 +1,4 @@ -/* s7_r7rs.h - R7RS specific declarations for s7 Scheme interpreter +/* s7_scheme_inexact.h - inexact number declarations for s7 Scheme interpreter * * derived from s7, a Scheme interpreter * SPDX-License-Identifier: 0BSD @@ -6,8 +6,8 @@ * Bill Schottstaedt, bil@ccrma.stanford.edu */ -#ifndef S7_R7RS_H -#define S7_R7RS_H +#ifndef S7_SCHEME_INEXACT_H +#define S7_SCHEME_INEXACT_H #include "s7.h" @@ -18,7 +18,7 @@ extern "C" { /* Helper function to check for NaN */ bool is_NaN(s7_double x); -/* R7RS specific function declarations */ +/* inexact number function declarations */ s7_pointer sqrt_p_p(s7_scheme *sc, s7_pointer num); s7_pointer g_sqrt(s7_scheme *sc, s7_pointer args); @@ -26,11 +26,8 @@ s7_pointer g_sqrt(s7_scheme *sc, s7_pointer args); bool s7_is_nan(s7_scheme *sc, s7_pointer x); s7_pointer g_is_nan(s7_scheme *sc, s7_pointer args); -/* R7RS Scheme code string */ -extern const char r7rs_scm[]; - #ifdef __cplusplus } #endif -#endif /* S7_R7RS_H */ +#endif /* S7_SCHEME_INEXACT_H */ diff --git a/xmake.lua b/xmake.lua index 1ec664f1..016b31d7 100644 --- a/xmake.lua +++ b/xmake.lua @@ -103,7 +103,7 @@ target ("goldfish") do end add_files ("src/goldfish.cpp") add_files ("src/s7.c", {languages = "c11"}) - add_files ("src/s7_r7rs.c", {languages = "c11"}) + add_files ("src/s7_scheme_inexact.c", {languages = "c11"}) add_packages("tbox") add_packages("argh") add_packages("cpr")