From f1c5626b1bb0ed4da4d06b590f628600f1ff9f97 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Thu, 9 Jan 2020 07:24:35 +0000 Subject: [PATCH] improved Hawk::Value::setIndexedStr() functions --- hawk/lib/Hawk.cpp | 82 +++++++++++++++++++++++++++++++++++++---------- hawk/lib/Hawk.hpp | 13 +++++--- 2 files changed, 74 insertions(+), 21 deletions(-) diff --git a/hawk/lib/Hawk.cpp b/hawk/lib/Hawk.cpp index 3de952cc..5cd13bd2 100644 --- a/hawk/lib/Hawk.cpp +++ b/hawk/lib/Hawk.cpp @@ -961,23 +961,20 @@ int Hawk::Value::setIndexedFlt (Run* r, const Index& idx, hawk_flt_t v) return n; } -int Hawk::Value::setIndexedStr (const Index& idx, const hawk_ooch_t* str, hawk_oow_t len, bool numeric) +/////////////////////////////////////////////////////////////////// + +int Hawk::Value::setIndexedStr (const Index& idx, const hawk_uch_t* str, hawk_oow_t len, bool numeric) { - if (run == HAWK_NULL) return -1; - return this->setIndexedStr(run, idx, str, len, numeric); + if (this->run == HAWK_NULL) return -1; // NOTE: this->run isn't available. neither is this->run->awk. unable to set an error code + return this->setIndexedStr(this->run, idx, str, len, numeric); } -int Hawk::Value::setIndexedStr ( - Run* r, const Index& idx, const hawk_ooch_t* str, hawk_oow_t len, bool numeric) +int Hawk::Value::setIndexedStr (Run* r, const Index& idx, const hawk_uch_t* str, hawk_oow_t len, bool numeric) { hawk_val_t* tmp; - hawk_oocs_t oocs; - oocs.ptr = (hawk_ooch_t*)str; - oocs.len = len; - - tmp = numeric? hawk_rtx_makenstrvalwithoocs(r->rtx, &oocs): - hawk_rtx_makestrvalwithoocs(r->rtx, &oocs); + tmp = numeric? hawk_rtx_makenstrvalwithuchars(r->rtx, str, len): + hawk_rtx_makestrvalwithuchars(r->rtx, str, len); if (tmp == HAWK_NULL) { r->awk->retrieveError (r); @@ -991,13 +988,13 @@ int Hawk::Value::setIndexedStr ( return n; } -int Hawk::Value::setIndexedStr (const Index& idx, const hawk_ooch_t* str, bool numeric) +int Hawk::Value::setIndexedStr (const Index& idx, const hawk_uch_t* str, bool numeric) { - if (run == HAWK_NULL) return -1; + if (run == HAWK_NULL) return -1; // NOTE: this->run isn't available. neither is this->run->awk. unable to set an error code return this->setIndexedStr(run, idx, str, numeric); } -int Hawk::Value::setIndexedStr (Run* r, const Index& idx, const hawk_ooch_t* str, bool numeric) +int Hawk::Value::setIndexedStr (Run* r, const Index& idx, const hawk_uch_t* str, bool numeric) { hawk_val_t* tmp; tmp = numeric? hawk_rtx_makenstrvalwithoocstr(r->rtx, str): @@ -1015,10 +1012,61 @@ int Hawk::Value::setIndexedStr (Run* r, const Index& idx, const hawk_ooch_t* str return n; } +int Hawk::Value::setIndexedStr (const Index& idx, const hawk_bch_t* str, hawk_oow_t len, bool numeric) +{ + if (this->run == HAWK_NULL) return -1; // NOTE: this->run isn't available. neither is this->run->awk. unable to set an error code + return this->setIndexedStr(this->run, idx, str, len, numeric); +} + +int Hawk::Value::setIndexedStr (Run* r, const Index& idx, const hawk_bch_t* str, hawk_oow_t len, bool numeric) +{ + hawk_val_t* tmp; + + tmp = numeric? hawk_rtx_makenstrvalwithbchars(r->rtx, str, len): + hawk_rtx_makestrvalwithbchars(r->rtx, str, len); + if (tmp == HAWK_NULL) + { + r->awk->retrieveError (r); + return -1; + } + + hawk_rtx_refupval (r->rtx, tmp); + int n = this->setIndexedVal(r, idx, tmp); + hawk_rtx_refdownval (r->rtx, tmp); + + return n; +} + +int Hawk::Value::setIndexedStr (const Index& idx, const hawk_bch_t* str, bool numeric) +{ + if (run == HAWK_NULL) return -1; // NOTE: this->run isn't available. neither is this->run->awk. unable to set an error code + return this->setIndexedStr(run, idx, str, numeric); +} + +int Hawk::Value::setIndexedStr (Run* r, const Index& idx, const hawk_bch_t* str, bool numeric) +{ + hawk_val_t* tmp; + tmp = numeric? hawk_rtx_makenstrvalwithbcstr(r->rtx, str): + hawk_rtx_makestrvalwithbcstr(r->rtx, str); + if (tmp == HAWK_NULL) + { + r->awk->retrieveError (r); + return -1; + } + + hawk_rtx_refupval (r->rtx, tmp); + int n = this->setIndexedVal(r, idx, tmp); + hawk_rtx_refdownval (r->rtx, tmp); + + return n; +} + +/////////////////////////////////////////////////////////////////// + int Hawk::Value::setIndexedMbs (const Index& idx, const hawk_bch_t* str, hawk_oow_t len) { - if (run == HAWK_NULL) return -1; - return this->setIndexedMbs(run, idx, str, len); + if (run == HAWK_NULL) return -1; // NOTE: this->run isn't available. neither is this->run->awk. unable to set an error code + return this->setIndexedMbs(this->run, idx, str, len); } int Hawk::Value::setIndexedMbs (Run* r, const Index& idx, const hawk_bch_t* str, hawk_oow_t len) @@ -1045,7 +1093,7 @@ int Hawk::Value::setIndexedMbs (Run* r, const Index& idx, const hawk_bch_t* str, int Hawk::Value::setIndexedMbs (const Index& idx, const hawk_bch_t* str) { - if (run == HAWK_NULL) return -1; + if (run == HAWK_NULL) return -1; // NOTE: this->run isn't available. neither is this->run->awk. unable to set an error code return this->setIndexedMbs(run, idx, str); } diff --git a/hawk/lib/Hawk.hpp b/hawk/lib/Hawk.hpp index 41c8bff7..8421d84a 100644 --- a/hawk/lib/Hawk.hpp +++ b/hawk/lib/Hawk.hpp @@ -1079,10 +1079,15 @@ public: int setIndexedFlt (const Index& idx, hawk_flt_t v); int setIndexedFlt (Run* r, const Index& idx, hawk_flt_t v); - int setIndexedStr (const Index& idx, const hawk_ooch_t* str, hawk_oow_t len, bool numeric = false); - int setIndexedStr (Run* r, const Index& idx, const hawk_ooch_t* str, hawk_oow_t len, bool numeric = false); - int setIndexedStr (const Index& idx, const hawk_ooch_t* str, bool numeric = false); - int setIndexedStr (Run* r, const Index& idx, const hawk_ooch_t* str, bool numeric = false); + int setIndexedStr (const Index& idx, const hawk_uch_t* str, hawk_oow_t len, bool numeric = false); + int setIndexedStr (Run* r, const Index& idx, const hawk_uch_t* str, hawk_oow_t len, bool numeric = false); + int setIndexedStr (const Index& idx, const hawk_uch_t* str, bool numeric = false); + int setIndexedStr (Run* r, const Index& idx, const hawk_uch_t* str, bool numeric = false); + + int setIndexedStr (const Index& idx, const hawk_bch_t* str, hawk_oow_t len, bool numeric = false); + int setIndexedStr (Run* r, const Index& idx, const hawk_bch_t* str, hawk_oow_t len, bool numeric = false); + int setIndexedStr (const Index& idx, const hawk_bch_t* str, bool numeric = false); + int setIndexedStr (Run* r, const Index& idx, const hawk_bch_t* str, bool numeric = false); int setIndexedMbs (const Index& idx, const hawk_bch_t* str, hawk_oow_t len); int setIndexedMbs (Run* r, const Index& idx, const hawk_bch_t* str, hawk_oow_t len);