added hawk_gem_dupucsarr() and hawk_gem_dupbcsarr()
All checks were successful
continuous-integration/drone/push Build is passing

modifed mod-uci.h to be compilable at least - it's full of problems
This commit is contained in:
2024-04-22 23:19:50 +09:00
parent 5b4eac36af
commit 9fa26924c7
10 changed files with 244 additions and 187 deletions

View File

@ -172,6 +172,43 @@ hawk_bch_t* hawk_gem_dupbcstrarr (hawk_gem_t* gem, const hawk_bch_t* str[], hawk
return buf;
}
hawk_uch_t* hawk_gem_dupucsarr (hawk_gem_t* gem, const hawk_ucs_t* str, hawk_oow_t* len)
{
hawk_uch_t* buf, * ptr;
hawk_oow_t i;
hawk_oow_t capa = 0;
for (i = 0; str[i].ptr; i++) capa += str[i].len;
buf = (hawk_uch_t*)hawk_gem_allocmem(gem, (capa + 1) * HAWK_SIZEOF(*buf));
if (!buf) return HAWK_NULL;
ptr = buf;
for (i = 0; str[i].ptr; i++) ptr += hawk_copy_uchars_to_ucstr_unlimited(ptr, str[i].ptr, str[i].len);
if (len) *len = capa;
return buf;
}
hawk_bch_t* hawk_gem_dupbcsarr (hawk_gem_t* gem, const hawk_bcs_t* str, hawk_oow_t* len)
{
hawk_bch_t* buf, * ptr;
hawk_oow_t i;
hawk_oow_t capa = 0;
for (i = 0; str[i].ptr; i++) capa += str[i].len;
buf = (hawk_bch_t*)hawk_gem_allocmem(gem, (capa + 1) * HAWK_SIZEOF(*buf));
if (!buf) return HAWK_NULL;
ptr = buf;
for (i = 0; str[i].ptr; i++) ptr += hawk_copy_bchars_to_bcstr_unlimited(ptr, str[i].ptr, str[i].len);
if (len) *len = capa;
return buf;
}
/* ------------------------------------------------------------------------ */
int hawk_gem_convbtouchars (hawk_gem_t* gem, const hawk_bch_t* bcs, hawk_oow_t* bcslen, hawk_uch_t* ucs, hawk_oow_t* ucslen, int all)

View File

@ -618,6 +618,9 @@
/* Define to 1 if you have the <time.h> header file. */
#undef HAVE_TIME_H
/* Define to 1 if you have the <uci.h> header file. */
#undef HAVE_UCI_H
/* Define to 1 if you have the <ucontext.h> header file. */
#undef HAVE_UCONTEXT_H

View File

@ -168,16 +168,30 @@ HAWK_EXPORT hawk_bch_t* hawk_gem_dupbcstrarr (
hawk_oow_t* len
);
HAWK_EXPORT hawk_uch_t* hawk_gem_dupucsarr (
hawk_gem_t* gem,
const hawk_ucs_t* str,
hawk_oow_t* len
);
HAWK_EXPORT hawk_bch_t* hawk_gem_dupbcsarr (
hawk_gem_t* gem,
const hawk_bcs_t* str,
hawk_oow_t* len
);
#if defined(HAWK_OOCH_IS_UCH)
# define hawk_gem_dupoocstr hawk_gem_dupucstr
# define hawk_gem_dupoochars hawk_gem_dupuchars
# define hawk_gem_dupoocs hawk_gem_dupucs
# define hawk_gem_dupoocstrarr hawk_gem_dupucstrarr
# define hawk_gem_dupoocsarr hawk_gem_dupucsarr
#else
# define hawk_gem_dupoocstr hawk_gem_dupbcstr
# define hawk_gem_dupoochars hawk_gem_dupbchars
# define hawk_gem_dupoocs hawk_gem_dupbcs
# define hawk_gem_dupoocstrarr hawk_gem_dupbcstrarr
# define hawk_gem_dupoocsarr hawk_gem_dupbcsarr
#endif
/* ----------------------------------------------------------------------- */

View File

@ -3207,7 +3207,7 @@ HAWK_EXPORT void hawk_rtx_refdownval_nofree (
#define HAWK_RTX_GC_GEN_AUTO (-1)
/*
* The hawk_rtc_gc() function triggers garbage collection.
* The hawk_rtx_gc() function triggers garbage collection.
* It returns the generation number collected and never fails
*/
HAWK_EXPORT int hawk_rtx_gc (
@ -3531,6 +3531,8 @@ static HAWK_INLINE hawk_uch_t* hawk_rtx_dupucs (hawk_rtx_t* rtx, const hawk_ucs_
static HAWK_INLINE hawk_bch_t* hawk_rtx_dupbcs (hawk_rtx_t* rtx, const hawk_bcs_t* bcs) { return hawk_gem_dupbcs(hawk_rtx_getgem(rtx), bcs); }
static HAWK_INLINE hawk_uch_t* hawk_rtx_dupucstrarr (hawk_rtx_t* rtx, const hawk_uch_t* strs[], hawk_oow_t* len) { return hawk_gem_dupucstrarr(hawk_rtx_getgem(rtx), strs, len); }
static HAWK_INLINE hawk_bch_t* hawk_rtx_dupbcstrarr (hawk_rtx_t* rtx, const hawk_bch_t* strs[], hawk_oow_t* len) { return hawk_gem_dupbcstrarr(hawk_rtx_getgem(rtx), strs, len); }
static HAWK_INLINE hawk_uch_t* hawk_rtx_dupucsarr (hawk_rtx_t* rtx, const hawk_ucs_t* strs, hawk_oow_t* len) { return hawk_gem_dupucsarr(hawk_rtx_getgem(rtx), strs, len); }
static HAWK_INLINE hawk_bch_t* hawk_rtx_dupbcsarr (hawk_rtx_t* rtx, const hawk_bcs_t* strs, hawk_oow_t* len) { return hawk_gem_dupbcsarr(hawk_rtx_getgem(rtx), strs, len); }
#else
#define hawk_rtx_dupucstr(rtx, ucs, ucslen) hawk_gem_dupucstr(hawk_rtx_getgem(rtx), ucs, ucslen)
#define hawk_rtx_dupbcstr(rtx, bcs, bcslen) hawk_gem_dupbcstr(hawk_rtx_getgem(rtx), bcs, bcslen)
@ -3540,6 +3542,8 @@ static HAWK_INLINE hawk_bch_t* hawk_rtx_dupbcstrarr (hawk_rtx_t* rtx, const hawk
#define hawk_rtx_dupbcs(rtx, bcs) hawk_gem_dupbcs(hawk_rtx_getgem(rtx), bcs)
#define hawk_rtx_dupucstrarr(rtx, strs, len) hawk_gem_dupucstrarr(hawk_rtx_getgem(rtx), strs, len)
#define hawk_rtx_dupbcstrarr(rtx, strs, len) hawk_gem_dupbcstrarr(hawk_rtx_getgem(rtx), strs, len)
#define hawk_rtx_dupucsarr(rtx, strs, len) hawk_gem_dupucsarr(hawk_rtx_getgem(rtx), strs, len)
#define hawk_rtx_dupbcsarr(rtx, strs, len) hawk_gem_dupbcsarr(hawk_rtx_getgem(rtx), strs, len)
#endif
#if defined(HAWK_OOCH_IS_UCH)
@ -3547,11 +3551,13 @@ static HAWK_INLINE hawk_bch_t* hawk_rtx_dupbcstrarr (hawk_rtx_t* rtx, const hawk
# define hawk_rtx_dupoochars hawk_rtx_dupuchars
# define hawk_rtx_dupoocs hawk_rtx_dupucs
# define hawk_rtx_dupoocstrarr hawk_rtx_dupucstrarr
# define hawk_rtx_dupoocsarr hawk_rtx_dupucsarr
#else
# define hawk_rtx_dupoocstr hawk_rtx_dupbcstr
# define hawk_rtx_dupoochars hawk_rtx_dupbchars
# define hawk_rtx_dupoocs hawk_rtx_dupbcs
# define hawk_rtx_dupoocstrarr hawk_rtx_dupbcstrarr
# define hawk_rtx_dupoocsarr hawk_rtx_dupbcsarr
#endif
/* ----------------------------------------------------------------------- */