added some more string functions

This commit is contained in:
hyung-hwan 2022-06-12 14:40:46 +00:00
parent 59e36d1a18
commit b740ecbf07
5 changed files with 126 additions and 26 deletions

View File

@ -446,6 +446,34 @@ HIO_EXPORT hio_oow_t hio_copy_bcstr_unlimited (
const hio_bch_t* src const hio_bch_t* src
); );
HIO_EXPORT hio_oow_t hio_copy_fmt_ucstrs_to_ucstr (
hio_uch_t* buf,
hio_oow_t bsz,
const hio_uch_t* fmt,
const hio_uch_t* str[]
);
HIO_EXPORT hio_oow_t hio_copy_fmt_bcstrs_to_bcstr (
hio_bch_t* buf,
hio_oow_t bsz,
const hio_bch_t* fmt,
const hio_bch_t* str[]
);
HIO_EXPORT hio_oow_t hio_copy_fmt_ucses_to_ucstr (
hio_uch_t* buf,
hio_oow_t bsz,
const hio_uch_t* fmt,
const hio_ucs_t str[]
);
HIO_EXPORT hio_oow_t hio_copy_fmt_bcses_to_bcstr (
hio_bch_t* buf,
hio_oow_t bsz,
const hio_bch_t* fmt,
const hio_bcs_t str[]
);
/* ------------------------------------ */ /* ------------------------------------ */
HIO_EXPORT hio_oow_t hio_count_ucstr ( HIO_EXPORT hio_oow_t hio_count_ucstr (
@ -456,6 +484,16 @@ HIO_EXPORT hio_oow_t hio_count_bcstr (
const hio_bch_t* str const hio_bch_t* str
); );
HIO_EXPORT hio_oow_t hio_count_ucstr_limited (
const hio_uch_t* str,
hio_oow_t maxlen
);
HIO_EXPORT hio_oow_t hio_count_bcstr_limited (
const hio_bch_t* str,
hio_oow_t maxlen
);
/* ------------------------------------ */ /* ------------------------------------ */
/** /**
@ -489,6 +527,8 @@ HIO_EXPORT void hio_fill_bchars (
hio_oow_t len hio_oow_t len
); );
/* ------------------------------------ */
HIO_EXPORT const hio_bch_t* hio_find_bcstr_word_in_bcstr ( HIO_EXPORT const hio_bch_t* hio_find_bcstr_word_in_bcstr (
const hio_bch_t* str, const hio_bch_t* str,
const hio_bch_t* word, const hio_bch_t* word,
@ -503,25 +543,25 @@ HIO_EXPORT const hio_uch_t* hio_find_ucstr_word_in_ucstr (
int ignorecase int ignorecase
); );
HIO_EXPORT hio_uch_t* hio_find_uchar ( HIO_EXPORT hio_uch_t* hio_find_uchar_in_chars (
const hio_uch_t* ptr, const hio_uch_t* ptr,
hio_oow_t len, hio_oow_t len,
hio_uch_t c hio_uch_t c
); );
HIO_EXPORT hio_bch_t* hio_find_bchar ( HIO_EXPORT hio_bch_t* hio_find_bchar_in_chars (
const hio_bch_t* ptr, const hio_bch_t* ptr,
hio_oow_t len, hio_oow_t len,
hio_bch_t c hio_bch_t c
); );
HIO_EXPORT hio_uch_t* hio_rfind_uchar ( HIO_EXPORT hio_uch_t* hio_rfind_uchar_in_chars (
const hio_uch_t* ptr, const hio_uch_t* ptr,
hio_oow_t len, hio_oow_t len,
hio_uch_t c hio_uch_t c
); );
HIO_EXPORT hio_bch_t* hio_rfind_bchar ( HIO_EXPORT hio_bch_t* hio_rfind_bchar_in_chars (
const hio_bch_t* ptr, const hio_bch_t* ptr,
hio_oow_t len, hio_oow_t len,
hio_bch_t c hio_bch_t c
@ -537,6 +577,8 @@ HIO_EXPORT hio_bch_t* hio_find_bchar_in_bcstr (
hio_bch_t c hio_bch_t c
); );
/* ------------------------------------ */
HIO_EXPORT hio_oow_t hio_rotate_uchars ( HIO_EXPORT hio_oow_t hio_rotate_uchars (
hio_uch_t* str, hio_uch_t* str,
hio_oow_t len, hio_oow_t len,
@ -583,6 +625,8 @@ HIO_EXPORT int hio_split_bcstr (
#if defined(HIO_OOCH_IS_UCH) #if defined(HIO_OOCH_IS_UCH)
# define hio_count_oocstr hio_count_ucstr # define hio_count_oocstr hio_count_ucstr
# define hio_count_oocstr_limited hio_count_ucstr_limited
# define hio_equal_oochars hio_equal_uchars # define hio_equal_oochars hio_equal_uchars
# define hio_comp_oochars hio_comp_uchars # define hio_comp_oochars hio_comp_uchars
# define hio_comp_oocstr_bcstr hio_comp_ucstr_bcstr # define hio_comp_oocstr_bcstr hio_comp_ucstr_bcstr
@ -601,20 +645,24 @@ HIO_EXPORT int hio_split_bcstr (
# define hio_copy_oochars_to_oocstr_unlimited hio_copy_uchars_to_ucstr_unlimited # define hio_copy_oochars_to_oocstr_unlimited hio_copy_uchars_to_ucstr_unlimited
# define hio_copy_oocstr hio_copy_ucstr # define hio_copy_oocstr hio_copy_ucstr
# define hio_copy_oocstr_unlimited hio_copy_ucstr_unlimited # define hio_copy_oocstr_unlimited hio_copy_ucstr_unlimited
# define hio_copy_fmt_oocses_to_oocstr hio_copy_fmt_ucses_to_ucstr
# define hio_copy_fmt_oocstr_to_oocstr hio_copy_fmt_ucstr_to_ucstr
# define hio_concat_oochars_to_ucstr hio_concat_uchars_to_ucstr # define hio_concat_oochars_to_ucstr hio_concat_uchars_to_ucstr
# define hio_concat_oocstr hio_concat_ucstr # define hio_concat_oocstr hio_concat_ucstr
# define hio_fill_oochars hio_fill_uchars # define hio_fill_oochars hio_fill_uchars
# define hio_find_oocstr_word_in_oocstr hio_find_ucstr_word_in_ucstr # define hio_find_oocstr_word_in_oocstr hio_find_ucstr_word_in_ucstr
# define hio_find_oochar hio_find_uchar # define hio_find_oochar_in_oochars hio_find_uchar_in_uchars
# define hio_rfind_oochar hio_rfind_uchar # define hio_rfind_oochar_in_oochars hio_rfind_uchar_in_uchars
# define hio_find_oochar_in_oocstr hio_find_uchar_in_ucstr # define hio_find_oochar_in_oocstr hio_find_uchar_in_ucstr
# define hio_trim_oochars hio_trim_uchars # define hio_trim_oochars hio_trim_uchars
# define hio_split_oocstr hio_split_ucstr # define hio_split_oocstr hio_split_ucstr
#else #else
# define hio_count_oocstr hio_count_bcstr # define hio_count_oocstr hio_count_bcstr
# define hio_count_oocstr_limited hio_count_bcstr_limited
# define hio_equal_oochars hio_equal_bchars # define hio_equal_oochars hio_equal_bchars
# define hio_comp_oochars hio_comp_bchars # define hio_comp_oochars hio_comp_bchars
# define hio_comp_oocstr_bcstr hio_comp_bcstr # define hio_comp_oocstr_bcstr hio_comp_bcstr
@ -633,14 +681,16 @@ HIO_EXPORT int hio_split_bcstr (
# define hio_copy_oochars_to_oocstr_unlimited hio_copy_bchars_to_bcstr_unlimited # define hio_copy_oochars_to_oocstr_unlimited hio_copy_bchars_to_bcstr_unlimited
# define hio_copy_oocstr hio_copy_bcstr # define hio_copy_oocstr hio_copy_bcstr
# define hio_copy_oocstr_unlimited hio_copy_bcstr_unlimited # define hio_copy_oocstr_unlimited hio_copy_bcstr_unlimited
# define hio_copy_fmt_oocses_to_oocstr hio_copy_fmt_bcses_to_bcstr
# define hio_copy_fmt_oocstr_to_oocstr hio_copy_fmt_bcstr_to_bcstr
# define hio_concat_oochars_to_bcstr hio_concat_bchars_to_bcstr # define hio_concat_oochars_to_bcstr hio_concat_bchars_to_bcstr
# define hio_concat_oocstr hio_concat_bcstr # define hio_concat_oocstr hio_concat_bcstr
# define hio_fill_oochars hio_fill_bchars # define hio_fill_oochars hio_fill_bchars
# define hio_find_oocstr_word_in_oocstr hio_find_bcstr_word_in_bcstr # define hio_find_oocstr_word_in_oocstr hio_find_bcstr_word_in_bcstr
# define hio_find_oochar hio_find_bchar # define hio_find_oochar_in_oochars hio_find_bchar_in_bchars
# define hio_rfind_oochar hio_rfind_bchar # define hio_rfind_oochar_in_oochars hio_rfind_bchar_in_bchars
# define hio_find_oochar_in_oocstr hio_find_bchar_in_bcstr # define hio_find_oochar_in_oocstr hio_find_bchar_in_bcstr
# define hio_trim_oochars hio_trim_bchars # define hio_trim_oochars hio_trim_bchars

View File

@ -447,6 +447,34 @@ HIO_EXPORT hio_oow_t hio_copy_bcstr_unlimited (
const hio_bch_t* src const hio_bch_t* src
); );
HIO_EXPORT hio_oow_t hio_copy_fmt_ucstrs_to_ucstr (
hio_uch_t* buf,
hio_oow_t bsz,
const hio_uch_t* fmt,
const hio_uch_t* str[]
);
HIO_EXPORT hio_oow_t hio_copy_fmt_bcstrs_to_bcstr (
hio_bch_t* buf,
hio_oow_t bsz,
const hio_bch_t* fmt,
const hio_bch_t* str[]
);
HIO_EXPORT hio_oow_t hio_copy_fmt_ucses_to_ucstr (
hio_uch_t* buf,
hio_oow_t bsz,
const hio_uch_t* fmt,
const hio_ucs_t str[]
);
HIO_EXPORT hio_oow_t hio_copy_fmt_bcses_to_bcstr (
hio_bch_t* buf,
hio_oow_t bsz,
const hio_bch_t* fmt,
const hio_bcs_t str[]
);
/* ------------------------------------ */ /* ------------------------------------ */
HIO_EXPORT hio_oow_t hio_count_ucstr ( HIO_EXPORT hio_oow_t hio_count_ucstr (
@ -457,6 +485,16 @@ HIO_EXPORT hio_oow_t hio_count_bcstr (
const hio_bch_t* str const hio_bch_t* str
); );
HIO_EXPORT hio_oow_t hio_count_ucstr_limited (
const hio_uch_t* str,
hio_oow_t maxlen
);
HIO_EXPORT hio_oow_t hio_count_bcstr_limited (
const hio_bch_t* str,
hio_oow_t maxlen
);
/* ------------------------------------ */ /* ------------------------------------ */
/** /**
@ -490,6 +528,8 @@ HIO_EXPORT void hio_fill_bchars (
hio_oow_t len hio_oow_t len
); );
/* ------------------------------------ */
HIO_EXPORT const hio_bch_t* hio_find_bcstr_word_in_bcstr ( HIO_EXPORT const hio_bch_t* hio_find_bcstr_word_in_bcstr (
const hio_bch_t* str, const hio_bch_t* str,
const hio_bch_t* word, const hio_bch_t* word,
@ -504,25 +544,25 @@ HIO_EXPORT const hio_uch_t* hio_find_ucstr_word_in_ucstr (
int ignorecase int ignorecase
); );
HIO_EXPORT hio_uch_t* hio_find_uchar ( HIO_EXPORT hio_uch_t* hio_find_uchar_in_chars (
const hio_uch_t* ptr, const hio_uch_t* ptr,
hio_oow_t len, hio_oow_t len,
hio_uch_t c hio_uch_t c
); );
HIO_EXPORT hio_bch_t* hio_find_bchar ( HIO_EXPORT hio_bch_t* hio_find_bchar_in_chars (
const hio_bch_t* ptr, const hio_bch_t* ptr,
hio_oow_t len, hio_oow_t len,
hio_bch_t c hio_bch_t c
); );
HIO_EXPORT hio_uch_t* hio_rfind_uchar ( HIO_EXPORT hio_uch_t* hio_rfind_uchar_in_chars (
const hio_uch_t* ptr, const hio_uch_t* ptr,
hio_oow_t len, hio_oow_t len,
hio_uch_t c hio_uch_t c
); );
HIO_EXPORT hio_bch_t* hio_rfind_bchar ( HIO_EXPORT hio_bch_t* hio_rfind_bchar_in_chars (
const hio_bch_t* ptr, const hio_bch_t* ptr,
hio_oow_t len, hio_oow_t len,
hio_bch_t c hio_bch_t c
@ -538,6 +578,8 @@ HIO_EXPORT hio_bch_t* hio_find_bchar_in_bcstr (
hio_bch_t c hio_bch_t c
); );
/* ------------------------------------ */
HIO_EXPORT hio_oow_t hio_rotate_uchars ( HIO_EXPORT hio_oow_t hio_rotate_uchars (
hio_uch_t* str, hio_uch_t* str,
hio_oow_t len, hio_oow_t len,
@ -584,6 +626,8 @@ HIO_EXPORT int hio_split_bcstr (
#if defined(HIO_OOCH_IS_UCH) #if defined(HIO_OOCH_IS_UCH)
# define hio_count_oocstr hio_count_ucstr # define hio_count_oocstr hio_count_ucstr
# define hio_count_oocstr_limited hio_count_ucstr_limited
# define hio_equal_oochars hio_equal_uchars # define hio_equal_oochars hio_equal_uchars
# define hio_comp_oochars hio_comp_uchars # define hio_comp_oochars hio_comp_uchars
# define hio_comp_oocstr_bcstr hio_comp_ucstr_bcstr # define hio_comp_oocstr_bcstr hio_comp_ucstr_bcstr
@ -602,20 +646,24 @@ HIO_EXPORT int hio_split_bcstr (
# define hio_copy_oochars_to_oocstr_unlimited hio_copy_uchars_to_ucstr_unlimited # define hio_copy_oochars_to_oocstr_unlimited hio_copy_uchars_to_ucstr_unlimited
# define hio_copy_oocstr hio_copy_ucstr # define hio_copy_oocstr hio_copy_ucstr
# define hio_copy_oocstr_unlimited hio_copy_ucstr_unlimited # define hio_copy_oocstr_unlimited hio_copy_ucstr_unlimited
# define hio_copy_fmt_oocses_to_oocstr hio_copy_fmt_ucses_to_ucstr
# define hio_copy_fmt_oocstr_to_oocstr hio_copy_fmt_ucstr_to_ucstr
# define hio_concat_oochars_to_ucstr hio_concat_uchars_to_ucstr # define hio_concat_oochars_to_ucstr hio_concat_uchars_to_ucstr
# define hio_concat_oocstr hio_concat_ucstr # define hio_concat_oocstr hio_concat_ucstr
# define hio_fill_oochars hio_fill_uchars # define hio_fill_oochars hio_fill_uchars
# define hio_find_oocstr_word_in_oocstr hio_find_ucstr_word_in_ucstr # define hio_find_oocstr_word_in_oocstr hio_find_ucstr_word_in_ucstr
# define hio_find_oochar hio_find_uchar # define hio_find_oochar_in_oochars hio_find_uchar_in_uchars
# define hio_rfind_oochar hio_rfind_uchar # define hio_rfind_oochar_in_oochars hio_rfind_uchar_in_uchars
# define hio_find_oochar_in_oocstr hio_find_uchar_in_ucstr # define hio_find_oochar_in_oocstr hio_find_uchar_in_ucstr
# define hio_trim_oochars hio_trim_uchars # define hio_trim_oochars hio_trim_uchars
# define hio_split_oocstr hio_split_ucstr # define hio_split_oocstr hio_split_ucstr
#else #else
# define hio_count_oocstr hio_count_bcstr # define hio_count_oocstr hio_count_bcstr
# define hio_count_oocstr_limited hio_count_bcstr_limited
# define hio_equal_oochars hio_equal_bchars # define hio_equal_oochars hio_equal_bchars
# define hio_comp_oochars hio_comp_bchars # define hio_comp_oochars hio_comp_bchars
# define hio_comp_oocstr_bcstr hio_comp_bcstr # define hio_comp_oocstr_bcstr hio_comp_bcstr
@ -634,14 +682,16 @@ HIO_EXPORT int hio_split_bcstr (
# define hio_copy_oochars_to_oocstr_unlimited hio_copy_bchars_to_bcstr_unlimited # define hio_copy_oochars_to_oocstr_unlimited hio_copy_bchars_to_bcstr_unlimited
# define hio_copy_oocstr hio_copy_bcstr # define hio_copy_oocstr hio_copy_bcstr
# define hio_copy_oocstr_unlimited hio_copy_bcstr_unlimited # define hio_copy_oocstr_unlimited hio_copy_bcstr_unlimited
# define hio_copy_fmt_oocses_to_oocstr hio_copy_fmt_bcses_to_bcstr
# define hio_copy_fmt_oocstr_to_oocstr hio_copy_fmt_bcstr_to_bcstr
# define hio_concat_oochars_to_bcstr hio_concat_bchars_to_bcstr # define hio_concat_oochars_to_bcstr hio_concat_bchars_to_bcstr
# define hio_concat_oocstr hio_concat_bcstr # define hio_concat_oocstr hio_concat_bcstr
# define hio_fill_oochars hio_fill_bchars # define hio_fill_oochars hio_fill_bchars
# define hio_find_oocstr_word_in_oocstr hio_find_bcstr_word_in_bcstr # define hio_find_oocstr_word_in_oocstr hio_find_bcstr_word_in_bcstr
# define hio_find_oochar hio_find_bchar # define hio_find_oochar_in_oochars hio_find_bchar_in_bchars
# define hio_rfind_oochar hio_rfind_bchar # define hio_rfind_oochar_in_oochars hio_rfind_bchar_in_bchars
# define hio_find_oochar_in_oocstr hio_find_bchar_in_bcstr # define hio_find_oochar_in_oocstr hio_find_bchar_in_bcstr
# define hio_trim_oochars hio_trim_bchars # define hio_trim_oochars hio_trim_bchars

View File

@ -759,7 +759,7 @@ hio_oow_t hio_count_ucstr_limited (const hio_uch_t* str, hio_oow_t maxlen)
return i; return i;
} }
hio_oow_t hio_count_bcstr_limited (const hio_uch_t* str, hio_oow_t maxlen) hio_oow_t hio_count_bcstr_limited (const hio_bch_t* str, hio_oow_t maxlen)
{ {
hio_oow_t i; hio_oow_t i;
for (i = 0; i < maxlen; i++) for (i = 0; i < maxlen; i++)
@ -811,7 +811,7 @@ void hio_fill_bchars (hio_bch_t* dst, hio_bch_t ch, hio_oow_t len)
for (i = 0; i < len; i++) dst[i] = ch; for (i = 0; i < len; i++) dst[i] = ch;
} }
hio_uch_t* hio_find_uchar (const hio_uch_t* ptr, hio_oow_t len, hio_uch_t c) hio_uch_t* hio_find_uchar_in_uchars (const hio_uch_t* ptr, hio_oow_t len, hio_uch_t c)
{ {
const hio_uch_t* end; const hio_uch_t* end;
@ -825,7 +825,7 @@ hio_uch_t* hio_find_uchar (const hio_uch_t* ptr, hio_oow_t len, hio_uch_t c)
return HIO_NULL; return HIO_NULL;
} }
hio_bch_t* hio_find_bchar (const hio_bch_t* ptr, hio_oow_t len, hio_bch_t c) hio_bch_t* hio_find_bchar_in_bchars (const hio_bch_t* ptr, hio_oow_t len, hio_bch_t c)
{ {
const hio_bch_t* end; const hio_bch_t* end;
@ -839,7 +839,7 @@ hio_bch_t* hio_find_bchar (const hio_bch_t* ptr, hio_oow_t len, hio_bch_t c)
return HIO_NULL; return HIO_NULL;
} }
hio_uch_t* hio_rfind_uchar (const hio_uch_t* ptr, hio_oow_t len, hio_uch_t c) hio_uch_t* hio_rfind_uchar_in_uchars (const hio_uch_t* ptr, hio_oow_t len, hio_uch_t c)
{ {
const hio_uch_t* cur; const hio_uch_t* cur;
@ -853,7 +853,7 @@ hio_uch_t* hio_rfind_uchar (const hio_uch_t* ptr, hio_oow_t len, hio_uch_t c)
return HIO_NULL; return HIO_NULL;
} }
hio_bch_t* hio_rfind_bchar (const hio_bch_t* ptr, hio_oow_t len, hio_bch_t c) hio_bch_t* hio_rfind_bchar_in_bchars (const hio_bch_t* ptr, hio_oow_t len, hio_bch_t c)
{ {
const hio_bch_t* cur; const hio_bch_t* cur;

View File

@ -90,11 +90,11 @@ dnl --
fn_fill_chars(hio_fill_uchars, hio_uch_t) fn_fill_chars(hio_fill_uchars, hio_uch_t)
fn_fill_chars(hio_fill_bchars, hio_bch_t) fn_fill_chars(hio_fill_bchars, hio_bch_t)
dnl -- dnl --
fn_find_char_in_chars(hio_find_uchar, hio_uch_t) fn_find_char_in_chars(hio_find_uchar_in_uchars, hio_uch_t)
fn_find_char_in_chars(hio_find_bchar, hio_bch_t) fn_find_char_in_chars(hio_find_bchar_in_bchars, hio_bch_t)
dnl -- dnl --
fn_rfind_char_in_chars(hio_rfind_uchar, hio_uch_t) fn_rfind_char_in_chars(hio_rfind_uchar_in_uchars, hio_uch_t)
fn_rfind_char_in_chars(hio_rfind_bchar, hio_bch_t) fn_rfind_char_in_chars(hio_rfind_bchar_in_bchars, hio_bch_t)
dnl -- dnl --
fn_find_char_in_cstr(hio_find_uchar_in_ucstr, hio_uch_t) fn_find_char_in_cstr(hio_find_uchar_in_ucstr, hio_uch_t)
fn_find_char_in_cstr(hio_find_bchar_in_bcstr, hio_bch_t) fn_find_char_in_cstr(hio_find_bchar_in_bcstr, hio_bch_t)

View File

@ -406,7 +406,7 @@ popdef([[_fn_name_]])popdef([[_char_type_]])dnl
]])dnl ]])dnl
dnl --------------------------------------------------------------------------- dnl ---------------------------------------------------------------------------
define([[fn_count_cstr_limited]], [[pushdef([[_fn_name_]], $1)pushdef([[_char_type_]], $2)dnl define([[fn_count_cstr_limited]], [[pushdef([[_fn_name_]], $1)pushdef([[_char_type_]], $2)dnl
hio_oow_t _fn_name_ (const hio_uch_t* str, hio_oow_t maxlen) hio_oow_t _fn_name_ (const _char_type_* str, hio_oow_t maxlen)
{ {
hio_oow_t i; hio_oow_t i;
for (i = 0; i < maxlen; i++) for (i = 0; i < maxlen; i++)