added vmprim.assertfail to replace moo_assertfailed() which contains system dependent code

This commit is contained in:
hyunghwan.chung
2018-11-03 11:03:17 +00:00
parent eac1febfad
commit 8ddc835503
3 changed files with 143 additions and 157 deletions

View File

@ -1085,6 +1085,13 @@ typedef moo_errnum_t (*moo_syserrstru_t) (
moo_oow_t len
);
typedef void (*moo_assertfail_t) (
moo_t* moo,
const moo_bch_t* expr,
const moo_bch_t* file,
moo_oow_t line
);
enum moo_vmprim_dlopen_flag_t
{
MOO_VMPRIM_DLOPEN_PFMOD = (1 << 0)
@ -1163,6 +1170,7 @@ struct moo_vmprim_t
moo_log_write_t log_write;
moo_syserrstrb_t syserrstrb;
moo_syserrstru_t syserrstru;
moo_assertfail_t assertfail;
moo_vmprim_dlopen_t dl_open;
moo_vmprim_dlclose_t dl_close;
@ -1626,7 +1634,7 @@ struct moo_t
#if defined(MOO_BUILD_RELEASE)
# define MOO_ASSERT(moo,expr) ((void)0)
#else
# define MOO_ASSERT(moo,expr) ((void)((expr) || (moo_assertfailed (moo, #expr, __FILE__, __LINE__), 0)))
# define MOO_ASSERT(moo,expr) ((void)((expr) || ((moo)->vmprim.assertfail(moo, #expr, __FILE__, __LINE__), 0)))
#endif
@ -2288,13 +2296,6 @@ MOO_EXPORT int moo_decode (
const moo_oocs_t* classfqn
);
MOO_EXPORT void moo_assertfailed (
moo_t* moo,
const moo_bch_t* expr,
const moo_bch_t* file,
moo_oow_t line
);
MOO_EXPORT const moo_ooch_t* moo_errnum_to_errstr (
moo_errnum_t errnum
);