Made str-len into extension that also looks for null-char

This commit is contained in:
Benjamin Vedder 2022-11-10 15:40:15 +01:00
parent 6faef7c348
commit ba756e316e
2 changed files with 14 additions and 2 deletions

View File

@ -64,8 +64,6 @@ static const char* functions[] = {
"(filter-rec f lst nil)" "(filter-rec f lst nil)"
"))", "))",
"(defun str-len (str) (- (buflen str) 1))",
"(defun sort (f lst)" "(defun sort (f lst)"
"(let ((insert (lambda (elt f sorted-lst)" "(let ((insert (lambda (elt f sorted-lst)"
"(if (eq sorted-lst nil) (list elt)" "(if (eq sorted-lst nil) (list elt)"

View File

@ -2870,6 +2870,19 @@ static lbm_value ext_to_str_delim(lbm_value *args, lbm_uint argn) {
return to_str(delim, args + 1, argn - 1); return to_str(delim, args + 1, argn - 1);
} }
static lbm_value ext_str_len(lbm_value *args, lbm_uint argn) {
CHECK_ARGN(1);
char *str = lbm_dec_str(args[0]);
if (!str) {
return ENC_SYM_EERROR;
}
lbm_array_header_t *array = (lbm_array_header_t *)lbm_car(args[0]);
return lbm_enc_i(strnlen(str, array->size));
}
// Configuration // Configuration
static lbm_value ext_conf_set(lbm_value *args, lbm_uint argn) { static lbm_value ext_conf_set(lbm_value *args, lbm_uint argn) {
@ -4342,6 +4355,7 @@ void lispif_load_vesc_extensions(void) {
lbm_add_extension("str-cmp", ext_str_cmp); lbm_add_extension("str-cmp", ext_str_cmp);
lbm_add_extension("to-str", ext_to_str); lbm_add_extension("to-str", ext_to_str);
lbm_add_extension("to-str-delim", ext_to_str_delim); lbm_add_extension("to-str-delim", ext_to_str_delim);
lbm_add_extension("str-len", ext_str_len);
// Configuration // Configuration
lbm_add_extension("conf-set", ext_conf_set); lbm_add_extension("conf-set", ext_conf_set);