exported hcl_conv_ucs_to_bcs_with_cmgr() and similar functions
enhanced the sample server program
This commit is contained in:
parent
d51ad1cd6a
commit
3ba32a615d
@ -345,12 +345,55 @@ HCL_EXPORT int hcl_concatoocstrtosbuf (
|
|||||||
int id
|
int id
|
||||||
);
|
);
|
||||||
|
|
||||||
HCL_EXPORT hcl_cmgr_t* hcl_getutf8cmgr (
|
#if defined(HCL_OOCH_IS_UCH)
|
||||||
|
# define hcl_conv_oocs_to_bcs_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr) hcl_conv_ucs_to_bcs_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr)
|
||||||
|
# define hcl_conv_oocsn_to_bcsn_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr) hcl_conv_ucsn_to_bcsn_with_cmgr(oocs,oocslen,bcs,bcslen,cmgr)
|
||||||
|
#else
|
||||||
|
# define hcl_conv_oocs_to_ucs_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr) hcl_conv_bcs_to_ucs_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr,0)
|
||||||
|
# define hcl_conv_oocsn_to_ucsn_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr) hcl_conv_bcsn_to_ucsn_with_cmgr(oocs,oocslen,ucs,ucslen,cmgr,0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
HCL_EXPORT int hcl_conv_bcs_to_ucs_with_cmgr (
|
||||||
|
const hcl_bch_t* bcs,
|
||||||
|
hcl_oow_t* bcslen,
|
||||||
|
hcl_uch_t* ucs,
|
||||||
|
hcl_oow_t* ucslen,
|
||||||
|
hcl_cmgr_t* cmgr,
|
||||||
|
int all
|
||||||
|
);
|
||||||
|
|
||||||
|
HCL_EXPORT int hcl_conv_bcsn_to_ucsn_with_cmgr (
|
||||||
|
const hcl_bch_t* bcs,
|
||||||
|
hcl_oow_t* bcslen,
|
||||||
|
hcl_uch_t* ucs,
|
||||||
|
hcl_oow_t* ucslen,
|
||||||
|
hcl_cmgr_t* cmgr,
|
||||||
|
int all
|
||||||
|
);
|
||||||
|
|
||||||
|
HCL_EXPORT int hcl_conv_ucs_to_bcs_with_cmgr (
|
||||||
|
const hcl_uch_t* ucs,
|
||||||
|
hcl_oow_t* ucslen,
|
||||||
|
hcl_bch_t* bcs,
|
||||||
|
hcl_oow_t* bcslen,
|
||||||
|
hcl_cmgr_t* cmgr
|
||||||
|
);
|
||||||
|
|
||||||
|
HCL_EXPORT int hcl_conv_ucsn_to_bcsn_with_cmgr (
|
||||||
|
const hcl_uch_t* ucs,
|
||||||
|
hcl_oow_t* ucslen,
|
||||||
|
hcl_bch_t* bcs,
|
||||||
|
hcl_oow_t* bcslen,
|
||||||
|
hcl_cmgr_t* cmgr
|
||||||
|
);
|
||||||
|
|
||||||
|
HCL_EXPORT hcl_cmgr_t* hcl_get_utf8_cmgr (
|
||||||
void
|
void
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The hcl_convutoutf8chars() function converts a unicode character string \a ucs
|
* The hcl_conv_uchars_to_utf8() function converts a unicode character string \a ucs
|
||||||
* to a UTF8 string and writes it into the buffer pointed to by \a bcs, but
|
* to a UTF8 string and writes it into the buffer pointed to by \a bcs, but
|
||||||
* not more than \a bcslen bytes including the terminating null.
|
* not more than \a bcslen bytes including the terminating null.
|
||||||
*
|
*
|
||||||
@ -371,14 +414,14 @@ HCL_EXPORT hcl_cmgr_t* hcl_getutf8cmgr (
|
|||||||
* hcl_bch_t bcs[10];
|
* hcl_bch_t bcs[10];
|
||||||
* hcl_oow_t ucslen = 5;
|
* hcl_oow_t ucslen = 5;
|
||||||
* hcl_oow_t bcslen = HCL_COUNTOF(bcs);
|
* hcl_oow_t bcslen = HCL_COUNTOF(bcs);
|
||||||
* n = hcl_convutoutf8chars (ucs, &ucslen, bcs, &bcslen);
|
* n = hcl_conv_uchars_to_utf8 (ucs, &ucslen, bcs, &bcslen);
|
||||||
* if (n <= -1)
|
* if (n <= -1)
|
||||||
* {
|
* {
|
||||||
* // conversion error
|
* // conversion error
|
||||||
* }
|
* }
|
||||||
* \endcode
|
* \endcode
|
||||||
*/
|
*/
|
||||||
HCL_EXPORT int hcl_convutoutf8chars (
|
HCL_EXPORT int hcl_conv_uchars_to_utf8 (
|
||||||
const hcl_uch_t* ucs,
|
const hcl_uch_t* ucs,
|
||||||
hcl_oow_t* ucslen,
|
hcl_oow_t* ucslen,
|
||||||
hcl_bch_t* bcs,
|
hcl_bch_t* bcs,
|
||||||
@ -386,7 +429,7 @@ HCL_EXPORT int hcl_convutoutf8chars (
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The hcl_convutf8touchars() function converts a UTF8 string to a uncide string.
|
* The hcl_conv_utf8_to_uchars() function converts a UTF8 string to a uncide string.
|
||||||
*
|
*
|
||||||
* It never returns -2 if \a ucs is #HCL_NULL.
|
* It never returns -2 if \a ucs is #HCL_NULL.
|
||||||
*
|
*
|
||||||
@ -396,7 +439,7 @@ HCL_EXPORT int hcl_convutoutf8chars (
|
|||||||
* hcl_oow_t ucslen = HCL_COUNTOF(buf), n;
|
* hcl_oow_t ucslen = HCL_COUNTOF(buf), n;
|
||||||
* hcl_oow_t bcslen = 11;
|
* hcl_oow_t bcslen = 11;
|
||||||
* int n;
|
* int n;
|
||||||
* n = hcl_convutf8touchars (bcs, &bcslen, ucs, &ucslen);
|
* n = hcl_conv_utf8_to_uchars (bcs, &bcslen, ucs, &ucslen);
|
||||||
* if (n <= -1) { invalid/incomplenete sequence or buffer to small }
|
* if (n <= -1) { invalid/incomplenete sequence or buffer to small }
|
||||||
* \endcode
|
* \endcode
|
||||||
*
|
*
|
||||||
@ -409,7 +452,7 @@ HCL_EXPORT int hcl_convutoutf8chars (
|
|||||||
* -2 if the wide-character string buffer is too small.
|
* -2 if the wide-character string buffer is too small.
|
||||||
* -3 if \a bcs is not a complete sequence.
|
* -3 if \a bcs is not a complete sequence.
|
||||||
*/
|
*/
|
||||||
HCL_EXPORT int hcl_convutf8touchars (
|
HCL_EXPORT int hcl_conv_utf8_to_uchars (
|
||||||
const hcl_bch_t* bcs,
|
const hcl_bch_t* bcs,
|
||||||
hcl_oow_t* bcslen,
|
hcl_oow_t* bcslen,
|
||||||
hcl_uch_t* ucs,
|
hcl_uch_t* ucs,
|
||||||
@ -417,14 +460,14 @@ HCL_EXPORT int hcl_convutf8touchars (
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
HCL_EXPORT int hcl_convutoutf8cstr (
|
HCL_EXPORT int hcl_conv_ucstr_to_utf8 (
|
||||||
const hcl_uch_t* ucs,
|
const hcl_uch_t* ucs,
|
||||||
hcl_oow_t* ucslen,
|
hcl_oow_t* ucslen,
|
||||||
hcl_bch_t* bcs,
|
hcl_bch_t* bcs,
|
||||||
hcl_oow_t* bcslen
|
hcl_oow_t* bcslen
|
||||||
);
|
);
|
||||||
|
|
||||||
HCL_EXPORT int hcl_convutf8toucstr (
|
HCL_EXPORT int hcl_conv_utf8_to_ucstr (
|
||||||
const hcl_bch_t* bcs,
|
const hcl_bch_t* bcs,
|
||||||
hcl_oow_t* bcslen,
|
hcl_oow_t* bcslen,
|
||||||
hcl_uch_t* ucs,
|
hcl_uch_t* ucs,
|
||||||
|
@ -105,7 +105,7 @@ int hcl_init (hcl_t* hcl, hcl_mmgr_t* mmgr, hcl_oow_t heapsz, const hcl_vmprim_t
|
|||||||
|
|
||||||
HCL_MEMSET (hcl, 0, HCL_SIZEOF(*hcl));
|
HCL_MEMSET (hcl, 0, HCL_SIZEOF(*hcl));
|
||||||
hcl->mmgr = mmgr;
|
hcl->mmgr = mmgr;
|
||||||
hcl->cmgr = hcl_getutf8cmgr();
|
hcl->cmgr = hcl_get_utf8_cmgr();
|
||||||
hcl->vmprim = *vmprim;
|
hcl->vmprim = *vmprim;
|
||||||
if (!hcl->vmprim.alloc_heap) hcl->vmprim.alloc_heap = alloc_heap;
|
if (!hcl->vmprim.alloc_heap) hcl->vmprim.alloc_heap = alloc_heap;
|
||||||
if (!hcl->vmprim.free_heap) hcl->vmprim.free_heap = free_heap;
|
if (!hcl->vmprim.free_heap) hcl->vmprim.free_heap = free_heap;
|
||||||
|
@ -2001,7 +2001,7 @@ HCL_EXPORT int hcl_convbtoucstr (
|
|||||||
* The hcl_convutobcstr() function converts a null-terminated wide string
|
* The hcl_convutobcstr() function converts a null-terminated wide string
|
||||||
* to a byte string.
|
* to a byte string.
|
||||||
*/
|
*/
|
||||||
int hcl_convutobcstr (
|
HCL_EXPORT int hcl_convutobcstr (
|
||||||
hcl_t* hcl,
|
hcl_t* hcl,
|
||||||
const hcl_uch_t* ucs,
|
const hcl_uch_t* ucs,
|
||||||
hcl_oow_t* ucslen,
|
hcl_oow_t* ucslen,
|
||||||
@ -2009,7 +2009,6 @@ int hcl_convutobcstr (
|
|||||||
hcl_oow_t* bcslen
|
hcl_oow_t* bcslen
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
#if defined(HCL_OOCH_IS_UCH)
|
#if defined(HCL_OOCH_IS_UCH)
|
||||||
# define hcl_dupootobcharswithheadroom(hcl,hrb,oocs,oocslen,bcslen) hcl_duputobcharswithheadroom(hcl,hrb,oocs,oocslen,bcslen)
|
# define hcl_dupootobcharswithheadroom(hcl,hrb,oocs,oocslen,bcslen) hcl_duputobcharswithheadroom(hcl,hrb,oocs,oocslen,bcslen)
|
||||||
# define hcl_dupbtooocharswithheadroom(hcl,hrb,bcs,bcslen,oocslen) hcl_dupbtoucharswithheadroom(hcl,hrb,bcs,bcslen,oocslen)
|
# define hcl_dupbtooocharswithheadroom(hcl,hrb,bcs,bcslen,oocslen) hcl_dupbtoucharswithheadroom(hcl,hrb,bcs,bcslen,oocslen)
|
||||||
|
11
lib/main.c
11
lib/main.c
@ -152,8 +152,6 @@ struct xtn_t
|
|||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
|
|
||||||
#define MB_1 (256UL*1024*1024)
|
|
||||||
|
|
||||||
static void* sys_alloc (hcl_mmgr_t* mmgr, hcl_oow_t size)
|
static void* sys_alloc (hcl_mmgr_t* mmgr, hcl_oow_t size)
|
||||||
{
|
{
|
||||||
return malloc(size);
|
return malloc(size);
|
||||||
@ -1892,14 +1890,11 @@ int main_server (int argc, char* argv[]);
|
|||||||
|
|
||||||
int main (int argc, char* argv[])
|
int main (int argc, char* argv[])
|
||||||
{
|
{
|
||||||
const char* slash;
|
|
||||||
const char* prog;
|
|
||||||
|
|
||||||
prog = argv[0];
|
const char* base;
|
||||||
slash = strrchr(prog, '/');
|
|
||||||
if (slash) prog = slash + 1;
|
|
||||||
|
|
||||||
if (strcmp(prog, "hcld") == 0) return main_server (argc, argv);
|
base = get_base_name (argv[0]);
|
||||||
|
if (strcmp(base, "hcld") == 0) return main_server (argc, argv);
|
||||||
|
|
||||||
return main_tty (argc, argv);
|
return main_tty (argc, argv);
|
||||||
}
|
}
|
||||||
|
1012
lib/main2.c
1012
lib/main2.c
File diff suppressed because it is too large
Load Diff
36
lib/utl.c
36
lib/utl.c
@ -391,7 +391,7 @@ int hcl_copyoocstrtosbuf (hcl_t* hcl, const hcl_ooch_t* str, int id)
|
|||||||
|
|
||||||
/* ----------------------------------------------------------------------- */
|
/* ----------------------------------------------------------------------- */
|
||||||
|
|
||||||
static HCL_INLINE int bcsn_to_ucsn_with_cmgr (
|
HCL_INLINE int hcl_conv_bcsn_to_ucsn_with_cmgr (
|
||||||
const hcl_bch_t* bcs, hcl_oow_t* bcslen,
|
const hcl_bch_t* bcs, hcl_oow_t* bcslen,
|
||||||
hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_cmgr_t* cmgr, int all)
|
hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_cmgr_t* cmgr, int all)
|
||||||
{
|
{
|
||||||
@ -512,7 +512,7 @@ static HCL_INLINE int bcsn_to_ucsn_with_cmgr (
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HCL_INLINE int bcs_to_ucs_with_cmgr (
|
HCL_INLINE int hcl_conv_bcs_to_ucs_with_cmgr (
|
||||||
const hcl_bch_t* bcs, hcl_oow_t* bcslen,
|
const hcl_bch_t* bcs, hcl_oow_t* bcslen,
|
||||||
hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_cmgr_t* cmgr, int all)
|
hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_cmgr_t* cmgr, int all)
|
||||||
{
|
{
|
||||||
@ -523,7 +523,7 @@ static HCL_INLINE int bcs_to_ucs_with_cmgr (
|
|||||||
for (bp = bcs; *bp != '\0'; bp++) /* nothing */ ;
|
for (bp = bcs; *bp != '\0'; bp++) /* nothing */ ;
|
||||||
|
|
||||||
mlen = bp - bcs; wlen = *ucslen;
|
mlen = bp - bcs; wlen = *ucslen;
|
||||||
n = bcsn_to_ucsn_with_cmgr (bcs, &mlen, ucs, &wlen, cmgr, all);
|
n = hcl_conv_bcsn_to_ucsn_with_cmgr (bcs, &mlen, ucs, &wlen, cmgr, all);
|
||||||
if (ucs)
|
if (ucs)
|
||||||
{
|
{
|
||||||
/* null-terminate the target buffer if it has room for it. */
|
/* null-terminate the target buffer if it has room for it. */
|
||||||
@ -535,7 +535,7 @@ static HCL_INLINE int bcs_to_ucs_with_cmgr (
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HCL_INLINE int ucsn_to_bcsn_with_cmgr (
|
HCL_INLINE int hcl_conv_ucsn_to_bcsn_with_cmgr (
|
||||||
const hcl_uch_t* ucs, hcl_oow_t* ucslen,
|
const hcl_uch_t* ucs, hcl_oow_t* ucslen,
|
||||||
hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_cmgr_t* cmgr)
|
hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_cmgr_t* cmgr)
|
||||||
{
|
{
|
||||||
@ -605,7 +605,7 @@ static HCL_INLINE int ucsn_to_bcsn_with_cmgr (
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int ucs_to_bcs_with_cmgr (
|
HCL_INLINE int hcl_conv_ucs_to_bcs_with_cmgr (
|
||||||
const hcl_uch_t* ucs, hcl_oow_t* ucslen,
|
const hcl_uch_t* ucs, hcl_oow_t* ucslen,
|
||||||
hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_cmgr_t* cmgr)
|
hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_cmgr_t* cmgr)
|
||||||
{
|
{
|
||||||
@ -694,33 +694,33 @@ static hcl_cmgr_t utf8_cmgr =
|
|||||||
hcl_uctoutf8
|
hcl_uctoutf8
|
||||||
};
|
};
|
||||||
|
|
||||||
hcl_cmgr_t* hcl_getutf8cmgr (void)
|
hcl_cmgr_t* hcl_get_utf8_cmgr (void)
|
||||||
{
|
{
|
||||||
return &utf8_cmgr;
|
return &utf8_cmgr;
|
||||||
}
|
}
|
||||||
|
|
||||||
int hcl_convutf8touchars (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen)
|
int hcl_conv_utf8_to_uchars (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen)
|
||||||
{
|
{
|
||||||
/* the source is length bound */
|
/* the source is length bound */
|
||||||
return bcsn_to_ucsn_with_cmgr (bcs, bcslen, ucs, ucslen, &utf8_cmgr, 0);
|
return hcl_conv_bcsn_to_ucsn_with_cmgr (bcs, bcslen, ucs, ucslen, &utf8_cmgr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int hcl_convutoutf8chars (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen)
|
int hcl_conv_uchars_to_utf8 (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen)
|
||||||
{
|
{
|
||||||
/* length bound */
|
/* length bound */
|
||||||
return ucsn_to_bcsn_with_cmgr (ucs, ucslen, bcs, bcslen, &utf8_cmgr);
|
return hcl_conv_ucsn_to_bcsn_with_cmgr (ucs, ucslen, bcs, bcslen, &utf8_cmgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int hcl_convutf8toucstr (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen)
|
int hcl_conv_utf8_to_ucstr (const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen)
|
||||||
{
|
{
|
||||||
/* null-terminated. */
|
/* null-terminated. */
|
||||||
return bcs_to_ucs_with_cmgr (bcs, bcslen, ucs, ucslen, &utf8_cmgr, 0);
|
return hcl_conv_bcs_to_ucs_with_cmgr (bcs, bcslen, ucs, ucslen, &utf8_cmgr, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int hcl_convutoutf8cstr (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen)
|
int hcl_conv_ucstr_to_utf8 (const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen)
|
||||||
{
|
{
|
||||||
/* null-terminated */
|
/* null-terminated */
|
||||||
return ucs_to_bcs_with_cmgr (ucs, ucslen, bcs, bcslen, &utf8_cmgr);
|
return hcl_conv_ucs_to_bcs_with_cmgr (ucs, ucslen, bcs, bcslen, &utf8_cmgr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------- */
|
/* ----------------------------------------------------------------------- */
|
||||||
@ -730,7 +730,7 @@ int hcl_convbtouchars (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_
|
|||||||
/* length bound */
|
/* length bound */
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
n = bcsn_to_ucsn_with_cmgr (bcs, bcslen, ucs, ucslen, hcl->cmgr, 0);
|
n = hcl_conv_bcsn_to_ucsn_with_cmgr(bcs, bcslen, ucs, ucslen, hcl->cmgr, 0);
|
||||||
|
|
||||||
if (n <= -1)
|
if (n <= -1)
|
||||||
{
|
{
|
||||||
@ -746,7 +746,7 @@ int hcl_convutobchars (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_
|
|||||||
/* length bound */
|
/* length bound */
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
n = ucsn_to_bcsn_with_cmgr (ucs, ucslen, bcs, bcslen, hcl->cmgr);
|
n = hcl_conv_ucsn_to_bcsn_with_cmgr(ucs, ucslen, bcs, bcslen, hcl->cmgr);
|
||||||
|
|
||||||
if (n <= -1)
|
if (n <= -1)
|
||||||
{
|
{
|
||||||
@ -761,7 +761,7 @@ int hcl_convbtoucstr (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_u
|
|||||||
/* null-terminated. */
|
/* null-terminated. */
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
n = bcs_to_ucs_with_cmgr (bcs, bcslen, ucs, ucslen, hcl->cmgr, 0);
|
n = hcl_conv_bcs_to_ucs_with_cmgr(bcs, bcslen, ucs, ucslen, hcl->cmgr, 0);
|
||||||
|
|
||||||
if (n <= -1)
|
if (n <= -1)
|
||||||
{
|
{
|
||||||
@ -776,7 +776,7 @@ int hcl_convutobcstr (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_b
|
|||||||
/* null-terminated */
|
/* null-terminated */
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
n = ucs_to_bcs_with_cmgr (ucs, ucslen, bcs, bcslen, hcl->cmgr);
|
n = hcl_conv_ucs_to_bcs_with_cmgr(ucs, ucslen, bcs, bcslen, hcl->cmgr);
|
||||||
|
|
||||||
if (n <= -1)
|
if (n <= -1)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user