diff --git a/hawk/lib/Hawk.cpp b/hawk/lib/Hawk.cpp index f1d53c5b..d6cf468f 100644 --- a/hawk/lib/Hawk.cpp +++ b/hawk/lib/Hawk.cpp @@ -1338,13 +1338,15 @@ Hawk::Hawk (Mmgr* mmgr): { HAWK_MEMSET (&errinf, 0, HAWK_SIZEOF(errinf)); errinf.num = HAWK_ENOERR; + + this->_cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8); } const hawk_ooch_t* Hawk::getErrorString (hawk_errnum_t num) const { HAWK_ASSERT (awk != HAWK_NULL); HAWK_ASSERT (this->dflerrstr != HAWK_NULL); - return this->dflerrstr(this->hawk, num); + return this->dflerrstr(num); } const hawk_ooch_t* Hawk::xerrstr (hawk_t* a, hawk_errnum_t num) @@ -1376,7 +1378,7 @@ const hawk_uch_t* Hawk::getErrorLocationFileU () const if (!this->errinf.loc.file) return HAWK_NULL; hawk_oow_t wcslen, mbslen; wcslen = HAWK_COUNTOF(this->xerrlocfile); - hawk_conv_bcstr_to_ucstr_with_cmgr (this->errinf.loc.file, &mbslen, hawk->xerrlocfile, &wcslen, hawk_getcmgr(this->hawk), 1); + hawk_conv_bcstr_to_ucstr_with_cmgr (this->errinf.loc.file, &mbslen, hawk->xerrlocfile, &wcslen, this->getCmgr(), 1); return hawk->xerrlocfile; #endif } @@ -1387,7 +1389,7 @@ const hawk_bch_t* Hawk::getErrorLocationFileB () const if (!this->errinf.loc.file) return HAWK_NULL; hawk_oow_t wcslen, mbslen; mbslen = HAWK_COUNTOF(this->xerrlocfile); - hawk_conv_ucstr_to_bcstr_with_cmgr (this->errinf.loc.file, &wcslen, this->xerrlocfile, &mbslen, hawk_getcmgr(this->hawk)); + hawk_conv_ucstr_to_bcstr_with_cmgr (this->errinf.loc.file, &wcslen, this->xerrlocfile, &mbslen, this->getCmgr()); return this->xerrlocfile; #else return this->errinf.loc.file; @@ -1406,7 +1408,7 @@ const hawk_uch_t* Hawk::getErrorMessageU () const #else hawk_oow_t wcslen, mbslen; wcslen = HAWK_COUNTOF(this->xerrmsg); - hawk_conv_bcstr_to_ucstr_with_cmgr (this->errinf.msg, &mbslen, this->xerrmsg, &wcslen, hawk_getcmgr(this->hawk), 1); + hawk_conv_bcstr_to_ucstr_with_cmgr (this->errinf.msg, &mbslen, this->xerrmsg, &wcslen, this->getCmgr(), 1); return this->xerrmsg; #endif } @@ -1416,7 +1418,7 @@ const hawk_bch_t* Hawk::getErrorMessageB () const #if defined(HAWK_OOCH_IS_UCH) hawk_oow_t wcslen, mbslen; mbslen = HAWK_COUNTOF(this->xerrmsg); - hawk_conv_ucstr_to_bcstr_with_cmgr (this->errinf.msg, &wcslen, this->xerrmsg, &mbslen, hawk_getcmgr(this->hawk)); + hawk_conv_ucstr_to_bcstr_with_cmgr (this->errinf.msg, &wcslen, this->xerrmsg, &mbslen, this->getCmgr()); return this->xerrmsg; #else return this->errinf.msg; @@ -1435,7 +1437,7 @@ void Hawk::setError (hawk_errnum_t code, const hawk_loc_t* loc) HAWK_MEMSET (&this->errinf, 0, HAWK_SIZEOF(this->errinf)); this->errinf.num = code; if (loc != HAWK_NULL) this->errinf.loc = *loc; - hawk_copy_oocstr (this->errinf.msg, HAWK_COUNTOF(this->errinf.msg), HAWK_T("not ready to set an error message")); + hawk_copy_oocstr (this->errinf.msg, HAWK_COUNTOF(this->errinf.msg), hawk_dfl_errstr(code)); } } @@ -1454,7 +1456,7 @@ void Hawk::formatError (hawk_errnum_t code, const hawk_loc_t* loc, const hawk_bc HAWK_MEMSET (&this->errinf, 0, HAWK_SIZEOF(this->errinf)); this->errinf.num = code; if (loc != HAWK_NULL) this->errinf.loc = *loc; - hawk_copy_oocstr (this->errinf.msg, HAWK_COUNTOF(this->errinf.msg), HAWK_T("not ready to set an error message")); + hawk_copy_oocstr (this->errinf.msg, HAWK_COUNTOF(this->errinf.msg), hawk_dfl_errstr(code)); } } @@ -1531,7 +1533,7 @@ int Hawk::open () prm.modgetsym = Hawk::modgetsym; hawk_errnum_t errnum; - this->hawk = hawk_open(this->getMmgr(), HAWK_SIZEOF(xtn_t), hawk_get_cmgr_by_id(HAWK_CMGR_UTF8), &prm, &errnum); + this->hawk = hawk_open(this->getMmgr(), HAWK_SIZEOF(xtn_t), this->getCmgr(), &prm, &errnum); if (!this->hawk) { this->setError (errnum); @@ -1616,7 +1618,7 @@ void Hawk::close () hawk_cmgr_t* Hawk::getCmgr () const { - if (!this->hawk) return HAWK_NULL; + if (!this->hawk) return this->_cmgr; return hawk_getcmgr(this->hawk); } diff --git a/hawk/lib/Hawk.hpp b/hawk/lib/Hawk.hpp index 95fc1abe..73e7befd 100644 --- a/hawk/lib/Hawk.hpp +++ b/hawk/lib/Hawk.hpp @@ -1741,7 +1741,7 @@ protected: static void* modgetsym (hawk_t* awk, void* handle, const hawk_ooch_t* name); public: - // use this with care + // use these with care hawk_t* getHandle() const { return this->hawk; } protected: @@ -1797,6 +1797,7 @@ protected: xstrs_t runarg; private: + hawk_cmgr_t* _cmgr; Run runctx; int init_runctx (); diff --git a/hawk/lib/HawkStd.hpp b/hawk/lib/HawkStd.hpp index 3da3cf5d..2c7b5724 100644 --- a/hawk/lib/HawkStd.hpp +++ b/hawk/lib/HawkStd.hpp @@ -125,7 +125,7 @@ public: const hawk_ooch_t* ptr; }; - HawkStd (Mmgr* mmgr = HAWK_NULL): Hawk(mmgr), stdmod_up(false), console_cmgr(HAWK_NULL) + HawkStd (Mmgr* mmgr = HAWK_NULL): Hawk(mmgr), cmgrtab_inited(false), stdmod_up(false), console_cmgr(HAWK_NULL) { } diff --git a/hawk/lib/err-prv.h b/hawk/lib/err-prv.h index 5cb8e039..3de0a193 100644 --- a/hawk/lib/err-prv.h +++ b/hawk/lib/err-prv.h @@ -31,7 +31,7 @@ extern "C" { #endif -const hawk_ooch_t* hawk_dflerrstr (hawk_t* awk, hawk_errnum_t errnum); +const hawk_ooch_t* hawk_dfl_errstr (hawk_errnum_t errnum); hawk_errnum_t hawk_syserr_to_errnum (hawk_intptr_t e); diff --git a/hawk/lib/err.c b/hawk/lib/err.c index 9e5dc14e..ac943e14 100644 --- a/hawk/lib/err.c +++ b/hawk/lib/err.c @@ -28,7 +28,7 @@ static hawk_loc_t _nullloc = { 0, 0, HAWK_NULL }; -const hawk_ooch_t* hawk_dflerrstr (hawk_t* awk, hawk_errnum_t errnum) +const hawk_ooch_t* hawk_dfl_errstr (hawk_errnum_t errnum) { static const hawk_ooch_t* errstr[] = { @@ -199,12 +199,12 @@ const hawk_loc_t* hawk_geterrloc (hawk_t* hawk) const hawk_bch_t* hawk_geterrbmsg (hawk_t* hawk) { #if defined(HAWK_OOCH_IS_BCH) - return (hawk->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk)(hawk, hawk->_gem.errnum): hawk->_gem.errmsg; + return (hawk->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk)(hawk->_gem.errnum): hawk->_gem.errmsg; #else const hawk_ooch_t* msg; hawk_oow_t wcslen, mbslen; - msg = (hawk->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk)(hawk, hawk->_gem.errnum): hawk->_gem.errmsg; + msg = (hawk->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk)(hawk->_gem.errnum): hawk->_gem.errmsg; mbslen = HAWK_COUNTOF(hawk->xerrmsg); hawk_conv_ucstr_to_bcstr_with_cmgr (msg, &wcslen, hawk->xerrmsg, &mbslen, hawk_getcmgr(hawk)); @@ -219,14 +219,14 @@ const hawk_uch_t* hawk_geterrumsg (hawk_t* hawk) const hawk_ooch_t* msg; hawk_oow_t wcslen, mbslen; - msg = (hawk->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk)(hawk, hawk->_gem.errnum): hawk->_gem.errmsg; + msg = (hawk->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk)(hawk->_gem.errnum): hawk->_gem.errmsg; wcslen = HAWK_COUNTOF(hawk->xerrmsg); hawk_conv_bcstr_to_ucstr_with_cmgr (msg, &mbslen, hawk->xerrmsg, &wcslen, hawk_getcmgr(hawk), 1); return hawk->xerrmsg; #else - return (hawk->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk)(hawk, hawk->_gem.errnum): hawk->_gem.errmsg; + return (hawk->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk)(hawk->_gem.errnum): hawk->_gem.errmsg; #endif } @@ -234,13 +234,13 @@ void hawk_geterrinf (hawk_t* hawk, hawk_errinf_t* errinf) { errinf->num = hawk->_gem.errnum; errinf->loc = hawk->_gem.errloc; - hawk_copy_oocstr (errinf->msg, HAWK_COUNTOF(errinf->msg), (hawk->_gem.errmsg[0] == '\0'? hawk_geterrstr(hawk)(hawk, hawk->_gem.errnum): hawk->_gem.errmsg)); + hawk_copy_oocstr (errinf->msg, HAWK_COUNTOF(errinf->msg), (hawk->_gem.errmsg[0] == '\0'? hawk_geterrstr(hawk)(hawk->_gem.errnum): hawk->_gem.errmsg)); } void hawk_geterror (hawk_t* hawk, hawk_errnum_t* errnum, const hawk_ooch_t** errmsg, hawk_loc_t* errloc) { if (errnum) *errnum = hawk->_gem.errnum; - if (errmsg) *errmsg = (hawk->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk)(hawk, hawk->_gem.errnum): hawk->_gem.errmsg; + if (errmsg) *errmsg = (hawk->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk)(hawk->_gem.errnum): hawk->_gem.errmsg; if (errloc) *errloc = hawk->_gem.errloc; } @@ -398,12 +398,12 @@ const hawk_loc_t* hawk_rtx_geterrloc (hawk_rtx_t* rtx) const hawk_bch_t* hawk_rtx_geterrbmsg (hawk_rtx_t* rtx) { #if defined(HAWK_OOCH_IS_BCH) - return (rtx->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk_rtx_gethawk(rtx))(hawk_rtx_gethawk(rtx), rtx->_gem.errnum): rtx->_gem.errmsg; + return (rtx->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk_rtx_gethawk(rtx))(rtx->_gem.errnum): rtx->_gem.errmsg; #else const hawk_ooch_t* msg; hawk_oow_t wcslen, mbslen; - msg = (rtx->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk_rtx_gethawk(rtx))(hawk_rtx_gethawk(rtx), rtx->_gem.errnum): rtx->_gem.errmsg; + msg = (rtx->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk_rtx_gethawk(rtx))(rtx->_gem.errnum): rtx->_gem.errmsg; mbslen = HAWK_COUNTOF(rtx->xerrmsg); hawk_conv_ucstr_to_bcstr_with_cmgr (msg, &wcslen, rtx->xerrmsg, &mbslen, hawk_rtx_getcmgr(rtx)); @@ -418,14 +418,14 @@ const hawk_uch_t* hawk_rtx_geterrumsg (hawk_rtx_t* rtx) const hawk_ooch_t* msg; hawk_oow_t wcslen, mbslen; - msg = (rtx->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk_rtx_gethawk(rtx))(hawk_rtx_gethawk(rtx), rtx->_gem.errnum): rtx->_gem.errmsg; + msg = (rtx->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk_rtx_gethawk(rtx))(rtx->_gem.errnum): rtx->_gem.errmsg; wcslen = HAWK_COUNTOF(rtx->xerrmsg); hawk_conv_bcstr_to_ucstr_with_cmgr (msg, &mbslen, rtx->xerrmsg, &wcslen, hawk_rtx_getcmgr(rtx), 1); return rtx->xerrmsg; #else - return (rtx->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk_rtx_gethawk(rtx))(hawk_rtx_gethawk(rtx), rtx->_gem.errnum): rtx->_gem.errmsg; + return (rtx->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk_rtx_gethawk(rtx))(rtx->_gem.errnum): rtx->_gem.errmsg; #endif } @@ -433,13 +433,13 @@ void hawk_rtx_geterrinf (hawk_rtx_t* rtx, hawk_errinf_t* errinf) { errinf->num = rtx->_gem.errnum; errinf->loc = rtx->_gem.errloc; - hawk_copy_oocstr (errinf->msg, HAWK_COUNTOF(errinf->msg), (rtx->_gem.errmsg[0] == '\0'? hawk_geterrstr(hawk_rtx_gethawk(rtx))(hawk_rtx_gethawk(rtx), rtx->_gem.errnum): rtx->_gem.errmsg)); + hawk_copy_oocstr (errinf->msg, HAWK_COUNTOF(errinf->msg), (rtx->_gem.errmsg[0] == '\0'? hawk_geterrstr(hawk_rtx_gethawk(rtx))(rtx->_gem.errnum): rtx->_gem.errmsg)); } void hawk_rtx_geterror (hawk_rtx_t* rtx, hawk_errnum_t* errnum, const hawk_ooch_t** errmsg, hawk_loc_t* errloc) { if (errnum) *errnum = rtx->_gem.errnum; - if (errmsg) *errmsg = (rtx->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk_rtx_gethawk(rtx))(hawk_rtx_gethawk(rtx), rtx->_gem.errnum): rtx->_gem.errmsg; + if (errmsg) *errmsg = (rtx->_gem.errmsg[0] == '\0')? hawk_geterrstr(hawk_rtx_gethawk(rtx))(rtx->_gem.errnum): rtx->_gem.errmsg; if (errloc) *errloc = rtx->_gem.errloc; } diff --git a/hawk/lib/hawk.c b/hawk/lib/hawk.c index 0ca2e809..4a6d0241 100644 --- a/hawk/lib/hawk.c +++ b/hawk/lib/hawk.c @@ -154,7 +154,7 @@ int hawk_init (hawk_t* awk, hawk_mmgr_t* mmgr, hawk_cmgr_t* cmgr, const hawk_prm awk->_gem.errloc.line = 0; awk->_gem.errloc.colm = 0; awk->_gem.errloc.file = HAWK_NULL; - awk->errstr = hawk_dflerrstr; + awk->errstr = hawk_dfl_errstr; awk->haltall = 0; /* progagate the primitive functions */ diff --git a/hawk/lib/hawk.h b/hawk/lib/hawk.h index 6217d1ef..bf77335b 100644 --- a/hawk/lib/hawk.h +++ b/hawk/lib/hawk.h @@ -1278,7 +1278,6 @@ typedef struct hawk_errinf_t hawk_errinf_t; * object with the hawk_seterrstr() function to customize an error string. */ typedef const hawk_ooch_t* (*hawk_errstr_t) ( - hawk_t* awk, /**< awk */ hawk_errnum_t num /**< error number */ ); diff --git a/hawk/lib/mod-sys.c b/hawk/lib/mod-sys.c index f060c615..9bd42d69 100644 --- a/hawk/lib/mod-sys.c +++ b/hawk/lib/mod-sys.c @@ -158,7 +158,7 @@ static hawk_int_t set_error_on_sys_list (hawk_rtx_t* rtx, sys_list_t* sys_list, } else { - hawk_rtx_fmttooocstr (rtx, sys_list->ctx.errmsg, HAWK_COUNTOF(sys_list->ctx.errmsg), HAWK_T("%js"), hawk_geterrstr(hawk_rtx_gethawk(rtx))(hawk_rtx_gethawk(rtx), errnum)); + hawk_rtx_fmttooocstr (rtx, sys_list->ctx.errmsg, HAWK_COUNTOF(sys_list->ctx.errmsg), HAWK_T("%js"), hawk_geterrstr(hawk_rtx_gethawk(rtx))(errnum)); } return ERRNUM_TO_RC(errnum); }