added the _instsize field to mio_t and revised mio_getxtn() using the new field

This commit is contained in:
hyung-hwan 2019-06-21 12:43:50 +00:00
parent 86c1d9ebe6
commit 6d357fe1fe
5 changed files with 27 additions and 25 deletions

View File

@ -117,7 +117,7 @@ static int err_bcs (mio_fmtout_t* fmtout, const mio_bch_t* ptr, mio_oow_t len)
#if defined(MIO_OOCH_IS_UCH) #if defined(MIO_OOCH_IS_UCH)
if (max <= 0) return 1; if (max <= 0) return 1;
mio_conv_bchars_to_uchars_with_cmgr (ptr, &len, &mio->errmsg.buf[mio->errmsg.len], &max, mio->cmgr, 1); mio_conv_bchars_to_uchars_with_cmgr (ptr, &len, &mio->errmsg.buf[mio->errmsg.len], &max, mio_getcmgr(mio), 1);
mio->errmsg.len += max; mio->errmsg.len += max;
#else #else
if (len > max) len = max; if (len > max) len = max;
@ -145,7 +145,7 @@ static int err_ucs (mio_fmtout_t* fmtout, const mio_uch_t* ptr, mio_oow_t len)
mio->errmsg.len += len; mio->errmsg.len += len;
#else #else
if (max <= 0) return 1; if (max <= 0) return 1;
mio_conv_uchars_to_bchars_with_cmgr (ptr, &len, &mio->errmsg.buf[mio->errmsg.len], &max, mio->cmgr); mio_conv_uchars_to_bchars_with_cmgr (ptr, &len, &mio->errmsg.buf[mio->errmsg.len], &max, mio_getcmgr(mio));
mio->errmsg.len += max; mio->errmsg.len += max;
#endif #endif
mio->errmsg.buf[mio->errmsg.len] = '\0'; mio->errmsg.buf[mio->errmsg.len] = '\0';

View File

@ -1478,7 +1478,7 @@ static int log_ucs (mio_fmtout_t* fmtout, const mio_uch_t* ptr, mio_oow_t len)
{ {
len = rem; len = rem;
bcslen = MIO_COUNTOF(bcs); bcslen = MIO_COUNTOF(bcs);
mio_conv_uchars_to_bchars_with_cmgr(ptr, &len, bcs, &bcslen, mio->cmgr); mio_conv_uchars_to_bchars_with_cmgr(ptr, &len, bcs, &bcslen, mio_getcmgr(mio));
log_bcs(fmtout, bcs, bcslen); log_bcs(fmtout, bcs, bcslen);
rem -= len; rem -= len;
ptr += len; ptr += len;
@ -1502,7 +1502,7 @@ static int log_bcs (mio_fmtout_t* fmtout, const mio_bch_t* ptr, mio_oow_t len)
{ {
len = rem; len = rem;
ucslen = MIO_COUNTOF(ucs); ucslen = MIO_COUNTOF(ucs);
mio_conv_bchars_to_uchars_with_cmgr(ptr, &len, ucs, &ucslen, mio->cmgr, 1); mio_conv_bchars_to_uchars_with_cmgr(ptr, &len, ucs, &ucslen, mio_getcmgr(mio), 1);
log_ucs(fmtout, ucs, ucslen); log_ucs(fmtout, ucs, ucslen);
rem -= len; rem -= len;
ptr += len; ptr += len;

View File

@ -84,7 +84,7 @@ mio_t* mio_open (mio_mmgr_t* mmgr, mio_oow_t xtnsize, mio_cmgr_t* cmgr, mio_oow_
void mio_close (mio_t* mio) void mio_close (mio_t* mio)
{ {
mio_fini (mio); mio_fini (mio);
MIO_MMGR_FREE (mio->mmgr, mio); MIO_MMGR_FREE (mio->_mmgr, mio);
} }
int mio_init (mio_t* mio, mio_mmgr_t* mmgr, mio_cmgr_t* cmgr, mio_oow_t tmrcapa) int mio_init (mio_t* mio, mio_mmgr_t* mmgr, mio_cmgr_t* cmgr, mio_oow_t tmrcapa)
@ -92,8 +92,9 @@ int mio_init (mio_t* mio, mio_mmgr_t* mmgr, mio_cmgr_t* cmgr, mio_oow_t tmrcapa)
int sys_inited = 0; int sys_inited = 0;
MIO_MEMSET (mio, 0, MIO_SIZEOF(*mio)); MIO_MEMSET (mio, 0, MIO_SIZEOF(*mio));
mio->mmgr = mmgr; mio->_instsize = MIO_SIZEOF(*mio);
mio->cmgr = cmgr; mio->_mmgr = mmgr;
mio->_cmgr = cmgr;
/* initialize data for logging support */ /* initialize data for logging support */
mio->option.log_mask = MIO_LOG_ALL_LEVELS | MIO_LOG_ALL_TYPES; mio->option.log_mask = MIO_LOG_ALL_LEVELS | MIO_LOG_ALL_TYPES;
@ -1299,7 +1300,7 @@ void mio_gettime (mio_t* mio, mio_ntime_t* now)
void* mio_allocmem (mio_t* mio, mio_oow_t size) void* mio_allocmem (mio_t* mio, mio_oow_t size)
{ {
void* ptr; void* ptr;
ptr = MIO_MMGR_ALLOC (mio->mmgr, size); ptr = MIO_MMGR_ALLOC (mio->_mmgr, size);
if (!ptr) mio_seterrnum (mio, MIO_ESYSMEM); if (!ptr) mio_seterrnum (mio, MIO_ESYSMEM);
return ptr; return ptr;
} }
@ -1307,7 +1308,7 @@ void* mio_allocmem (mio_t* mio, mio_oow_t size)
void* mio_callocmem (mio_t* mio, mio_oow_t size) void* mio_callocmem (mio_t* mio, mio_oow_t size)
{ {
void* ptr; void* ptr;
ptr = MIO_MMGR_ALLOC (mio->mmgr, size); ptr = MIO_MMGR_ALLOC (mio->_mmgr, size);
if (!ptr) mio_seterrnum (mio, MIO_ESYSMEM); if (!ptr) mio_seterrnum (mio, MIO_ESYSMEM);
else MIO_MEMSET (ptr, 0, size); else MIO_MEMSET (ptr, 0, size);
return ptr; return ptr;
@ -1315,12 +1316,12 @@ void* mio_callocmem (mio_t* mio, mio_oow_t size)
void* mio_reallocmem (mio_t* mio, void* ptr, mio_oow_t size) void* mio_reallocmem (mio_t* mio, void* ptr, mio_oow_t size)
{ {
ptr = MIO_MMGR_REALLOC (mio->mmgr, ptr, size); ptr = MIO_MMGR_REALLOC (mio->_mmgr, ptr, size);
if (!ptr) mio_seterrnum (mio, MIO_ESYSMEM); if (!ptr) mio_seterrnum (mio, MIO_ESYSMEM);
return ptr; return ptr;
} }
void mio_freemem (mio_t* mio, void* ptr) void mio_freemem (mio_t* mio, void* ptr)
{ {
MIO_MMGR_FREE (mio->mmgr, ptr); MIO_MMGR_FREE (mio->_mmgr, ptr);
} }

View File

@ -510,8 +510,9 @@ typedef struct mio_sys_t mio_sys_t;
struct mio_t struct mio_t
{ {
mio_mmgr_t* mmgr; mio_oow_t _instsize;
mio_cmgr_t* cmgr; mio_mmgr_t* _mmgr;
mio_cmgr_t* _cmgr;
mio_errnum_t errnum; mio_errnum_t errnum;
struct struct
{ {
@ -638,19 +639,19 @@ MIO_EXPORT int mio_setoption (
); );
#if defined(MIO_HAVE_INLINE) #if defined(MIO_HAVE_INLINE)
static MIO_INLINE mio_mmgr_t* mio_getmmgr (mio_t* mio) { return mio->mmgr; } static MIO_INLINE mio_mmgr_t* mio_getmmgr (mio_t* mio) { return mio->_mmgr; }
static MIO_INLINE void* mio_getxtn (mio_t* mio) { return (void*)(mio + 1); } static MIO_INLINE void* mio_getxtn (mio_t* mio) { return (void*)((mio_uint8_t*)mio + mio->_instsize); }
static MIO_INLINE mio_cmgr_t* mio_getcmgr (mio_t* mio) { return mio->cmgr; } static MIO_INLINE mio_cmgr_t* mio_getcmgr (mio_t* mio) { return mio->_cmgr; }
static MIO_INLINE void mio_setcmgr (mio_t* mio, mio_cmgr_t* cmgr) { mio->cmgr = cmgr; } static MIO_INLINE void mio_setcmgr (mio_t* mio, mio_cmgr_t* cmgr) { mio->_cmgr = cmgr; }
static MIO_INLINE mio_errnum_t mio_geterrnum (mio_t* mio) { return mio->errnum; } static MIO_INLINE mio_errnum_t mio_geterrnum (mio_t* mio) { return mio->errnum; }
#else #else
# define mio_getmmgr(mio) (((mio_t*)(mio))->mmgr) # define mio_getmmgr(mio) (((mio_t*)(mio))->_mmgr)
# define mio_getxtn(mio) ((void*)((mio_t*)(mio) + 1)) # define mio_getxtn(mio) ((void*)((mio_uint8_t*)mio + ((mio_t*)mio)->_instsize))
# define mio_getcmgr(mio) (((mio_t*)(mio))->cmgr) # define mio_getcmgr(mio) (((mio_t*)(mio))->_cmgr)
# define mio_setcmgr(mio,mgr) (((mio_t*)(mio))->cmgr = (mgr)) # define mio_setcmgr(mio,cmgr) (((mio_t*)(mio))->_cmgr = (cmgr))
# define mio_geterrnum(mio) (((mio_t*)(mio))->errnum) # define mio_geterrnum(mio) (((mio_t*)(mio))->errnum)
#endif #endif

View File

@ -1030,7 +1030,7 @@ int mio_convbtouchars (mio_t* mio, const mio_bch_t* bcs, mio_oow_t* bcslen, mio_
/* length bound */ /* length bound */
int n; int n;
n = mio_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, mio->cmgr, 0); n = mio_conv_bchars_to_uchars_with_cmgr(bcs, bcslen, ucs, ucslen, mio_getcmgr(mio), 0);
if (n <= -1) if (n <= -1)
{ {
@ -1046,7 +1046,7 @@ int mio_convutobchars (mio_t* mio, const mio_uch_t* ucs, mio_oow_t* ucslen, mio_
/* length bound */ /* length bound */
int n; int n;
n = mio_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, mio->cmgr); n = mio_conv_uchars_to_bchars_with_cmgr(ucs, ucslen, bcs, bcslen, mio_getcmgr(mio));
if (n <= -1) if (n <= -1)
{ {
@ -1061,7 +1061,7 @@ int mio_convbtoucstr (mio_t* mio, const mio_bch_t* bcs, mio_oow_t* bcslen, mio_u
/* null-terminated. */ /* null-terminated. */
int n; int n;
n = mio_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, mio->cmgr, 0); n = mio_conv_bcstr_to_ucstr_with_cmgr(bcs, bcslen, ucs, ucslen, mio_getcmgr(mio), 0);
if (n <= -1) if (n <= -1)
{ {
@ -1076,7 +1076,7 @@ int mio_convutobcstr (mio_t* mio, const mio_uch_t* ucs, mio_oow_t* ucslen, mio_b
/* null-terminated */ /* null-terminated */
int n; int n;
n = mio_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, mio->cmgr); n = mio_conv_ucstr_to_bcstr_with_cmgr(ucs, ucslen, bcs, bcslen, mio_getcmgr(mio));
if (n <= -1) if (n <= -1)
{ {