From 82a035f5cc379441d2bd2a4409a1d4d1ddbb568d Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sun, 24 May 2026 20:11:51 +0100 Subject: [PATCH] line-ed: update fx_array usage --- bshell/line-ed/buffer.c | 2 +- bshell/line-ed/history.c | 35 ++++++++++++++++++++--------------- bshell/line-ed/input.c | 2 +- bshell/line-ed/line-ed.c | 4 ++-- bshell/line-ed/refresh.c | 2 +- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/bshell/line-ed/buffer.c b/bshell/line-ed/buffer.c index f2453bd..c0748d5 100644 --- a/bshell/line-ed/buffer.c +++ b/bshell/line-ed/buffer.c @@ -2,7 +2,7 @@ #include "line-ed.h" -#include +#include const fx_wchar *line_start(struct line_ed *ed, size_t y) { diff --git a/bshell/line-ed/history.c b/bshell/line-ed/history.c index eba4660..c70bf22 100644 --- a/bshell/line-ed/history.c +++ b/bshell/line-ed/history.c @@ -6,31 +6,34 @@ void alloc_empty_history_entry(struct line_ed *ed) { - fx_string *str = (fx_string *)fx_array_at( + fx_value *str_v = fx_array_get_ref( ed->l_history, - fx_array_size(ed->l_history) - 1); + fx_array_get_size(ed->l_history) - 1); + fx_string *str = NULL; + fx_value_get_object(str_v, &str); if (!str || fx_string_get_size(str, FX_STRLEN_NORMAL) > 0) { str = fx_string_create(); - fx_array_append(ed->l_history, (fx_object *)str); + fx_array_push_back(ed->l_history, FX_VALUE_OBJECT(str)); + fx_string_unref(str); } - ed->l_history_pos = fx_array_size(ed->l_history) - 1; + ed->l_history_pos = fx_array_get_size(ed->l_history) - 1; } void save_buf_to_history(struct line_ed *ed) { - fx_string *cur = (fx_string *)fx_array_get( - ed->l_history, - ed->l_history_pos); + fx_value *cur_v = fx_array_get_ref(ed->l_history, ed->l_history_pos); + fx_string *cur = NULL; + fx_value_get_object(cur_v, &cur); fx_string_clear(cur); fx_string_append_wstr(cur, ed->l_buf); } void append_buf_to_history(struct line_ed *ed) { - fx_string *cur = (fx_string *)fx_array_get( - ed->l_history, - ed->l_history_pos); + fx_value *cur_v = fx_array_get_ref(ed->l_history, ed->l_history_pos); + fx_string *cur = NULL; + fx_value_get_object(cur_v, &cur); char s[] = {'\n', 0}; fx_string_append_cstr(cur, s); fx_string_append_wstr(cur, ed->l_buf); @@ -38,9 +41,9 @@ void append_buf_to_history(struct line_ed *ed) void load_buf_from_history(struct line_ed *ed) { - fx_string *cur = (fx_string *)fx_array_at( - ed->l_history, - ed->l_history_pos); + fx_value *cur_v = fx_array_get_ref(ed->l_history, ed->l_history_pos); + fx_string *cur = NULL; + fx_value_get_object(cur_v, &cur); size_t len = MIN( (size_t)(ed->l_buf_end - ed->l_buf - 1), fx_string_get_size(cur, FX_STRLEN_CODEPOINTS)); @@ -72,11 +75,13 @@ void load_buf_from_history(struct line_ed *ed) const char *last_history_line(struct line_ed *ed) { - size_t nlines = fx_array_size(ed->l_history); + size_t nlines = fx_array_get_size(ed->l_history); if (nlines < 2) { return NULL; } - fx_string *last = (fx_string *)fx_array_at(ed->l_history, nlines - 2); + fx_value *last_v = fx_array_get_ref(ed->l_history, nlines - 2); + fx_string *last = NULL; + fx_value_get_object(last_v, &last); return fx_string_get_cstr(last); } diff --git a/bshell/line-ed/input.c b/bshell/line-ed/input.c index 70b0f8d..3ea9624 100644 --- a/bshell/line-ed/input.c +++ b/bshell/line-ed/input.c @@ -205,7 +205,7 @@ void arrow_up(struct line_ed *ed) void arrow_down(struct line_ed *ed) { - if (ed->l_history_pos == fx_array_size(ed->l_history) - 1) { + if (ed->l_history_pos == fx_array_get_size(ed->l_history) - 1) { return; } diff --git a/bshell/line-ed/line-ed.c b/bshell/line-ed/line-ed.c index 6d0d5de..1afdce5 100644 --- a/bshell/line-ed/line-ed.c +++ b/bshell/line-ed/line-ed.c @@ -6,8 +6,8 @@ #include "prompt.h" #include -#include #include +#include #include #include #include @@ -276,7 +276,7 @@ size_t line_ed_readline(struct line_ed *ed, fx_stringstream *out) ed->l_history_pos = append_to_index; append_buf_to_history(ed); } else { - ed->l_history_pos = fx_array_size(ed->l_history) - 1; + ed->l_history_pos = fx_array_get_size(ed->l_history) - 1; const char *last = last_history_line(ed); if (!last || fx_wastrcmp(last, ed->l_buf) != 0) { diff --git a/bshell/line-ed/refresh.c b/bshell/line-ed/refresh.c index a455963..fc87419 100644 --- a/bshell/line-ed/refresh.c +++ b/bshell/line-ed/refresh.c @@ -4,8 +4,8 @@ #include "cursor.h" #include "line-ed.h" -#include #include +#include #include #include