diff options
-rw-r--r-- | eval.c | 1 | ||||
-rw-r--r-- | lib.c | 5 | ||||
-rw-r--r-- | lib.h | 1 | ||||
-rw-r--r-- | txr.1 | 18 |
4 files changed, 25 insertions, 0 deletions
@@ -6701,6 +6701,7 @@ void eval_init(void) reg_fun(intern(lit("stringp"), user_package), func_n1(stringp)); reg_fun(intern(lit("lazy-stringp"), user_package), func_n1(lazy_stringp)); reg_fun(intern(lit("length-str"), user_package), func_n1(length_str)); + reg_fun(intern(lit("coded-length"), user_package), func_n1(coded_length)); reg_fun(intern(lit("search-str"), user_package), func_n4o(search_str, 2)); reg_fun(intern(lit("search-str-tree"), user_package), func_n4o(search_str_tree, 2)); reg_fun(intern(lit("match-str"), user_package), func_n3o(match_str, 2)); @@ -3648,6 +3648,11 @@ val length_str(val str) } } +val coded_length(val str) +{ + return unum(utf8_to_buf(0, c_str(str), 0)); +} + const wchar_t *c_str(val obj) { switch (type(obj)) { @@ -827,6 +827,7 @@ val string_extend(val str, val tail); val stringp(val str); val lazy_stringp(val str); val length_str(val str); +val coded_length(val str); const wchar_t *c_str(val str); val search_str(val haystack, val needle, val start_num, val from_end); val search_str_tree(val haystack, val tree, val start_num, val from_end); @@ -22293,6 +22293,24 @@ function returns the length .meta string in characters. The argument must be a string. +.coNP Function @ coded-length +.synb +.mets (coded-length << string ) +.syne +.desc +The +.code coded-length +function returns the number of bytes required to encode +.meta string +in UTF-8. + +The argument must be a character string. + +If the string contains only characters in the ASCII range U+0001 to U+007F +range, then the value returned shall be the same as that returned by the +.code length-str +function. + .coNP Function @ search-str .synb .mets (search-str < haystack < needle >> [ start <> [ from-end ]]) |