renamed hcl to hak
This commit is contained in:
238
lib/utl.c
238
lib/utl.c
@ -22,9 +22,9 @@
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <hcl-utl.h>
|
||||
#include <hcl-str.h>
|
||||
#include <hcl.h>
|
||||
#include <hak-utl.h>
|
||||
#include <hak-str.h>
|
||||
#include <hak.h>
|
||||
|
||||
/* some naming conventions
|
||||
* bchars, uchars -> pointer and length
|
||||
@ -35,73 +35,73 @@
|
||||
* utobcstr -> ucstr to bcstr
|
||||
*/
|
||||
|
||||
hcl_oow_t hcl_hash_bytes_ (const hcl_oob_t* ptr, hcl_oow_t len)
|
||||
hak_oow_t hak_hash_bytes_ (const hak_oob_t* ptr, hak_oow_t len)
|
||||
{
|
||||
hcl_oow_t hv;
|
||||
HCL_HASH_BYTES (hv, ptr, len);
|
||||
hak_oow_t hv;
|
||||
HAK_HASH_BYTES (hv, ptr, len);
|
||||
/* constrain the hash value to be representable in a small integer
|
||||
* for convenience sake */
|
||||
return hv % ((hcl_oow_t)HCL_SMOOI_MAX + 1);
|
||||
return hv % ((hak_oow_t)HAK_SMOOI_MAX + 1);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
int hcl_convbtouchars (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen)
|
||||
int hak_convbtouchars (hak_t* hak, const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen)
|
||||
{
|
||||
/* length bound */
|
||||
int n;
|
||||
|
||||
n = hcl_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, HCL_CMGR(hcl), 0);
|
||||
n = hak_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, HAK_CMGR(hak), 0);
|
||||
|
||||
if (n <= -1)
|
||||
{
|
||||
/* -1: illegal character, -2: buffer too small, -3: incomplete sequence */
|
||||
hcl_seterrnum (hcl, (n == -2)? HCL_EBUFFULL: HCL_EECERR);
|
||||
hak_seterrnum (hak, (n == -2)? HAK_EBUFFULL: HAK_EECERR);
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
int hcl_convutobchars (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen)
|
||||
int hak_convutobchars (hak_t* hak, const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen)
|
||||
{
|
||||
/* length bound */
|
||||
int n;
|
||||
|
||||
n = hcl_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, HCL_CMGR(hcl));
|
||||
n = hak_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, HAK_CMGR(hak));
|
||||
|
||||
if (n <= -1)
|
||||
{
|
||||
hcl_seterrnum (hcl, (n == -2)? HCL_EBUFFULL: HCL_EECERR);
|
||||
hak_seterrnum (hak, (n == -2)? HAK_EBUFFULL: HAK_EECERR);
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
int hcl_convbtoucstr (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* bcslen, hcl_uch_t* ucs, hcl_oow_t* ucslen)
|
||||
int hak_convbtoucstr (hak_t* hak, const hak_bch_t* bcs, hak_oow_t* bcslen, hak_uch_t* ucs, hak_oow_t* ucslen)
|
||||
{
|
||||
/* null-terminated. */
|
||||
int n;
|
||||
|
||||
n = hcl_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, HCL_CMGR(hcl), 0);
|
||||
n = hak_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, HAK_CMGR(hak), 0);
|
||||
|
||||
if (n <= -1)
|
||||
{
|
||||
hcl_seterrnum (hcl, (n == -2)? HCL_EBUFFULL: HCL_EECERR);
|
||||
hak_seterrnum (hak, (n == -2)? HAK_EBUFFULL: HAK_EECERR);
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
int hcl_convutobcstr (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_bch_t* bcs, hcl_oow_t* bcslen)
|
||||
int hak_convutobcstr (hak_t* hak, const hak_uch_t* ucs, hak_oow_t* ucslen, hak_bch_t* bcs, hak_oow_t* bcslen)
|
||||
{
|
||||
/* null-terminated */
|
||||
int n;
|
||||
|
||||
n = hcl_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, HCL_CMGR(hcl));
|
||||
n = hak_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, HAK_CMGR(hak));
|
||||
|
||||
if (n <= -1)
|
||||
{
|
||||
hcl_seterrnum (hcl, (n == -2)? HCL_EBUFFULL: HCL_EECERR);
|
||||
hak_seterrnum (hak, (n == -2)? HAK_EBUFFULL: HAK_EECERR);
|
||||
}
|
||||
|
||||
return n;
|
||||
@ -109,169 +109,169 @@ int hcl_convutobcstr (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* ucslen, hcl_b
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
hcl_uch_t* hcl_dupbtoucharswithheadroom (hcl_t* hcl, hcl_oow_t headroom_bytes, const hcl_bch_t* bcs, hcl_oow_t bcslen, hcl_oow_t* ucslen)
|
||||
hak_uch_t* hak_dupbtoucharswithheadroom (hak_t* hak, hak_oow_t headroom_bytes, const hak_bch_t* bcs, hak_oow_t bcslen, hak_oow_t* ucslen)
|
||||
{
|
||||
hcl_oow_t inlen, outlen;
|
||||
hcl_uch_t* ptr;
|
||||
hak_oow_t inlen, outlen;
|
||||
hak_uch_t* ptr;
|
||||
|
||||
inlen = bcslen;
|
||||
if (hcl_convbtouchars (hcl, bcs, &inlen, HCL_NULL, &outlen) <= -1)
|
||||
if (hak_convbtouchars (hak, bcs, &inlen, HAK_NULL, &outlen) <= -1)
|
||||
{
|
||||
/* note it's also an error if no full conversion is made in this function */
|
||||
return HCL_NULL;
|
||||
return HAK_NULL;
|
||||
}
|
||||
|
||||
ptr = (hcl_uch_t*)hcl_allocmem(hcl, headroom_bytes + ((outlen + 1) * HCL_SIZEOF(hcl_uch_t)));
|
||||
if (HCL_UNLIKELY(!ptr)) return HCL_NULL;
|
||||
ptr = (hak_uch_t*)hak_allocmem(hak, headroom_bytes + ((outlen + 1) * HAK_SIZEOF(hak_uch_t)));
|
||||
if (HAK_UNLIKELY(!ptr)) return HAK_NULL;
|
||||
|
||||
inlen = bcslen;
|
||||
|
||||
ptr = (hcl_uch_t*)((hcl_oob_t*)ptr + headroom_bytes);
|
||||
hcl_convbtouchars (hcl, bcs, &inlen, ptr, &outlen);
|
||||
ptr = (hak_uch_t*)((hak_oob_t*)ptr + headroom_bytes);
|
||||
hak_convbtouchars (hak, bcs, &inlen, ptr, &outlen);
|
||||
|
||||
/* hcl_convbtouchars() doesn't null-terminate the target.
|
||||
* but in hcl_dupbtouchars(), i allocate space. so i don't mind
|
||||
/* hak_convbtouchars() doesn't null-terminate the target.
|
||||
* but in hak_dupbtouchars(), i allocate space. so i don't mind
|
||||
* null-terminating it with 1 extra character overhead */
|
||||
ptr[outlen] = '\0';
|
||||
if (ucslen) *ucslen = outlen;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
hcl_uch_t* hcl_dupbtouchars (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t bcslen, hcl_oow_t* ucslen)
|
||||
hak_uch_t* hak_dupbtouchars (hak_t* hak, const hak_bch_t* bcs, hak_oow_t bcslen, hak_oow_t* ucslen)
|
||||
{
|
||||
return hcl_dupbtoucharswithheadroom (hcl, 0, bcs, bcslen, ucslen);
|
||||
return hak_dupbtoucharswithheadroom (hak, 0, bcs, bcslen, ucslen);
|
||||
}
|
||||
|
||||
hcl_bch_t* hcl_duputobcharswithheadroom (hcl_t* hcl, hcl_oow_t headroom_bytes, const hcl_uch_t* ucs, hcl_oow_t ucslen, hcl_oow_t* bcslen)
|
||||
hak_bch_t* hak_duputobcharswithheadroom (hak_t* hak, hak_oow_t headroom_bytes, const hak_uch_t* ucs, hak_oow_t ucslen, hak_oow_t* bcslen)
|
||||
{
|
||||
hcl_oow_t inlen, outlen;
|
||||
hcl_bch_t* ptr;
|
||||
hak_oow_t inlen, outlen;
|
||||
hak_bch_t* ptr;
|
||||
|
||||
inlen = ucslen;
|
||||
if (hcl_convutobchars(hcl, ucs, &inlen, HCL_NULL, &outlen) <= -1)
|
||||
if (hak_convutobchars(hak, ucs, &inlen, HAK_NULL, &outlen) <= -1)
|
||||
{
|
||||
/* note it's also an error if no full conversion is made in this function */
|
||||
return HCL_NULL;
|
||||
return HAK_NULL;
|
||||
}
|
||||
|
||||
ptr = (hcl_bch_t*)hcl_allocmem(hcl, headroom_bytes + ((outlen + 1) * HCL_SIZEOF(hcl_bch_t)));
|
||||
if (HCL_UNLIKELY(!ptr)) return HCL_NULL;
|
||||
ptr = (hak_bch_t*)hak_allocmem(hak, headroom_bytes + ((outlen + 1) * HAK_SIZEOF(hak_bch_t)));
|
||||
if (HAK_UNLIKELY(!ptr)) return HAK_NULL;
|
||||
|
||||
inlen = ucslen;
|
||||
ptr = (hcl_bch_t*)((hcl_oob_t*)ptr + headroom_bytes);
|
||||
hcl_convutobchars (hcl, ucs, &inlen, ptr, &outlen);
|
||||
ptr = (hak_bch_t*)((hak_oob_t*)ptr + headroom_bytes);
|
||||
hak_convutobchars (hak, ucs, &inlen, ptr, &outlen);
|
||||
|
||||
ptr[outlen] = '\0';
|
||||
if (bcslen) *bcslen = outlen;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
hcl_bch_t* hcl_duputobchars (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t ucslen, hcl_oow_t* bcslen)
|
||||
hak_bch_t* hak_duputobchars (hak_t* hak, const hak_uch_t* ucs, hak_oow_t ucslen, hak_oow_t* bcslen)
|
||||
{
|
||||
return hcl_duputobcharswithheadroom (hcl, 0, ucs, ucslen, bcslen);
|
||||
return hak_duputobcharswithheadroom (hak, 0, ucs, ucslen, bcslen);
|
||||
}
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
hcl_uch_t* hcl_dupbtoucstrwithheadroom (hcl_t* hcl, hcl_oow_t headroom_bytes, const hcl_bch_t* bcs, hcl_oow_t* ucslen)
|
||||
hak_uch_t* hak_dupbtoucstrwithheadroom (hak_t* hak, hak_oow_t headroom_bytes, const hak_bch_t* bcs, hak_oow_t* ucslen)
|
||||
{
|
||||
hcl_oow_t inlen, outlen;
|
||||
hcl_uch_t* ptr;
|
||||
hak_oow_t inlen, outlen;
|
||||
hak_uch_t* ptr;
|
||||
|
||||
if (hcl_convbtoucstr(hcl, bcs, &inlen, HCL_NULL, &outlen) <= -1)
|
||||
if (hak_convbtoucstr(hak, bcs, &inlen, HAK_NULL, &outlen) <= -1)
|
||||
{
|
||||
/* note it's also an error if no full conversion is made in this function */
|
||||
return HCL_NULL;
|
||||
return HAK_NULL;
|
||||
}
|
||||
|
||||
outlen++;
|
||||
ptr = (hcl_uch_t*)hcl_allocmem(hcl, headroom_bytes + (outlen * HCL_SIZEOF(hcl_uch_t)));
|
||||
if (HCL_UNLIKELY(!ptr)) return HCL_NULL;
|
||||
ptr = (hak_uch_t*)hak_allocmem(hak, headroom_bytes + (outlen * HAK_SIZEOF(hak_uch_t)));
|
||||
if (HAK_UNLIKELY(!ptr)) return HAK_NULL;
|
||||
|
||||
hcl_convbtoucstr (hcl, bcs, &inlen, ptr, &outlen);
|
||||
hak_convbtoucstr (hak, bcs, &inlen, ptr, &outlen);
|
||||
if (ucslen) *ucslen = outlen;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
hcl_uch_t* hcl_dupbtoucstr (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* ucslen)
|
||||
hak_uch_t* hak_dupbtoucstr (hak_t* hak, const hak_bch_t* bcs, hak_oow_t* ucslen)
|
||||
{
|
||||
return hcl_dupbtoucstrwithheadroom (hcl, 0, bcs, ucslen);
|
||||
return hak_dupbtoucstrwithheadroom (hak, 0, bcs, ucslen);
|
||||
}
|
||||
|
||||
hcl_bch_t* hcl_duputobcstrwithheadroom (hcl_t* hcl, hcl_oow_t headroom_bytes, const hcl_uch_t* ucs, hcl_oow_t* bcslen)
|
||||
hak_bch_t* hak_duputobcstrwithheadroom (hak_t* hak, hak_oow_t headroom_bytes, const hak_uch_t* ucs, hak_oow_t* bcslen)
|
||||
{
|
||||
hcl_oow_t inlen, outlen;
|
||||
hcl_bch_t* ptr;
|
||||
hak_oow_t inlen, outlen;
|
||||
hak_bch_t* ptr;
|
||||
|
||||
if (hcl_convutobcstr (hcl, ucs, &inlen, HCL_NULL, &outlen) <= -1)
|
||||
if (hak_convutobcstr (hak, ucs, &inlen, HAK_NULL, &outlen) <= -1)
|
||||
{
|
||||
/* note it's also an error if no full conversion is made in this function */
|
||||
return HCL_NULL;
|
||||
return HAK_NULL;
|
||||
}
|
||||
|
||||
outlen++;
|
||||
ptr = (hcl_bch_t*)hcl_allocmem(hcl, headroom_bytes + (outlen * HCL_SIZEOF(hcl_bch_t)));
|
||||
if (HCL_UNLIKELY(!ptr)) return HCL_NULL;
|
||||
ptr = (hak_bch_t*)hak_allocmem(hak, headroom_bytes + (outlen * HAK_SIZEOF(hak_bch_t)));
|
||||
if (HAK_UNLIKELY(!ptr)) return HAK_NULL;
|
||||
|
||||
ptr = (hcl_bch_t*)((hcl_oob_t*)ptr + headroom_bytes);
|
||||
ptr = (hak_bch_t*)((hak_oob_t*)ptr + headroom_bytes);
|
||||
|
||||
hcl_convutobcstr (hcl, ucs, &inlen, ptr, &outlen);
|
||||
hak_convutobcstr (hak, ucs, &inlen, ptr, &outlen);
|
||||
if (bcslen) *bcslen = outlen;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
hcl_bch_t* hcl_duputobcstr (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* bcslen)
|
||||
hak_bch_t* hak_duputobcstr (hak_t* hak, const hak_uch_t* ucs, hak_oow_t* bcslen)
|
||||
{
|
||||
return hcl_duputobcstrwithheadroom (hcl, 0, ucs, bcslen);
|
||||
return hak_duputobcstrwithheadroom (hak, 0, ucs, bcslen);
|
||||
}
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
hcl_uch_t* hcl_dupuchars (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t ucslen)
|
||||
hak_uch_t* hak_dupuchars (hak_t* hak, const hak_uch_t* ucs, hak_oow_t ucslen)
|
||||
{
|
||||
hcl_uch_t* ptr;
|
||||
hak_uch_t* ptr;
|
||||
|
||||
ptr = (hcl_uch_t*)hcl_allocmem(hcl, (ucslen + 1) * HCL_SIZEOF(hcl_uch_t));
|
||||
if (HCL_UNLIKELY(!ptr)) return HCL_NULL;
|
||||
ptr = (hak_uch_t*)hak_allocmem(hak, (ucslen + 1) * HAK_SIZEOF(hak_uch_t));
|
||||
if (HAK_UNLIKELY(!ptr)) return HAK_NULL;
|
||||
|
||||
hcl_copy_uchars (ptr, ucs, ucslen);
|
||||
hak_copy_uchars (ptr, ucs, ucslen);
|
||||
ptr[ucslen] = '\0';
|
||||
return ptr;
|
||||
}
|
||||
|
||||
hcl_bch_t* hcl_dupbchars (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t bcslen)
|
||||
hak_bch_t* hak_dupbchars (hak_t* hak, const hak_bch_t* bcs, hak_oow_t bcslen)
|
||||
{
|
||||
hcl_bch_t* ptr;
|
||||
hak_bch_t* ptr;
|
||||
|
||||
ptr = (hcl_bch_t*)hcl_allocmem(hcl, (bcslen + 1) * HCL_SIZEOF(hcl_bch_t));
|
||||
if (HCL_UNLIKELY(!ptr)) return HCL_NULL;
|
||||
ptr = (hak_bch_t*)hak_allocmem(hak, (bcslen + 1) * HAK_SIZEOF(hak_bch_t));
|
||||
if (HAK_UNLIKELY(!ptr)) return HAK_NULL;
|
||||
|
||||
hcl_copy_bchars (ptr, bcs, bcslen);
|
||||
hak_copy_bchars (ptr, bcs, bcslen);
|
||||
ptr[bcslen] = '\0';
|
||||
return ptr;
|
||||
}
|
||||
|
||||
hcl_uch_t* hcl_dupucstr (hcl_t* hcl, const hcl_uch_t* ucs, hcl_oow_t* ucslen)
|
||||
hak_uch_t* hak_dupucstr (hak_t* hak, const hak_uch_t* ucs, hak_oow_t* ucslen)
|
||||
{
|
||||
hcl_oow_t len;
|
||||
hcl_uch_t* ptr;
|
||||
hak_oow_t len;
|
||||
hak_uch_t* ptr;
|
||||
|
||||
len = hcl_count_ucstr(ucs);
|
||||
ptr = hcl_dupuchars(hcl, ucs, len);
|
||||
if (HCL_UNLIKELY(!ptr)) return HCL_NULL;
|
||||
len = hak_count_ucstr(ucs);
|
||||
ptr = hak_dupuchars(hak, ucs, len);
|
||||
if (HAK_UNLIKELY(!ptr)) return HAK_NULL;
|
||||
|
||||
if (ucslen) *ucslen = len;
|
||||
return ptr;
|
||||
}
|
||||
|
||||
hcl_bch_t* hcl_dupbcstr (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* bcslen)
|
||||
hak_bch_t* hak_dupbcstr (hak_t* hak, const hak_bch_t* bcs, hak_oow_t* bcslen)
|
||||
{
|
||||
hcl_oow_t len;
|
||||
hcl_bch_t* ptr;
|
||||
hak_oow_t len;
|
||||
hak_bch_t* ptr;
|
||||
|
||||
len = hcl_count_bcstr(bcs);
|
||||
ptr = hcl_dupbchars(hcl, bcs, len);
|
||||
if (HCL_UNLIKELY(!ptr)) return HCL_NULL;
|
||||
len = hak_count_bcstr(bcs);
|
||||
ptr = hak_dupbchars(hak, bcs, len);
|
||||
if (HAK_UNLIKELY(!ptr)) return HAK_NULL;
|
||||
|
||||
if (bcslen) *bcslen = len;
|
||||
return ptr;
|
||||
@ -279,19 +279,19 @@ hcl_bch_t* hcl_dupbcstr (hcl_t* hcl, const hcl_bch_t* bcs, hcl_oow_t* bcslen)
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
void hcl_add_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y)
|
||||
void hak_add_ntime (hak_ntime_t* z, const hak_ntime_t* x, const hak_ntime_t* y)
|
||||
{
|
||||
hcl_ntime_sec_t xs, ys;
|
||||
hcl_ntime_nsec_t ns;
|
||||
hak_ntime_sec_t xs, ys;
|
||||
hak_ntime_nsec_t ns;
|
||||
|
||||
/*HCL_ASSERT (x->nsec >= 0 && x->nsec < HCL_NSECS_PER_SEC);
|
||||
HCL_ASSERT (y->nsec >= 0 && y->nsec < HCL_NSECS_PER_SEC);*/
|
||||
/*HAK_ASSERT (x->nsec >= 0 && x->nsec < HAK_NSECS_PER_SEC);
|
||||
HAK_ASSERT (y->nsec >= 0 && y->nsec < HAK_NSECS_PER_SEC);*/
|
||||
|
||||
ns = x->nsec + y->nsec;
|
||||
if (ns >= HCL_NSECS_PER_SEC)
|
||||
if (ns >= HAK_NSECS_PER_SEC)
|
||||
{
|
||||
ns = ns - HCL_NSECS_PER_SEC;
|
||||
if (x->sec == HCL_TYPE_MAX(hcl_ntime_sec_t))
|
||||
ns = ns - HAK_NSECS_PER_SEC;
|
||||
if (x->sec == HAK_TYPE_MAX(hak_ntime_sec_t))
|
||||
{
|
||||
if (y->sec >= 0) goto overflow;
|
||||
xs = x->sec;
|
||||
@ -309,18 +309,18 @@ void hcl_add_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y)
|
||||
ys = y->sec;
|
||||
}
|
||||
|
||||
if ((ys >= 1 && xs > HCL_TYPE_MAX(hcl_ntime_sec_t) - ys) ||
|
||||
(ys <= -1 && xs < HCL_TYPE_MIN(hcl_ntime_sec_t) - ys))
|
||||
if ((ys >= 1 && xs > HAK_TYPE_MAX(hak_ntime_sec_t) - ys) ||
|
||||
(ys <= -1 && xs < HAK_TYPE_MIN(hak_ntime_sec_t) - ys))
|
||||
{
|
||||
if (xs >= 0)
|
||||
{
|
||||
overflow:
|
||||
xs = HCL_TYPE_MAX(hcl_ntime_sec_t);
|
||||
ns = HCL_NSECS_PER_SEC - 1;
|
||||
xs = HAK_TYPE_MAX(hak_ntime_sec_t);
|
||||
ns = HAK_NSECS_PER_SEC - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
xs = HCL_TYPE_MIN(hcl_ntime_sec_t);
|
||||
xs = HAK_TYPE_MIN(hak_ntime_sec_t);
|
||||
ns = 0;
|
||||
}
|
||||
}
|
||||
@ -333,19 +333,19 @@ void hcl_add_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y)
|
||||
z->nsec = ns;
|
||||
}
|
||||
|
||||
void hcl_sub_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y)
|
||||
void hak_sub_ntime (hak_ntime_t* z, const hak_ntime_t* x, const hak_ntime_t* y)
|
||||
{
|
||||
hcl_ntime_sec_t xs, ys;
|
||||
hcl_ntime_nsec_t ns;
|
||||
hak_ntime_sec_t xs, ys;
|
||||
hak_ntime_nsec_t ns;
|
||||
|
||||
/*HCL_ASSERT (x->nsec >= 0 && x->nsec < HCL_NSECS_PER_SEC);
|
||||
HCL_ASSERT (y->nsec >= 0 && y->nsec < HCL_NSECS_PER_SEC);*/
|
||||
/*HAK_ASSERT (x->nsec >= 0 && x->nsec < HAK_NSECS_PER_SEC);
|
||||
HAK_ASSERT (y->nsec >= 0 && y->nsec < HAK_NSECS_PER_SEC);*/
|
||||
|
||||
ns = x->nsec - y->nsec;
|
||||
if (ns < 0)
|
||||
{
|
||||
ns = ns + HCL_NSECS_PER_SEC;
|
||||
if (x->sec == HCL_TYPE_MIN(hcl_ntime_sec_t))
|
||||
ns = ns + HAK_NSECS_PER_SEC;
|
||||
if (x->sec == HAK_TYPE_MIN(hak_ntime_sec_t))
|
||||
{
|
||||
if (y->sec <= 0) goto underflow;
|
||||
xs = x->sec;
|
||||
@ -363,18 +363,18 @@ void hcl_sub_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y)
|
||||
ys = y->sec;
|
||||
}
|
||||
|
||||
if ((ys >= 1 && xs < HCL_TYPE_MIN(hcl_ntime_sec_t) + ys) ||
|
||||
(ys <= -1 && xs > HCL_TYPE_MAX(hcl_ntime_sec_t) + ys))
|
||||
if ((ys >= 1 && xs < HAK_TYPE_MIN(hak_ntime_sec_t) + ys) ||
|
||||
(ys <= -1 && xs > HAK_TYPE_MAX(hak_ntime_sec_t) + ys))
|
||||
{
|
||||
if (xs >= 0)
|
||||
{
|
||||
xs = HCL_TYPE_MAX(hcl_ntime_sec_t);
|
||||
ns = HCL_NSECS_PER_SEC - 1;
|
||||
xs = HAK_TYPE_MAX(hak_ntime_sec_t);
|
||||
ns = HAK_NSECS_PER_SEC - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
underflow:
|
||||
xs = HCL_TYPE_MIN(hcl_ntime_sec_t);
|
||||
xs = HAK_TYPE_MIN(hak_ntime_sec_t);
|
||||
ns = 0;
|
||||
}
|
||||
}
|
||||
@ -389,26 +389,26 @@ void hcl_sub_ntime (hcl_ntime_t* z, const hcl_ntime_t* x, const hcl_ntime_t* y)
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
|
||||
const hcl_bch_t* hcl_get_base_name_from_bcstr_path (const hcl_bch_t* path)
|
||||
const hak_bch_t* hak_get_base_name_from_bcstr_path (const hak_bch_t* path)
|
||||
{
|
||||
const hcl_bch_t* p, * last = HCL_NULL;
|
||||
const hak_bch_t* p, * last = HAK_NULL;
|
||||
|
||||
for (p = path; *p != '\0'; p++)
|
||||
{
|
||||
if (HCL_IS_PATH_SEP(*p)) last = p;
|
||||
if (HAK_IS_PATH_SEP(*p)) last = p;
|
||||
}
|
||||
|
||||
return (last == HCL_NULL)? path: (last + 1);
|
||||
return (last == HAK_NULL)? path: (last + 1);
|
||||
}
|
||||
|
||||
const hcl_uch_t* hcl_get_base_name_from_ucstr_path (const hcl_uch_t* path)
|
||||
const hak_uch_t* hak_get_base_name_from_ucstr_path (const hak_uch_t* path)
|
||||
{
|
||||
const hcl_uch_t* p, * last = HCL_NULL;
|
||||
const hak_uch_t* p, * last = HAK_NULL;
|
||||
|
||||
for (p = path; *p != '\0'; p++)
|
||||
{
|
||||
if (HCL_IS_PATH_SEP(*p)) last = p;
|
||||
if (HAK_IS_PATH_SEP(*p)) last = p;
|
||||
}
|
||||
|
||||
return (last == HCL_NULL)? path: (last + 1);
|
||||
return (last == HAK_NULL)? path: (last + 1);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user