changed qse_ntime_t to a structure and made related changes

This commit is contained in:
2012-11-11 16:07:34 +00:00
parent d6a3bfea8d
commit b94dd042c5
29 changed files with 460 additions and 304 deletions

View File

@ -377,7 +377,7 @@ Awk::Value::operator const Awk::char_t* () const
{
const Awk::char_t* ptr;
size_t len;
if (Awk::Value::getStr (&ptr, &len) <= -1) ptr = QSE_T("");
if (Awk::Value::getStr (&ptr, &len) <= -1) ptr = EMPTY_STRING;
return ptr;
}
@ -385,16 +385,14 @@ int Awk::Value::getInt (long_t* v) const
{
long_t lv = 0;
QSE_ASSERT (val != QSE_NULL);
QSE_ASSERT (this->val != QSE_NULL);
if (run != QSE_NULL &&
val->type != QSE_AWK_VAL_NIL &&
val->type != QSE_AWK_VAL_MAP)
if (run != QSE_NULL)
{
int n = qse_awk_rtx_valtolong (run->rtx, val, &lv);
int n = qse_awk_rtx_valtolong (this->run->rtx, this->val, &lv);
if (n <= -1)
{
run->awk->retrieveError (run);
run->awk->retrieveError (this->run);
return -1;
}
}
@ -407,16 +405,14 @@ int Awk::Value::getFlt (flt_t* v) const
{
flt_t rv = 0;
QSE_ASSERT (val != QSE_NULL);
QSE_ASSERT (this->val != QSE_NULL);
if (run != QSE_NULL &&
val->type != QSE_AWK_VAL_NIL &&
val->type != QSE_AWK_VAL_MAP)
if (this->run)
{
int n = qse_awk_rtx_valtoflt (run->rtx, val, &rv);
int n = qse_awk_rtx_valtoflt (this->run->rtx, this->val, &rv);
if (n <= -1)
{
run->awk->retrieveError (run);
run->awk->retrieveError (this->run);
return -1;
}
}
@ -425,21 +421,38 @@ int Awk::Value::getFlt (flt_t* v) const
return 0;
}
int Awk::Value::getNum (long_t* lv, flt_t* fv) const
{
QSE_ASSERT (this->val != QSE_NULL);
if (this->run != QSE_NULL)
{
int n = qse_awk_rtx_valtonum (this->run->rtx, this->val, lv, fv);
if (n <= -1)
{
run->awk->retrieveError (this->run);
return -1;
}
return n;
}
*lv = 0;
return 0;
}
int Awk::Value::getStr (const char_t** str, size_t* len) const
{
const char_t* p = EMPTY_STRING;
size_t l = 0;
QSE_ASSERT (val != QSE_NULL);
QSE_ASSERT (this->val != QSE_NULL);
if (run != QSE_NULL &&
val->type != QSE_AWK_VAL_NIL &&
val->type != QSE_AWK_VAL_MAP)
if (this->run != QSE_NULL)
{
if (val->type == QSE_AWK_VAL_STR)
if (this->val->type == QSE_AWK_VAL_STR)
{
p = ((qse_awk_val_str_t*)val)->val.ptr;
l = ((qse_awk_val_str_t*)val)->val.len;
p = ((qse_awk_val_str_t*)this->val)->val.ptr;
l = ((qse_awk_val_str_t*)this->val)->val.len;
}
else
{
@ -447,9 +460,9 @@ int Awk::Value::getStr (const char_t** str, size_t* len) const
{
qse_awk_rtx_valtostr_out_t out;
out.type = QSE_AWK_RTX_VALTOSTR_CPLDUP;
if (qse_awk_rtx_valtostr (run->rtx, val, &out) <= -1)
if (qse_awk_rtx_valtostr (this->run->rtx, this->val, &out) <= -1)
{
run->awk->retrieveError (run);
run->awk->retrieveError (this->run);
return -1;
}