added hak_makesymbolwithuchars()/hak_makesymbolwithbchars()/hak_makestringwithuchars()/hak_makestirngwithbchars()

fixed some fpc code related to character type configured
This commit is contained in:
2025-10-08 23:38:24 +09:00
parent 56dfb3630e
commit 7504ec1a4c
20 changed files with 406 additions and 132 deletions

View File

@ -202,12 +202,29 @@ hak_oop_t hak_makesymbolwithbcstr (hak_t* hak, const hak_bch_t* ptr)
#endif
}
hak_oop_t hak_makesymbolwithbchars (hak_t* hak, const hak_bch_t* ptr, hak_oow_t len)
{
#if defined(HAK_OOCH_IS_UCH)
hak_uch_t* ucsptr;
hak_oow_t ucslen;
hak_oop_t v;
/* TODO: no duplication? */
ucsptr = hak_dupbtouchars(hak, ptr, len, &ucslen);
if (HAK_UNLIKELY(!ucsptr)) return HAK_NULL;
v = hak_makesymbol(hak, ucsptr, ucslen);
hak_freemem(hak, ucsptr);
return v;
#else
return hak_makesymbol(hak, ptr, len);
#endif
}
hak_oop_t hak_makesymbolwithucstr (hak_t* hak, const hak_uch_t* ptr)
{
#if defined(HAK_OOCH_IS_UCH)
return hak_makesymbol(hak, ptr, hak_count_ucstr(ptr));
#else
hak_uch_t* bcsptr;
hak_bch_t* bcsptr;
hak_oow_t bcslen;
hak_oop_t v;
/* TODO: no duplication? */
@ -218,3 +235,20 @@ hak_oop_t hak_makesymbolwithucstr (hak_t* hak, const hak_uch_t* ptr)
return v;
#endif
}
hak_oop_t hak_makesymbolwithuchars (hak_t* hak, const hak_uch_t* ptr, hak_oow_t len)
{
#if defined(HAK_OOCH_IS_UCH)
return hak_makesymbol(hak, ptr, len);
#else
hak_bch_t* bcsptr;
hak_oow_t bcslen;
hak_oop_t v;
/* TODO: no duplication? */
bcsptr = hak_duputobchars(hak, ptr, len, &bcslen);
if (HAK_UNLIKELY(!bcsptr)) return HAK_NULL;
v = hak_makesymbol(hak, bcsptr, bcslen);
hak_freemem(hak, bcsptr);
return v;
#endif
}