removed hawk::cap().
added some array value manipulation methods
This commit is contained in:
146
lib/Hawk.cpp
146
lib/Hawk.cpp
@ -463,7 +463,7 @@ int Hawk::Value::getInt (hawk_int_t* v) const
|
|||||||
int n = hawk_rtx_valtoint(this->run->rtx, this->val, &lv);
|
int n = hawk_rtx_valtoint(this->run->rtx, this->val, &lv);
|
||||||
if (n <= -1)
|
if (n <= -1)
|
||||||
{
|
{
|
||||||
run->hawk->retrieveError (this->run);
|
run->hawk->retrieveError(this->run);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -483,7 +483,7 @@ int Hawk::Value::getFlt (hawk_flt_t* v) const
|
|||||||
int n = hawk_rtx_valtoflt(this->run->rtx, this->val, &rv);
|
int n = hawk_rtx_valtoflt(this->run->rtx, this->val, &rv);
|
||||||
if (n <= -1)
|
if (n <= -1)
|
||||||
{
|
{
|
||||||
run->hawk->retrieveError (this->run);
|
run->hawk->retrieveError(this->run);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -501,7 +501,7 @@ int Hawk::Value::getNum (hawk_int_t* lv, hawk_flt_t* fv) const
|
|||||||
int n = hawk_rtx_valtonum(this->run->rtx, this->val, lv, fv);
|
int n = hawk_rtx_valtonum(this->run->rtx, this->val, lv, fv);
|
||||||
if (n <= -1)
|
if (n <= -1)
|
||||||
{
|
{
|
||||||
run->hawk->retrieveError (this->run);
|
run->hawk->retrieveError(this->run);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return n;
|
return n;
|
||||||
@ -533,7 +533,7 @@ int Hawk::Value::getStr (const hawk_ooch_t** str, hawk_oow_t* len) const
|
|||||||
out.type = HAWK_RTX_VALTOSTR_CPLDUP;
|
out.type = HAWK_RTX_VALTOSTR_CPLDUP;
|
||||||
if (hawk_rtx_valtostr(this->run->rtx, this->val, &out) <= -1)
|
if (hawk_rtx_valtostr(this->run->rtx, this->val, &out) <= -1)
|
||||||
{
|
{
|
||||||
run->hawk->retrieveError (this->run);
|
run->hawk->retrieveError(this->run);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -578,7 +578,7 @@ int Hawk::Value::getMbs (const hawk_bch_t** str, hawk_oow_t* len) const
|
|||||||
p = hawk_rtx_valtobcstrdup(this->run->rtx, this->val, &l);
|
p = hawk_rtx_valtobcstrdup(this->run->rtx, this->val, &l);
|
||||||
if (!p)
|
if (!p)
|
||||||
{
|
{
|
||||||
run->hawk->retrieveError (this->run);
|
run->hawk->retrieveError(this->run);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -656,7 +656,7 @@ int Hawk::Value::setInt (Run* r, hawk_int_t v)
|
|||||||
tmp = hawk_rtx_makeintval(r->rtx, v);
|
tmp = hawk_rtx_makeintval(r->rtx, v);
|
||||||
if (tmp == HAWK_NULL)
|
if (tmp == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -682,7 +682,7 @@ int Hawk::Value::setFlt (Run* r, hawk_flt_t v)
|
|||||||
tmp = hawk_rtx_makefltval(r->rtx, v);
|
tmp = hawk_rtx_makefltval(r->rtx, v);
|
||||||
if (tmp == HAWK_NULL)
|
if (tmp == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -712,7 +712,7 @@ int Hawk::Value::setStr (Run* r, const hawk_uch_t* str, hawk_oow_t len, bool num
|
|||||||
hawk_rtx_makestrvalwithuchars(r->rtx, str, len);
|
hawk_rtx_makestrvalwithuchars(r->rtx, str, len);
|
||||||
if (tmp == HAWK_NULL)
|
if (tmp == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -735,7 +735,7 @@ int Hawk::Value::setStr (Run* r, const hawk_uch_t* str, bool numeric)
|
|||||||
hawk_rtx_makestrvalwithucstr(r->rtx, str);
|
hawk_rtx_makestrvalwithucstr(r->rtx, str);
|
||||||
if (tmp == HAWK_NULL)
|
if (tmp == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -765,7 +765,7 @@ int Hawk::Value::setStr (Run* r, const hawk_bch_t* str, hawk_oow_t len, bool num
|
|||||||
hawk_rtx_makestrvalwithbchars(r->rtx, str, len);
|
hawk_rtx_makestrvalwithbchars(r->rtx, str, len);
|
||||||
if (tmp == HAWK_NULL)
|
if (tmp == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -788,7 +788,7 @@ int Hawk::Value::setStr (Run* r, const hawk_bch_t* str, bool numeric)
|
|||||||
hawk_rtx_makestrvalwithbcstr(r->rtx, str);
|
hawk_rtx_makestrvalwithbcstr(r->rtx, str);
|
||||||
if (tmp == HAWK_NULL)
|
if (tmp == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -820,7 +820,7 @@ int Hawk::Value::setMbs (Run* r, const hawk_bch_t* str, hawk_oow_t len)
|
|||||||
tmp = hawk_rtx_makembsvalwithbcs(r->rtx, &oocs);
|
tmp = hawk_rtx_makembsvalwithbcs(r->rtx, &oocs);
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -841,7 +841,7 @@ int Hawk::Value::setMbs (Run* r, const hawk_bch_t* str)
|
|||||||
tmp = hawk_rtx_makembsvalwithbchars(r->rtx, str, hawk_count_bcstr(str));
|
tmp = hawk_rtx_makembsvalwithbchars(r->rtx, str, hawk_count_bcstr(str));
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -868,7 +868,7 @@ int Hawk::Value::scaleArrayed (Run* r, hawk_ooi_t size)
|
|||||||
hawk_val_t* arr = hawk_rtx_makearrval(r->rtx, size); // TODO: can we change this to accept the initial value in the constructor
|
hawk_val_t* arr = hawk_rtx_makearrval(r->rtx, size); // TODO: can we change this to accept the initial value in the constructor
|
||||||
if (arr == HAWK_NULL)
|
if (arr == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -895,7 +895,7 @@ int Hawk::Value::scaleArrayed (Run* r, hawk_ooi_t size)
|
|||||||
{
|
{
|
||||||
// it can't span across multiple runtime contexts
|
// it can't span across multiple runtime contexts
|
||||||
this->run->setError(HAWK_EINVAL);
|
this->run->setError(HAWK_EINVAL);
|
||||||
this->run->hawk->retrieveError (run);
|
this->run->hawk->retrieveError(run);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -903,7 +903,7 @@ int Hawk::Value::scaleArrayed (Run* r, hawk_ooi_t size)
|
|||||||
// update the arr with a given value
|
// update the arr with a given value
|
||||||
if (hawk_rtx_setarrvalfld(r->rtx, val, idx, v) == HAWK_NULL)
|
if (hawk_rtx_setarrvalfld(r->rtx, val, idx, v) == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@ -912,6 +912,19 @@ int Hawk::Value::scaleArrayed (Run* r, hawk_ooi_t size)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hawk_ooi_t Hawk::Value::getArrayedLength () const
|
||||||
|
{
|
||||||
|
if (HAWK_RTX_GETVALTYPE(r->rtx, this->val) != HAWK_VAL_ARR) return -1;
|
||||||
|
return (hawk_ooi_t)HAWK_ARR_TALLY(((hawk_val_arr_t*)this->val)->arr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
hawk_ooi_t Hawk::Value::getArrayedSize () const
|
||||||
|
{
|
||||||
|
if (HAWK_RTX_GETVALTYPE(r->rtx, this->val) != HAWK_VAL_ARR) return -1;
|
||||||
|
return (hawk_ooi_t)HAWK_ARR_SIZE(((hawk_val_arr_t*)this->val)->arr);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int Hawk::Value::setArrayedVal (hawk_ooi_t idx, hawk_val_t* v)
|
int Hawk::Value::setArrayedVal (hawk_ooi_t idx, hawk_val_t* v)
|
||||||
{
|
{
|
||||||
@ -930,7 +943,7 @@ int Hawk::Value::setArrayedVal (Run* r, hawk_ooi_t idx, hawk_val_t* v)
|
|||||||
hawk_val_t* arr = hawk_rtx_makearrval(r->rtx, -1); // TODO: can we change this to accept the initial value in the constructor
|
hawk_val_t* arr = hawk_rtx_makearrval(r->rtx, -1); // TODO: can we change this to accept the initial value in the constructor
|
||||||
if (arr == HAWK_NULL)
|
if (arr == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -940,7 +953,7 @@ int Hawk::Value::setArrayedVal (Run* r, hawk_ooi_t idx, hawk_val_t* v)
|
|||||||
if (hawk_rtx_setarrvalfld(r->rtx, arr, idx, v) == HAWK_NULL)
|
if (hawk_rtx_setarrvalfld(r->rtx, arr, idx, v) == HAWK_NULL)
|
||||||
{
|
{
|
||||||
hawk_rtx_refdownval(r->rtx, arr);
|
hawk_rtx_refdownval(r->rtx, arr);
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -965,14 +978,14 @@ int Hawk::Value::setArrayedVal (Run* r, hawk_ooi_t idx, hawk_val_t* v)
|
|||||||
{
|
{
|
||||||
// it can't span across multiple runtime contexts
|
// it can't span across multiple runtime contexts
|
||||||
this->run->setError(HAWK_EINVAL);
|
this->run->setError(HAWK_EINVAL);
|
||||||
this->run->hawk->retrieveError (run);
|
this->run->hawk->retrieveError(run);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the arr with a given value
|
// update the arr with a given value
|
||||||
if (hawk_rtx_setarrvalfld(r->rtx, val, idx, v) == HAWK_NULL)
|
if (hawk_rtx_setarrvalfld(r->rtx, val, idx, v) == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1031,7 +1044,7 @@ int Hawk::Value::setIndexedVal (Run* r, const Index& idx, hawk_val_t* v)
|
|||||||
hawk_val_t* map = hawk_rtx_makemapval(r->rtx);
|
hawk_val_t* map = hawk_rtx_makemapval(r->rtx);
|
||||||
if (map == HAWK_NULL)
|
if (map == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1041,7 +1054,7 @@ int Hawk::Value::setIndexedVal (Run* r, const Index& idx, hawk_val_t* v)
|
|||||||
if (hawk_rtx_setmapvalfld(r->rtx, map, idx.ptr, idx.len, v) == HAWK_NULL)
|
if (hawk_rtx_setmapvalfld(r->rtx, map, idx.ptr, idx.len, v) == HAWK_NULL)
|
||||||
{
|
{
|
||||||
hawk_rtx_refdownval(r->rtx, map);
|
hawk_rtx_refdownval(r->rtx, map);
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1066,14 +1079,14 @@ int Hawk::Value::setIndexedVal (Run* r, const Index& idx, hawk_val_t* v)
|
|||||||
{
|
{
|
||||||
// it can't span across multiple runtime contexts
|
// it can't span across multiple runtime contexts
|
||||||
this->run->setError(HAWK_EINVAL);
|
this->run->setError(HAWK_EINVAL);
|
||||||
this->run->hawk->retrieveError (run);
|
this->run->hawk->retrieveError(run);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the map with a given value
|
// update the map with a given value
|
||||||
if (hawk_rtx_setmapvalfld(r->rtx, val, idx.ptr, idx.len, v) == HAWK_NULL)
|
if (hawk_rtx_setmapvalfld(r->rtx, val, idx.ptr, idx.len, v) == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1092,7 +1105,7 @@ int Hawk::Value::setIndexedInt (Run* r, const Index& idx, hawk_int_t v)
|
|||||||
hawk_val_t* tmp = hawk_rtx_makeintval (r->rtx, v);
|
hawk_val_t* tmp = hawk_rtx_makeintval (r->rtx, v);
|
||||||
if (tmp == HAWK_NULL)
|
if (tmp == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1114,7 +1127,7 @@ int Hawk::Value::setIndexedFlt (Run* r, const Index& idx, hawk_flt_t v)
|
|||||||
hawk_val_t* tmp = hawk_rtx_makefltval(r->rtx, v);
|
hawk_val_t* tmp = hawk_rtx_makefltval(r->rtx, v);
|
||||||
if (tmp == HAWK_NULL)
|
if (tmp == HAWK_NULL)
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1141,7 +1154,7 @@ int Hawk::Value::setIndexedStr (Run* r, const Index& idx, const hawk_uch_t* str,
|
|||||||
hawk_rtx_makestrvalwithuchars(r->rtx, str, len);
|
hawk_rtx_makestrvalwithuchars(r->rtx, str, len);
|
||||||
if (HAWK_UNLIKELY(!tmp))
|
if (HAWK_UNLIKELY(!tmp))
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1165,7 +1178,7 @@ int Hawk::Value::setIndexedStr (Run* r, const Index& idx, const hawk_uch_t* str,
|
|||||||
hawk_rtx_makestrvalwithucstr(r->rtx, str);
|
hawk_rtx_makestrvalwithucstr(r->rtx, str);
|
||||||
if (HAWK_UNLIKELY(!tmp))
|
if (HAWK_UNLIKELY(!tmp))
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1190,7 +1203,7 @@ int Hawk::Value::setIndexedStr (Run* r, const Index& idx, const hawk_bch_t* str,
|
|||||||
hawk_rtx_makestrvalwithbchars(r->rtx, str, len);
|
hawk_rtx_makestrvalwithbchars(r->rtx, str, len);
|
||||||
if (HAWK_UNLIKELY(!tmp))
|
if (HAWK_UNLIKELY(!tmp))
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1215,7 +1228,7 @@ int Hawk::Value::setIndexedStr (Run* r, const Index& idx, const hawk_bch_t* str,
|
|||||||
hawk_rtx_makestrvalwithbcstr(r->rtx, str);
|
hawk_rtx_makestrvalwithbcstr(r->rtx, str);
|
||||||
if (HAWK_UNLIKELY(!tmp))
|
if (HAWK_UNLIKELY(!tmp))
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1245,7 +1258,7 @@ int Hawk::Value::setIndexedMbs (Run* r, const Index& idx, const hawk_bch_t* str,
|
|||||||
tmp = hawk_rtx_makembsvalwithbcs(r->rtx, &oocs);
|
tmp = hawk_rtx_makembsvalwithbcs(r->rtx, &oocs);
|
||||||
if (HAWK_UNLIKELY(!tmp))
|
if (HAWK_UNLIKELY(!tmp))
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1268,7 +1281,7 @@ int Hawk::Value::setIndexedMbs (Run* r, const Index& idx, const hawk_bch_t* str)
|
|||||||
tmp = hawk_rtx_makembsvalwithbchars(r->rtx, str, hawk_count_bcstr(str));
|
tmp = hawk_rtx_makembsvalwithbchars(r->rtx, str, hawk_count_bcstr(str));
|
||||||
if (HAWK_UNLIKELY(!tmp))
|
if (HAWK_UNLIKELY(!tmp))
|
||||||
{
|
{
|
||||||
r->hawk->retrieveError (r);
|
r->hawk->retrieveError(r);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1548,6 +1561,11 @@ Hawk::Hawk (Mmgr* mmgr):
|
|||||||
this->_cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8);
|
this->_cmgr = hawk_get_cmgr_by_id(HAWK_CMGR_UTF8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Hawk::~Hawk()
|
||||||
|
{
|
||||||
|
this->close();
|
||||||
|
}
|
||||||
|
|
||||||
const hawk_ooch_t* Hawk::getErrorString (hawk_errnum_t num) const
|
const hawk_ooch_t* Hawk::getErrorString (hawk_errnum_t num) const
|
||||||
{
|
{
|
||||||
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
||||||
@ -1636,7 +1654,7 @@ void Hawk::setError (hawk_errnum_t code, const hawk_loc_t* loc)
|
|||||||
if (this->hawk)
|
if (this->hawk)
|
||||||
{
|
{
|
||||||
hawk_seterrnum (this->hawk, loc, code);
|
hawk_seterrnum (this->hawk, loc, code);
|
||||||
this->retrieveError ();
|
this->retrieveError();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1655,7 +1673,7 @@ void Hawk::formatError (hawk_errnum_t code, const hawk_loc_t* loc, const hawk_bc
|
|||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
hawk_seterrbvfmt (this->hawk, loc, code, fmt, ap);
|
hawk_seterrbvfmt (this->hawk, loc, code, fmt, ap);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
this->retrieveError ();
|
this->retrieveError();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1674,7 +1692,7 @@ void Hawk::formatError (hawk_errnum_t code, const hawk_loc_t* loc, const hawk_uc
|
|||||||
va_start (ap, fmt);
|
va_start (ap, fmt);
|
||||||
hawk_seterruvfmt (this->hawk, loc, code, fmt, ap);
|
hawk_seterruvfmt (this->hawk, loc, code, fmt, ap);
|
||||||
va_end (ap);
|
va_end (ap);
|
||||||
this->retrieveError ();
|
this->retrieveError();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1691,7 +1709,7 @@ void Hawk::clearError ()
|
|||||||
errinf.num = HAWK_ENOERR;
|
errinf.num = HAWK_ENOERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hawk::retrieveError ()
|
void Hawk::retrieveError()
|
||||||
{
|
{
|
||||||
if (this->hawk == HAWK_NULL)
|
if (this->hawk == HAWK_NULL)
|
||||||
{
|
{
|
||||||
@ -1703,7 +1721,7 @@ void Hawk::retrieveError ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hawk::retrieveError (Run* run)
|
void Hawk::retrieveError(Run* run)
|
||||||
{
|
{
|
||||||
HAWK_ASSERT (run != HAWK_NULL);
|
HAWK_ASSERT (run != HAWK_NULL);
|
||||||
if (run->rtx == HAWK_NULL) return;
|
if (run->rtx == HAWK_NULL) return;
|
||||||
@ -1800,26 +1818,26 @@ int Hawk::open ()
|
|||||||
|
|
||||||
void Hawk::close ()
|
void Hawk::close ()
|
||||||
{
|
{
|
||||||
this->fini_runctx ();
|
this->fini_runctx();
|
||||||
this->clearArguments ();
|
this->clearArguments();
|
||||||
|
|
||||||
#if defined(HAWK_USE_HTB_FOR_FUNCTION_MAP)
|
#if defined(HAWK_USE_HTB_FOR_FUNCTION_MAP)
|
||||||
if (this->functionMap)
|
if (this->functionMap)
|
||||||
{
|
{
|
||||||
hawk_htb_close (this->functionMap);
|
hawk_htb_close(this->functionMap);
|
||||||
this->functionMap = HAWK_NULL;
|
this->functionMap = HAWK_NULL;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
this->functionMap.clear ();
|
this->functionMap.clear();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (this->hawk)
|
if (this->hawk)
|
||||||
{
|
{
|
||||||
hawk_close (this->hawk);
|
hawk_close(this->hawk);
|
||||||
this->hawk = HAWK_NULL;
|
this->hawk = HAWK_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->clearError ();
|
this->clearError();
|
||||||
}
|
}
|
||||||
|
|
||||||
hawk_cmgr_t* Hawk::getCmgr () const
|
hawk_cmgr_t* Hawk::getCmgr () const
|
||||||
@ -1853,7 +1871,7 @@ Hawk::Run* Hawk::parse (Source& in, Source& out)
|
|||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->fini_runctx ();
|
this->fini_runctx();
|
||||||
|
|
||||||
source_reader = ∈
|
source_reader = ∈
|
||||||
source_writer = (&out == &Source::NONE)? HAWK_NULL: &out;
|
source_writer = (&out == &Source::NONE)? HAWK_NULL: &out;
|
||||||
@ -1865,7 +1883,7 @@ Hawk::Run* Hawk::parse (Source& in, Source& out)
|
|||||||
int n = hawk_parse(this->hawk, &sio);
|
int n = hawk_parse(this->hawk, &sio);
|
||||||
if (n <= -1)
|
if (n <= -1)
|
||||||
{
|
{
|
||||||
this->retrieveError ();
|
this->retrieveError();
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1877,7 +1895,7 @@ Hawk::Run* Hawk::resetRunContext ()
|
|||||||
{
|
{
|
||||||
if (this->runctx.rtx)
|
if (this->runctx.rtx)
|
||||||
{
|
{
|
||||||
this->fini_runctx ();
|
this->fini_runctx();
|
||||||
if (this->init_runctx() <= -1) return HAWK_NULL;
|
if (this->init_runctx() <= -1) return HAWK_NULL;
|
||||||
return &this->runctx;
|
return &this->runctx;
|
||||||
}
|
}
|
||||||
@ -1892,7 +1910,7 @@ int Hawk::loop (Value* ret)
|
|||||||
hawk_val_t* rv = hawk_rtx_loop (this->runctx.rtx);
|
hawk_val_t* rv = hawk_rtx_loop (this->runctx.rtx);
|
||||||
if (rv == HAWK_NULL)
|
if (rv == HAWK_NULL)
|
||||||
{
|
{
|
||||||
this->retrieveError (&this->runctx);
|
this->retrieveError(&this->runctx);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1919,7 +1937,7 @@ int Hawk::call (const hawk_bch_t* name, Value* ret, const Value* args, hawk_oow_
|
|||||||
if (ptr == HAWK_NULL)
|
if (ptr == HAWK_NULL)
|
||||||
{
|
{
|
||||||
this->runctx.setError (HAWK_ENOMEM);
|
this->runctx.setError (HAWK_ENOMEM);
|
||||||
this->retrieveError (&this->runctx);
|
this->retrieveError(&this->runctx);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1933,7 +1951,7 @@ int Hawk::call (const hawk_bch_t* name, Value* ret, const Value* args, hawk_oow_
|
|||||||
|
|
||||||
if (rv == HAWK_NULL)
|
if (rv == HAWK_NULL)
|
||||||
{
|
{
|
||||||
this->retrieveError (&this->runctx);
|
this->retrieveError(&this->runctx);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1960,7 +1978,7 @@ int Hawk::call (const hawk_uch_t* name, Value* ret, const Value* args, hawk_oow_
|
|||||||
if (ptr == HAWK_NULL)
|
if (ptr == HAWK_NULL)
|
||||||
{
|
{
|
||||||
this->runctx.setError (HAWK_ENOMEM);
|
this->runctx.setError (HAWK_ENOMEM);
|
||||||
this->retrieveError (&this->runctx);
|
this->retrieveError(&this->runctx);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1974,7 +1992,7 @@ int Hawk::call (const hawk_uch_t* name, Value* ret, const Value* args, hawk_oow_
|
|||||||
|
|
||||||
if (rv == HAWK_NULL)
|
if (rv == HAWK_NULL)
|
||||||
{
|
{
|
||||||
this->retrieveError (&this->runctx);
|
this->retrieveError(&this->runctx);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2381,7 +2399,7 @@ int Hawk::addGlobal(const hawk_bch_t* name)
|
|||||||
{
|
{
|
||||||
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
||||||
int n = hawk_addgblwithbcstr(this->hawk, name);
|
int n = hawk_addgblwithbcstr(this->hawk, name);
|
||||||
if (n <= -1) this->retrieveError ();
|
if (n <= -1) this->retrieveError();
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2389,7 +2407,7 @@ int Hawk::addGlobal(const hawk_uch_t* name)
|
|||||||
{
|
{
|
||||||
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
||||||
int n = hawk_addgblwithucstr(this->hawk, name);
|
int n = hawk_addgblwithucstr(this->hawk, name);
|
||||||
if (n <= -1) this->retrieveError ();
|
if (n <= -1) this->retrieveError();
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2397,7 +2415,7 @@ int Hawk::deleteGlobal (const hawk_bch_t* name)
|
|||||||
{
|
{
|
||||||
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
||||||
int n = hawk_delgblwithbcstr(this->hawk, name);
|
int n = hawk_delgblwithbcstr(this->hawk, name);
|
||||||
if (n <= -1) this->retrieveError ();
|
if (n <= -1) this->retrieveError();
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2405,7 +2423,7 @@ int Hawk::deleteGlobal (const hawk_uch_t* name)
|
|||||||
{
|
{
|
||||||
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
||||||
int n = hawk_delgblwithucstr(this->hawk, name);
|
int n = hawk_delgblwithucstr(this->hawk, name);
|
||||||
if (n <= -1) this->retrieveError ();
|
if (n <= -1) this->retrieveError();
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2414,7 +2432,7 @@ int Hawk::findGlobal (const hawk_bch_t* name, bool inc_builtins)
|
|||||||
{
|
{
|
||||||
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
||||||
int n = hawk_findgblwithbcstr(this->hawk, name, inc_builtins);
|
int n = hawk_findgblwithbcstr(this->hawk, name, inc_builtins);
|
||||||
if (n <= -1) this->retrieveError ();
|
if (n <= -1) this->retrieveError();
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2422,7 +2440,7 @@ int Hawk::findGlobal (const hawk_uch_t* name, bool inc_builtins)
|
|||||||
{
|
{
|
||||||
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
HAWK_ASSERT (this->hawk != HAWK_NULL);
|
||||||
int n = hawk_findgblwithucstr(this->hawk, name, inc_builtins);
|
int n = hawk_findgblwithucstr(this->hawk, name, inc_builtins);
|
||||||
if (n <= -1) this->retrieveError ();
|
if (n <= -1) this->retrieveError();
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2438,7 +2456,7 @@ int Hawk::setGlobal (int id, const Value& v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int n = this->runctx.setGlobal(id, v);
|
int n = this->runctx.setGlobal(id, v);
|
||||||
if (n <= -1) this->retrieveError ();
|
if (n <= -1) this->retrieveError();
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2448,7 +2466,7 @@ int Hawk::getGlobal (int id, Value& v)
|
|||||||
HAWK_ASSERT (runctx.rtx != HAWK_NULL);
|
HAWK_ASSERT (runctx.rtx != HAWK_NULL);
|
||||||
|
|
||||||
int n = runctx.getGlobal (id, v);
|
int n = runctx.getGlobal (id, v);
|
||||||
if (n <= -1) this->retrieveError ();
|
if (n <= -1) this->retrieveError();
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2470,7 +2488,7 @@ int Hawk::addFunction (
|
|||||||
hawk_fnc_t* fnc = hawk_addfncwithbcstr(this->hawk, name, &spec);
|
hawk_fnc_t* fnc = hawk_addfncwithbcstr(this->hawk, name, &spec);
|
||||||
if (fnc == HAWK_NULL)
|
if (fnc == HAWK_NULL)
|
||||||
{
|
{
|
||||||
this->retrieveError ();
|
this->retrieveError();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2485,7 +2503,7 @@ int Hawk::addFunction (
|
|||||||
if (!pair)
|
if (!pair)
|
||||||
{
|
{
|
||||||
hawk_delfncwithbcstr (this->hawk, name);
|
hawk_delfncwithbcstr (this->hawk, name);
|
||||||
this->retrieveError ();
|
this->retrieveError();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -2521,7 +2539,7 @@ int Hawk::addFunction (
|
|||||||
hawk_fnc_t* fnc = hawk_addfncwithucstr(this->hawk, name, &spec);
|
hawk_fnc_t* fnc = hawk_addfncwithucstr(this->hawk, name, &spec);
|
||||||
if (fnc == HAWK_NULL)
|
if (fnc == HAWK_NULL)
|
||||||
{
|
{
|
||||||
this->retrieveError ();
|
this->retrieveError();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2536,7 +2554,7 @@ int Hawk::addFunction (
|
|||||||
if (!pair)
|
if (!pair)
|
||||||
{
|
{
|
||||||
hawk_delfncwithucstr (this->hawk, name);
|
hawk_delfncwithucstr (this->hawk, name);
|
||||||
this->retrieveError ();
|
this->retrieveError();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -2567,7 +2585,7 @@ int Hawk::deleteFunction (const hawk_ooch_t* name)
|
|||||||
this->functionMap.remove (Cstr(name));
|
this->functionMap.remove (Cstr(name));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else this->retrieveError ();
|
else this->retrieveError();
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
34
lib/Hawk.hpp
34
lib/Hawk.hpp
@ -832,6 +832,33 @@ public:
|
|||||||
/// The Value class wraps around #hawk_val_t to provide a more
|
/// The Value class wraps around #hawk_val_t to provide a more
|
||||||
/// comprehensive interface.
|
/// comprehensive interface.
|
||||||
///
|
///
|
||||||
|
/// An instance of Value must not outlive the associated run-time
|
||||||
|
/// context and its owning hawk instance. If the close() method is
|
||||||
|
/// called explicity on the owning hawk instance, you must ensure
|
||||||
|
/// that the related values are also destroyed before the call to
|
||||||
|
/// close().
|
||||||
|
///
|
||||||
|
/// The following will end up in a segmentation fault or the like.
|
||||||
|
/// HAWK::HawkStd hawk;
|
||||||
|
/// hawk.open();
|
||||||
|
/// HAWK::HawkStd::SourceString in("BEGIN{}");
|
||||||
|
/// hawk.parse(in, HAWK::Hawk::Source::NONE);
|
||||||
|
/// HAWK::Hawk::Value v(rtx);
|
||||||
|
/// v.setMbs("hello", 5);
|
||||||
|
/// hawk.close();
|
||||||
|
///
|
||||||
|
/// You don't call hawk.close() and rely on the destructor or
|
||||||
|
/// enclose 'v' in another nested scope.
|
||||||
|
/// HAWK::HawkStd hawk;
|
||||||
|
/// hawk.open();
|
||||||
|
/// HAWK::HawkStd::SourceString in("BEGIN{}");
|
||||||
|
/// hawk.parse(in, HAWK::Hawk::Source::NONE);
|
||||||
|
/// {
|
||||||
|
/// HAWK::Hawk::Value v(rtx);
|
||||||
|
/// v.setMbs("hello", 5);
|
||||||
|
/// }
|
||||||
|
/// hawk.close();
|
||||||
|
///
|
||||||
class HAWK_EXPORT Value
|
class HAWK_EXPORT Value
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -1082,6 +1109,9 @@ public:
|
|||||||
int scaleArrayed (hawk_ooi_t size);
|
int scaleArrayed (hawk_ooi_t size);
|
||||||
int scaleArrayed (Run* r, hawk_ooi_t size);
|
int scaleArrayed (Run* r, hawk_ooi_t size);
|
||||||
|
|
||||||
|
hawk_ooi_t getArrayedSize () const; // same value as hawk::size() for an array
|
||||||
|
hawk_ooi_t getArrayedLength () const; // same value as hawk::length() for an array
|
||||||
|
|
||||||
bool isArrayed () const;
|
bool isArrayed () const;
|
||||||
int getArrayed (
|
int getArrayed (
|
||||||
hawk_ooi_t idx, ///< array index
|
hawk_ooi_t idx, ///< array index
|
||||||
@ -1299,7 +1329,7 @@ public:
|
|||||||
|
|
||||||
/// The ~Hawk() function destroys an interpreter. Make sure to have
|
/// The ~Hawk() function destroys an interpreter. Make sure to have
|
||||||
/// called close() for finalization before the destructor is executed.
|
/// called close() for finalization before the destructor is executed.
|
||||||
virtual ~Hawk () {}
|
virtual ~Hawk ();
|
||||||
|
|
||||||
hawk_cmgr_t* getCmgr () const;
|
hawk_cmgr_t* getCmgr () const;
|
||||||
void setCmgr (hawk_cmgr_t* cmgr);
|
void setCmgr (hawk_cmgr_t* cmgr);
|
||||||
@ -1933,6 +1963,8 @@ public:
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
~HawkStd();
|
||||||
|
|
||||||
int open ();
|
int open ();
|
||||||
void close ();
|
void close ();
|
||||||
|
|
||||||
|
@ -131,6 +131,11 @@ static hawk_sio_t* open_sio_std (Hawk* hawk, HawkStd::Run* run, hawk_sio_std_t s
|
|||||||
return sio;
|
return sio;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HawkStd::~HawkStd ()
|
||||||
|
{
|
||||||
|
this->close();
|
||||||
|
}
|
||||||
|
|
||||||
int HawkStd::open ()
|
int HawkStd::open ()
|
||||||
{
|
{
|
||||||
int n = Hawk::open();
|
int n = Hawk::open();
|
||||||
@ -182,7 +187,7 @@ void HawkStd::close ()
|
|||||||
|
|
||||||
//
|
//
|
||||||
// HawkStd called hawk_stdmodstartup() after Hawk::open().
|
// HawkStd called hawk_stdmodstartup() after Hawk::open().
|
||||||
// It's logical to call hawk_stdmodshutdown() Hawk::close().
|
// It's logical to call hawk_stdmodshutdown() in Hawk::close().
|
||||||
// but Hawk::close() still needs to call some module's fini and
|
// but Hawk::close() still needs to call some module's fini and
|
||||||
// unload functions. So it must be done in HawkStd::uponClosing()
|
// unload functions. So it must be done in HawkStd::uponClosing()
|
||||||
// which is called after modules have been unloaded but while
|
// which is called after modules have been unloaded but while
|
||||||
|
33
lib/fnc.c
33
lib/fnc.c
@ -61,6 +61,7 @@ static hawk_fnc_t sysfnctab[] =
|
|||||||
|
|
||||||
/* string functions */
|
/* string functions */
|
||||||
{ {HAWK_T("gsub"), 4}, 0, { {2, 3, HAWK_T("xvr")}, hawk_fnc_gsub, 0 }, HAWK_NULL},
|
{ {HAWK_T("gsub"), 4}, 0, { {2, 3, HAWK_T("xvr")}, hawk_fnc_gsub, 0 }, HAWK_NULL},
|
||||||
|
/* TODO: gensub */
|
||||||
{ {HAWK_T("index"), 5}, 0, { {2, 3, HAWK_NULL}, hawk_fnc_index, 0 }, HAWK_NULL},
|
{ {HAWK_T("index"), 5}, 0, { {2, 3, HAWK_NULL}, hawk_fnc_index, 0 }, HAWK_NULL},
|
||||||
{ {HAWK_T("length"), 6}, 1, { {0, 1, HAWK_NULL}, fnc_length, 0 }, HAWK_NULL},
|
{ {HAWK_T("length"), 6}, 1, { {0, 1, HAWK_NULL}, fnc_length, 0 }, HAWK_NULL},
|
||||||
{ {HAWK_T("match"), 5}, 0, { {2, 3, HAWK_T("vxr")}, fnc_match, 0 }, HAWK_NULL},
|
{ {HAWK_T("match"), 5}, 0, { {2, 3, HAWK_T("vxr")}, fnc_match, 0 }, HAWK_NULL},
|
||||||
@ -704,36 +705,12 @@ int hawk_fnc_length (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi, int mode)
|
|||||||
case HAWK_VAL_MAP:
|
case HAWK_VAL_MAP:
|
||||||
/* map size */
|
/* map size */
|
||||||
len = HAWK_MAP_SIZE(((hawk_val_map_t*)v)->map);
|
len = HAWK_MAP_SIZE(((hawk_val_map_t*)v)->map);
|
||||||
switch (mode)
|
|
||||||
{
|
|
||||||
case 2: /* capacity */
|
|
||||||
len = hawk_map_getcapa(((hawk_val_map_t*)v)->map);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1: /* size */
|
|
||||||
case 0: /* length */
|
|
||||||
default:
|
|
||||||
len = HAWK_MAP_SIZE(((hawk_val_map_t*)v)->map);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HAWK_VAL_ARR: /* returns the number of set items instead of the last index + 1 */
|
case HAWK_VAL_ARR:
|
||||||
switch (mode)
|
/* mode 0 - returns the number of set items instead of the last index + 1 */
|
||||||
{
|
/* mode 1 - returns the last index + 1 */
|
||||||
case 2: /* capacity */
|
len = (mode == 0)? HAWK_ARR_TALLY(((hawk_val_arr_t*)v)->arr): HAWK_ARR_SIZE(((hawk_val_arr_t*)v)->arr);
|
||||||
len = HAWK_ARR_SIZE(((hawk_val_arr_t*)v)->arr);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1: /* size */
|
|
||||||
len = HAWK_ARR_SIZE(((hawk_val_arr_t*)v)->arr);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 0: /* length */
|
|
||||||
default:
|
|
||||||
len = HAWK_ARR_TALLY(((hawk_val_arr_t*)v)->arr);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HAWK_VAL_BCHR:
|
case HAWK_VAL_BCHR:
|
||||||
|
@ -339,12 +339,6 @@ static int fnc_gcrefs (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
|
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
|
|
||||||
static int fnc_cap (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|
||||||
{
|
|
||||||
/* capacity */
|
|
||||||
return hawk_fnc_length (rtx, fi, 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int fnc_size (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
static int fnc_size (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
||||||
{
|
{
|
||||||
/* similar to length, but it returns the ubound + 1 for the array */
|
/* similar to length, but it returns the ubound + 1 for the array */
|
||||||
@ -539,7 +533,6 @@ static hawk_mod_fnc_tab_t fnctab[] =
|
|||||||
/* keep this table sorted for binary search in query(). */
|
/* keep this table sorted for binary search in query(). */
|
||||||
{ HAWK_T("array"), { { 0, A_MAX, HAWK_NULL }, fnc_array, 0 } },
|
{ HAWK_T("array"), { { 0, A_MAX, HAWK_NULL }, fnc_array, 0 } },
|
||||||
{ HAWK_T("call"), { { 1, A_MAX, HAWK_T("vR") }, fnc_call, 0 } },
|
{ HAWK_T("call"), { { 1, A_MAX, HAWK_T("vR") }, fnc_call, 0 } },
|
||||||
{ HAWK_T("cap"), { { 1, 1, HAWK_NULL }, fnc_cap, 0 } },
|
|
||||||
{ HAWK_T("cmgr_exists"), { { 1, 1, HAWK_NULL }, fnc_cmgr_exists, 0 } },
|
{ HAWK_T("cmgr_exists"), { { 1, 1, HAWK_NULL }, fnc_cmgr_exists, 0 } },
|
||||||
{ HAWK_T("function_exists"), { { 1, 1, HAWK_NULL }, fnc_function_exists, 0 } },
|
{ HAWK_T("function_exists"), { { 1, 1, HAWK_NULL }, fnc_function_exists, 0 } },
|
||||||
{ HAWK_T("gc"), { { 0, 1, HAWK_NULL }, fnc_gc, 0 } },
|
{ HAWK_T("gc"), { { 0, 1, HAWK_NULL }, fnc_gc, 0 } },
|
||||||
|
156
lib/parse.c
156
lib/parse.c
@ -529,13 +529,13 @@ static int get_char (hawk_t* hawk)
|
|||||||
static void unget_char (hawk_t* hawk, const hawk_sio_lxc_t* c)
|
static void unget_char (hawk_t* hawk, const hawk_sio_lxc_t* c)
|
||||||
{
|
{
|
||||||
/* Make sure that the unget buffer is large enough */
|
/* Make sure that the unget buffer is large enough */
|
||||||
HAWK_ASSERT (hawk->sio.nungots < HAWK_COUNTOF(hawk->sio.ungot));
|
HAWK_ASSERT(hawk->sio.nungots < HAWK_COUNTOF(hawk->sio.ungot));
|
||||||
hawk->sio.ungot[hawk->sio.nungots++] = *c;
|
hawk->sio.ungot[hawk->sio.nungots++] = *c;
|
||||||
}
|
}
|
||||||
|
|
||||||
const hawk_ooch_t* hawk_getgblname (hawk_t* hawk, hawk_oow_t idx, hawk_oow_t* len)
|
const hawk_ooch_t* hawk_getgblname (hawk_t* hawk, hawk_oow_t idx, hawk_oow_t* len)
|
||||||
{
|
{
|
||||||
HAWK_ASSERT (idx < HAWK_ARR_SIZE(hawk->parse.gbls));
|
HAWK_ASSERT(idx < HAWK_ARR_SIZE(hawk->parse.gbls));
|
||||||
|
|
||||||
*len = HAWK_ARR_DLEN(hawk->parse.gbls,idx);
|
*len = HAWK_ARR_DLEN(hawk->parse.gbls,idx);
|
||||||
return HAWK_ARR_DPTR(hawk->parse.gbls,idx);
|
return HAWK_ARR_DPTR(hawk->parse.gbls,idx);
|
||||||
@ -551,7 +551,7 @@ static int parse (hawk_t* hawk)
|
|||||||
int ret = -1;
|
int ret = -1;
|
||||||
hawk_ooi_t op;
|
hawk_ooi_t op;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->sio.inf != HAWK_NULL);
|
HAWK_ASSERT(hawk->sio.inf != HAWK_NULL);
|
||||||
|
|
||||||
op = hawk->sio.inf(hawk, HAWK_SIO_CMD_OPEN, hawk->sio.inp, HAWK_NULL, 0);
|
op = hawk->sio.inf(hawk, HAWK_SIO_CMD_OPEN, hawk->sio.inp, HAWK_NULL, 0);
|
||||||
if (op <= -1)
|
if (op <= -1)
|
||||||
@ -603,8 +603,8 @@ static int parse (hawk_t* hawk)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->tree.ngbls == HAWK_ARR_SIZE(hawk->parse.gbls));
|
HAWK_ASSERT(hawk->tree.ngbls == HAWK_ARR_SIZE(hawk->parse.gbls));
|
||||||
HAWK_ASSERT (hawk->sio.inp == &hawk->sio.arg);
|
HAWK_ASSERT(hawk->sio.inp == &hawk->sio.arg);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
@ -622,7 +622,7 @@ oops:
|
|||||||
|
|
||||||
prev = hawk->sio.inp->prev;
|
prev = hawk->sio.inp->prev;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->sio.inp->name != HAWK_NULL);
|
HAWK_ASSERT(hawk->sio.inp->name != HAWK_NULL);
|
||||||
hawk_freemem(hawk, hawk->sio.inp);
|
hawk_freemem(hawk, hawk->sio.inp);
|
||||||
|
|
||||||
hawk->sio.inp = prev;
|
hawk->sio.inp = prev;
|
||||||
@ -718,10 +718,10 @@ int hawk_parse (hawk_t* hawk, hawk_sio_cbs_t* sio)
|
|||||||
int n;
|
int n;
|
||||||
|
|
||||||
/* the source code istream must be provided */
|
/* the source code istream must be provided */
|
||||||
HAWK_ASSERT (sio != HAWK_NULL);
|
HAWK_ASSERT(sio != HAWK_NULL);
|
||||||
|
|
||||||
/* the source code input stream must be provided at least */
|
/* the source code input stream must be provided at least */
|
||||||
HAWK_ASSERT (sio->in != HAWK_NULL);
|
HAWK_ASSERT(sio->in != HAWK_NULL);
|
||||||
|
|
||||||
if (!sio || !sio->in)
|
if (!sio || !sio->in)
|
||||||
{
|
{
|
||||||
@ -729,11 +729,11 @@ int hawk_parse (hawk_t* hawk, hawk_sio_cbs_t* sio)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->parse.depth.loop == 0);
|
HAWK_ASSERT(hawk->parse.depth.loop == 0);
|
||||||
HAWK_ASSERT (hawk->parse.depth.expr == 0);
|
HAWK_ASSERT(hawk->parse.depth.expr == 0);
|
||||||
|
|
||||||
hawk_clear (hawk);
|
hawk_clear(hawk);
|
||||||
hawk_clearsionames (hawk);
|
hawk_clearsionames(hawk);
|
||||||
|
|
||||||
HAWK_MEMSET (&hawk->sio, 0, HAWK_SIZEOF(hawk->sio));
|
HAWK_MEMSET (&hawk->sio, 0, HAWK_SIZEOF(hawk->sio));
|
||||||
hawk->sio.inf = sio->in;
|
hawk->sio.inf = sio->in;
|
||||||
@ -750,8 +750,8 @@ int hawk_parse (hawk_t* hawk, hawk_sio_cbs_t* sio)
|
|||||||
n = parse(hawk);
|
n = parse(hawk);
|
||||||
if (n == 0 && hawk->sio.outf != HAWK_NULL) n = deparse(hawk);
|
if (n == 0 && hawk->sio.outf != HAWK_NULL) n = deparse(hawk);
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->parse.depth.loop == 0);
|
HAWK_ASSERT(hawk->parse.depth.loop == 0);
|
||||||
HAWK_ASSERT (hawk->parse.depth.expr == 0);
|
HAWK_ASSERT(hawk->parse.depth.expr == 0);
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
@ -777,7 +777,7 @@ static int end_include (hawk_t* hawk)
|
|||||||
cur = hawk->sio.inp;
|
cur = hawk->sio.inp;
|
||||||
hawk->sio.inp = hawk->sio.inp->prev;
|
hawk->sio.inp = hawk->sio.inp->prev;
|
||||||
|
|
||||||
HAWK_ASSERT (cur->name != HAWK_NULL);
|
HAWK_ASSERT(cur->name != HAWK_NULL);
|
||||||
/* restore the pragma values */
|
/* restore the pragma values */
|
||||||
hawk->parse.pragma.trait = cur->pragma_trait;
|
hawk->parse.pragma.trait = cur->pragma_trait;
|
||||||
hawk_freemem(hawk, cur);
|
hawk_freemem(hawk, cur);
|
||||||
@ -928,7 +928,7 @@ static int parse_progunit (hawk_t* hawk)
|
|||||||
function name (parameter-list) { statement }
|
function name (parameter-list) { statement }
|
||||||
*/
|
*/
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->parse.depth.loop == 0);
|
HAWK_ASSERT(hawk->parse.depth.loop == 0);
|
||||||
|
|
||||||
if (MATCH(hawk, TOK_XGLOBAL))
|
if (MATCH(hawk, TOK_XGLOBAL))
|
||||||
{
|
{
|
||||||
@ -938,7 +938,7 @@ static int parse_progunit (hawk_t* hawk)
|
|||||||
|
|
||||||
if (get_token(hawk) <= -1) return -1;
|
if (get_token(hawk) <= -1) return -1;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->tree.ngbls == HAWK_ARR_SIZE(hawk->parse.gbls));
|
HAWK_ASSERT(hawk->tree.ngbls == HAWK_ARR_SIZE(hawk->parse.gbls));
|
||||||
ngbls = hawk->tree.ngbls;
|
ngbls = hawk->tree.ngbls;
|
||||||
if (collect_globals(hawk) == HAWK_NULL)
|
if (collect_globals(hawk) == HAWK_NULL)
|
||||||
{
|
{
|
||||||
@ -1229,7 +1229,7 @@ static int parse_progunit (hawk_t* hawk)
|
|||||||
ptn = parse_expr_withdc(hawk, &eloc);
|
ptn = parse_expr_withdc(hawk, &eloc);
|
||||||
if (ptn == HAWK_NULL) return -1;
|
if (ptn == HAWK_NULL) return -1;
|
||||||
|
|
||||||
HAWK_ASSERT (ptn->next == HAWK_NULL);
|
HAWK_ASSERT(ptn->next == HAWK_NULL);
|
||||||
|
|
||||||
if (MATCH(hawk,TOK_COMMA))
|
if (MATCH(hawk,TOK_COMMA))
|
||||||
{
|
{
|
||||||
@ -1328,7 +1328,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk)
|
|||||||
const hawk_ooch_t* redobj;
|
const hawk_ooch_t* redobj;
|
||||||
|
|
||||||
/* eat up the keyword 'function' and get the next token */
|
/* eat up the keyword 'function' and get the next token */
|
||||||
HAWK_ASSERT (MATCH(hawk,TOK_FUNCTION));
|
HAWK_ASSERT(MATCH(hawk,TOK_FUNCTION));
|
||||||
if (get_token(hawk) <= -1) return HAWK_NULL;
|
if (get_token(hawk) <= -1) return HAWK_NULL;
|
||||||
|
|
||||||
/* check if an identifier is in place */
|
/* check if an identifier is in place */
|
||||||
@ -1380,7 +1380,7 @@ static hawk_nde_t* parse_function (hawk_t* hawk)
|
|||||||
if (get_token(hawk) <= -1) goto oops;
|
if (get_token(hawk) <= -1) goto oops;
|
||||||
|
|
||||||
/* make sure that parameter table is empty */
|
/* make sure that parameter table is empty */
|
||||||
HAWK_ASSERT (HAWK_ARR_SIZE(hawk->parse.params) == 0);
|
HAWK_ASSERT(HAWK_ARR_SIZE(hawk->parse.params) == 0);
|
||||||
|
|
||||||
/* read parameter list */
|
/* read parameter list */
|
||||||
if (MATCH(hawk,TOK_RPAREN))
|
if (MATCH(hawk,TOK_RPAREN))
|
||||||
@ -1586,7 +1586,7 @@ static hawk_nde_t* parse_begin (hawk_t* hawk)
|
|||||||
hawk_loc_t xloc;
|
hawk_loc_t xloc;
|
||||||
|
|
||||||
xloc = hawk->tok.loc;
|
xloc = hawk->tok.loc;
|
||||||
HAWK_ASSERT (MATCH(hawk,TOK_LBRACE));
|
HAWK_ASSERT(MATCH(hawk,TOK_LBRACE));
|
||||||
|
|
||||||
if (get_token(hawk) <= -1) return HAWK_NULL;
|
if (get_token(hawk) <= -1) return HAWK_NULL;
|
||||||
nde = parse_block_dc(hawk, &xloc, 1);
|
nde = parse_block_dc(hawk, &xloc, 1);
|
||||||
@ -1612,7 +1612,7 @@ static hawk_nde_t* parse_end (hawk_t* hawk)
|
|||||||
hawk_loc_t xloc;
|
hawk_loc_t xloc;
|
||||||
|
|
||||||
xloc = hawk->tok.loc;
|
xloc = hawk->tok.loc;
|
||||||
HAWK_ASSERT (MATCH(hawk,TOK_LBRACE));
|
HAWK_ASSERT(MATCH(hawk,TOK_LBRACE));
|
||||||
|
|
||||||
if (get_token(hawk) <= -1) return HAWK_NULL;
|
if (get_token(hawk) <= -1) return HAWK_NULL;
|
||||||
nde = parse_block_dc(hawk, &xloc, 1);
|
nde = parse_block_dc(hawk, &xloc, 1);
|
||||||
@ -1641,7 +1641,7 @@ static hawk_chain_t* parse_action_block (hawk_t* hawk, hawk_nde_t* ptn, int bloc
|
|||||||
if (blockless) nde = HAWK_NULL;
|
if (blockless) nde = HAWK_NULL;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
HAWK_ASSERT (MATCH(hawk,TOK_LBRACE));
|
HAWK_ASSERT(MATCH(hawk,TOK_LBRACE));
|
||||||
if (get_token(hawk) <= -1) return HAWK_NULL;
|
if (get_token(hawk) <= -1) return HAWK_NULL;
|
||||||
nde = parse_block_dc(hawk, &xloc, 1);
|
nde = parse_block_dc(hawk, &xloc, 1);
|
||||||
if (HAWK_UNLIKELY(!nde)) return HAWK_NULL;
|
if (HAWK_UNLIKELY(!nde)) return HAWK_NULL;
|
||||||
@ -1856,7 +1856,7 @@ static hawk_nde_t* parse_block (hawk_t* hawk, const hawk_loc_t* xloc, int flags)
|
|||||||
/* migrate all block-local variables to the outermost block */
|
/* migrate all block-local variables to the outermost block */
|
||||||
if (flags & PARSE_BLOCK_FLAG_IS_TOP)
|
if (flags & PARSE_BLOCK_FLAG_IS_TOP)
|
||||||
{
|
{
|
||||||
HAWK_ASSERT (nlcls_outer == 0 && nlcls_max == 0);
|
HAWK_ASSERT(nlcls_outer == 0 && nlcls_max == 0);
|
||||||
block->nlcls = hawk->parse.nlcls_max - nlcls_outer;
|
block->nlcls = hawk->parse.nlcls_max - nlcls_outer;
|
||||||
hawk->parse.nlcls_max = nlcls_max; /* restore */
|
hawk->parse.nlcls_max = nlcls_max; /* restore */
|
||||||
}
|
}
|
||||||
@ -1897,7 +1897,7 @@ int hawk_initgbls (hawk_t* hawk)
|
|||||||
|
|
||||||
/* hawk_initgbls is not generic-purpose. call this from
|
/* hawk_initgbls is not generic-purpose. call this from
|
||||||
* hawk_open only. */
|
* hawk_open only. */
|
||||||
HAWK_ASSERT (hawk->tree.ngbls_base == 0 && hawk->tree.ngbls == 0);
|
HAWK_ASSERT(hawk->tree.ngbls_base == 0 && hawk->tree.ngbls == 0);
|
||||||
|
|
||||||
hawk->tree.ngbls_base = 0;
|
hawk->tree.ngbls_base = 0;
|
||||||
hawk->tree.ngbls = 0;
|
hawk->tree.ngbls = 0;
|
||||||
@ -1909,13 +1909,13 @@ int hawk_initgbls (hawk_t* hawk)
|
|||||||
g = hawk_arr_insert(hawk->parse.gbls, HAWK_ARR_SIZE(hawk->parse.gbls), (hawk_ooch_t*)gtab[id].name, gtab[id].namelen);
|
g = hawk_arr_insert(hawk->parse.gbls, HAWK_ARR_SIZE(hawk->parse.gbls), (hawk_ooch_t*)gtab[id].name, gtab[id].namelen);
|
||||||
if (g == HAWK_ARR_NIL) return -1;
|
if (g == HAWK_ARR_NIL) return -1;
|
||||||
|
|
||||||
HAWK_ASSERT ((int)g == id);
|
HAWK_ASSERT((int)g == id);
|
||||||
|
|
||||||
hawk->tree.ngbls_base++;
|
hawk->tree.ngbls_base++;
|
||||||
hawk->tree.ngbls++;
|
hawk->tree.ngbls++;
|
||||||
}
|
}
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->tree.ngbls_base == HAWK_MAX_GBL_ID-HAWK_MIN_GBL_ID+1);
|
HAWK_ASSERT(hawk->tree.ngbls_base == HAWK_MAX_GBL_ID-HAWK_MIN_GBL_ID+1);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1923,7 +1923,7 @@ static void adjust_static_globals (hawk_t* hawk)
|
|||||||
{
|
{
|
||||||
int id;
|
int id;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->tree.ngbls_base >= HAWK_MAX_GBL_ID - HAWK_MAX_GBL_ID + 1);
|
HAWK_ASSERT(hawk->tree.ngbls_base >= HAWK_MAX_GBL_ID - HAWK_MAX_GBL_ID + 1);
|
||||||
|
|
||||||
for (id = HAWK_MIN_GBL_ID; id <= HAWK_MAX_GBL_ID; id++)
|
for (id = HAWK_MIN_GBL_ID; id <= HAWK_MAX_GBL_ID; id++)
|
||||||
{
|
{
|
||||||
@ -2026,14 +2026,14 @@ static int add_global (hawk_t* hawk, const hawk_oocs_t* name, hawk_loc_t* xloc,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
HAWK_ASSERT (ngbls == HAWK_ARR_SIZE(hawk->parse.gbls) - 1);
|
HAWK_ASSERT(ngbls == HAWK_ARR_SIZE(hawk->parse.gbls) - 1);
|
||||||
|
|
||||||
/* the disabled item is inserted normally but
|
/* the disabled item is inserted normally but
|
||||||
* the name length is reset to zero. */
|
* the name length is reset to zero. */
|
||||||
if (disabled) HAWK_ARR_DLEN(hawk->parse.gbls,ngbls) = 0;
|
if (disabled) HAWK_ARR_DLEN(hawk->parse.gbls,ngbls) = 0;
|
||||||
|
|
||||||
hawk->tree.ngbls = HAWK_ARR_SIZE (hawk->parse.gbls);
|
hawk->tree.ngbls = HAWK_ARR_SIZE (hawk->parse.gbls);
|
||||||
HAWK_ASSERT (ngbls == hawk->tree.ngbls-1);
|
HAWK_ASSERT(ngbls == hawk->tree.ngbls-1);
|
||||||
|
|
||||||
/* return the id which is the index to the gbl table. */
|
/* return the id which is the index to the gbl table. */
|
||||||
return (int)ngbls;
|
return (int)ngbls;
|
||||||
@ -2166,7 +2166,7 @@ int hawk_delgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name)
|
|||||||
hawk->parse.gbls.buf[n].name.len = 0;
|
hawk->parse.gbls.buf[n].name.len = 0;
|
||||||
*/
|
*/
|
||||||
n = hawk_arr_uplete(hawk->parse.gbls, n, 1);
|
n = hawk_arr_uplete(hawk->parse.gbls, n, 1);
|
||||||
HAWK_ASSERT (n == 1);
|
HAWK_ASSERT(n == 1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2217,7 +2217,7 @@ int hawk_delgblwithucstr (hawk_t* hawk, const hawk_uch_t* name)
|
|||||||
hawk->parse.gbls.buf[n].name.len = 0;
|
hawk->parse.gbls.buf[n].name.len = 0;
|
||||||
*/
|
*/
|
||||||
n = hawk_arr_uplete(hawk->parse.gbls, n, 1);
|
n = hawk_arr_uplete(hawk->parse.gbls, n, 1);
|
||||||
HAWK_ASSERT (n == 1);
|
HAWK_ASSERT(n == 1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -2942,7 +2942,7 @@ static hawk_nde_t* parse_dowhile (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
hawk_nde_while_t* nde;
|
hawk_nde_while_t* nde;
|
||||||
hawk_loc_t ploc;
|
hawk_loc_t ploc;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->ptok.type == TOK_DO);
|
HAWK_ASSERT(hawk->ptok.type == TOK_DO);
|
||||||
|
|
||||||
ploc = hawk->tok.loc;
|
ploc = hawk->tok.loc;
|
||||||
body = parse_statement(hawk, &ploc);
|
body = parse_statement(hawk, &ploc);
|
||||||
@ -2998,7 +2998,7 @@ static hawk_nde_t* parse_dowhile (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
oops:
|
oops:
|
||||||
if (body) hawk_clrpt(hawk, body);
|
if (body) hawk_clrpt(hawk, body);
|
||||||
if (test) hawk_clrpt(hawk, test);
|
if (test) hawk_clrpt(hawk, test);
|
||||||
HAWK_ASSERT (nde == HAWK_NULL);
|
HAWK_ASSERT(nde == HAWK_NULL);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3006,7 +3006,7 @@ static hawk_nde_t* parse_break (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
{
|
{
|
||||||
hawk_nde_break_t* nde;
|
hawk_nde_break_t* nde;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->ptok.type == TOK_BREAK);
|
HAWK_ASSERT(hawk->ptok.type == TOK_BREAK);
|
||||||
if (hawk->parse.depth.loop <= 0 && hawk->parse.depth.swtch <= 0)
|
if (hawk->parse.depth.loop <= 0 && hawk->parse.depth.swtch <= 0)
|
||||||
{
|
{
|
||||||
hawk_seterrnum(hawk, xloc, HAWK_EBREAK);
|
hawk_seterrnum(hawk, xloc, HAWK_EBREAK);
|
||||||
@ -3030,7 +3030,7 @@ static hawk_nde_t* parse_continue (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
{
|
{
|
||||||
hawk_nde_continue_t* nde;
|
hawk_nde_continue_t* nde;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->ptok.type == TOK_CONTINUE);
|
HAWK_ASSERT(hawk->ptok.type == TOK_CONTINUE);
|
||||||
if (hawk->parse.depth.loop <= 0)
|
if (hawk->parse.depth.loop <= 0)
|
||||||
{
|
{
|
||||||
hawk_seterrnum(hawk, xloc, HAWK_ECONTINUE);
|
hawk_seterrnum(hawk, xloc, HAWK_ECONTINUE);
|
||||||
@ -3055,7 +3055,7 @@ static hawk_nde_t* parse_return (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
hawk_nde_return_t* nde;
|
hawk_nde_return_t* nde;
|
||||||
hawk_nde_t* val;
|
hawk_nde_t* val;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->ptok.type == TOK_RETURN);
|
HAWK_ASSERT(hawk->ptok.type == TOK_RETURN);
|
||||||
|
|
||||||
nde = (hawk_nde_return_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde));
|
nde = (hawk_nde_return_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde));
|
||||||
if (HAWK_UNLIKELY(!nde))
|
if (HAWK_UNLIKELY(!nde))
|
||||||
@ -3094,7 +3094,7 @@ static hawk_nde_t* parse_exit (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
hawk_nde_exit_t* nde;
|
hawk_nde_exit_t* nde;
|
||||||
hawk_nde_t* val;
|
hawk_nde_t* val;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->ptok.type == TOK_EXIT || hawk->ptok.type == TOK_XABORT);
|
HAWK_ASSERT(hawk->ptok.type == TOK_EXIT || hawk->ptok.type == TOK_XABORT);
|
||||||
|
|
||||||
nde = (hawk_nde_exit_t*) hawk_callocmem(hawk, HAWK_SIZEOF(*nde));
|
nde = (hawk_nde_exit_t*) hawk_callocmem(hawk, HAWK_SIZEOF(*nde));
|
||||||
if (nde == HAWK_NULL)
|
if (nde == HAWK_NULL)
|
||||||
@ -3133,7 +3133,7 @@ static hawk_nde_t* parse_next (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
{
|
{
|
||||||
hawk_nde_next_t* nde;
|
hawk_nde_next_t* nde;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->ptok.type == TOK_NEXT);
|
HAWK_ASSERT(hawk->ptok.type == TOK_NEXT);
|
||||||
|
|
||||||
if (hawk->parse.id.block == PARSE_BEGIN_BLOCK)
|
if (hawk->parse.id.block == PARSE_BEGIN_BLOCK)
|
||||||
{
|
{
|
||||||
@ -3195,7 +3195,7 @@ static hawk_nde_t* parse_delete (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
hawk_nde_type_t type;
|
hawk_nde_type_t type;
|
||||||
int inparen = 0;
|
int inparen = 0;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->ptok.type == TOK_DELETE || hawk->ptok.type == TOK_XRESET);
|
HAWK_ASSERT(hawk->ptok.type == TOK_DELETE || hawk->ptok.type == TOK_XRESET);
|
||||||
|
|
||||||
type = (hawk->ptok.type == TOK_DELETE)? HAWK_NDE_DELETE: HAWK_NDE_RESET;
|
type = (hawk->ptok.type == TOK_DELETE)? HAWK_NDE_DELETE: HAWK_NDE_RESET;
|
||||||
|
|
||||||
@ -3260,7 +3260,7 @@ static hawk_nde_t* parse_print (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
hawk_nde_type_t type;
|
hawk_nde_type_t type;
|
||||||
hawk_loc_t eloc;
|
hawk_loc_t eloc;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->ptok.type == TOK_PRINT || hawk->ptok.type == TOK_PRINTF);
|
HAWK_ASSERT(hawk->ptok.type == TOK_PRINT || hawk->ptok.type == TOK_PRINTF);
|
||||||
|
|
||||||
type = (hawk->ptok.type == TOK_PRINT)? HAWK_NDE_PRINT: HAWK_NDE_PRINTF;
|
type = (hawk->ptok.type == TOK_PRINT)? HAWK_NDE_PRINT: HAWK_NDE_PRINTF;
|
||||||
|
|
||||||
@ -3786,7 +3786,7 @@ static hawk_nde_t* parse_expr (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
HAWK_ASSERT (x->next == HAWK_NULL);
|
HAWK_ASSERT(x->next == HAWK_NULL);
|
||||||
if (!is_var(x) && x->type != HAWK_NDE_POS)
|
if (!is_var(x) && x->type != HAWK_NDE_POS)
|
||||||
{
|
{
|
||||||
hawk_clrpt(hawk, x);
|
hawk_clrpt(hawk, x);
|
||||||
@ -4599,7 +4599,7 @@ static hawk_nde_t* parse_unary (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
HAWK_ASSERT (left->type == HAWK_NDE_FLT);
|
HAWK_ASSERT(left->type == HAWK_NDE_FLT);
|
||||||
hawk_clrpt(hawk, left);
|
hawk_clrpt(hawk, left);
|
||||||
return new_int_node(hawk, folded.l, xloc);
|
return new_int_node(hawk, folded.l, xloc);
|
||||||
}
|
}
|
||||||
@ -4612,7 +4612,7 @@ static hawk_nde_t* parse_unary (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
HAWK_ASSERT (left->type == HAWK_NDE_INT);
|
HAWK_ASSERT(left->type == HAWK_NDE_INT);
|
||||||
hawk_clrpt(hawk, left);
|
hawk_clrpt(hawk, left);
|
||||||
return new_flt_node(hawk, folded.r, xloc);
|
return new_flt_node(hawk, folded.r, xloc);
|
||||||
}
|
}
|
||||||
@ -4749,7 +4749,7 @@ static hawk_nde_t* parse_increment (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
}
|
}
|
||||||
else /*if (opcode2 != -1)*/
|
else /*if (opcode2 != -1)*/
|
||||||
{
|
{
|
||||||
HAWK_ASSERT (opcode2 != -1);
|
HAWK_ASSERT(opcode2 != -1);
|
||||||
|
|
||||||
/* postfix increment operator */
|
/* postfix increment operator */
|
||||||
type = HAWK_NDE_EXP_INCPST;
|
type = HAWK_NDE_EXP_INCPST;
|
||||||
@ -4833,7 +4833,7 @@ static HAWK_INLINE int isfunname (hawk_t* hawk, const hawk_oocs_t* name, hawk_fu
|
|||||||
if (fun)
|
if (fun)
|
||||||
{
|
{
|
||||||
*fun = (hawk_fun_t*)HAWK_HTB_VPTR(pair);
|
*fun = (hawk_fun_t*)HAWK_HTB_VPTR(pair);
|
||||||
HAWK_ASSERT (*fun != HAWK_NULL);
|
HAWK_ASSERT(*fun != HAWK_NULL);
|
||||||
}
|
}
|
||||||
return FNTYPE_FUN;
|
return FNTYPE_FUN;
|
||||||
}
|
}
|
||||||
@ -4879,7 +4879,7 @@ static hawk_nde_t* parse_primary_char (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
return (hawk_nde_t*)nde;
|
return (hawk_nde_t*)nde;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
HAWK_ASSERT (nde != HAWK_NULL);
|
HAWK_ASSERT(nde != HAWK_NULL);
|
||||||
hawk_freemem(hawk, nde);
|
hawk_freemem(hawk, nde);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
@ -4904,7 +4904,7 @@ static hawk_nde_t* parse_primary_bchr (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
return (hawk_nde_t*)nde;
|
return (hawk_nde_t*)nde;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
HAWK_ASSERT (nde != HAWK_NULL);
|
HAWK_ASSERT(nde != HAWK_NULL);
|
||||||
hawk_freemem(hawk, nde);
|
hawk_freemem(hawk, nde);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
@ -4921,7 +4921,7 @@ static hawk_nde_t* parse_primary_int (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
);
|
);
|
||||||
if (HAWK_UNLIKELY(!nde)) return HAWK_NULL;
|
if (HAWK_UNLIKELY(!nde)) return HAWK_NULL;
|
||||||
|
|
||||||
HAWK_ASSERT (HAWK_OOECS_LEN(hawk->tok.name) == hawk_count_oocstr(HAWK_OOECS_PTR(hawk->tok.name)));
|
HAWK_ASSERT(HAWK_OOECS_LEN(hawk->tok.name) == hawk_count_oocstr(HAWK_OOECS_PTR(hawk->tok.name)));
|
||||||
|
|
||||||
/* remember the literal in the original form */
|
/* remember the literal in the original form */
|
||||||
nde->len = HAWK_OOECS_LEN(hawk->tok.name);
|
nde->len = HAWK_OOECS_LEN(hawk->tok.name);
|
||||||
@ -4931,7 +4931,7 @@ static hawk_nde_t* parse_primary_int (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
return (hawk_nde_t*)nde;
|
return (hawk_nde_t*)nde;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
HAWK_ASSERT (nde != HAWK_NULL);
|
HAWK_ASSERT(nde != HAWK_NULL);
|
||||||
if (nde->str) hawk_freemem(hawk, nde->str);
|
if (nde->str) hawk_freemem(hawk, nde->str);
|
||||||
hawk_freemem(hawk, nde);
|
hawk_freemem(hawk, nde);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
@ -4949,7 +4949,7 @@ static hawk_nde_t* parse_primary_flt (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
);
|
);
|
||||||
if (HAWK_UNLIKELY(!nde)) return HAWK_NULL;
|
if (HAWK_UNLIKELY(!nde)) return HAWK_NULL;
|
||||||
|
|
||||||
HAWK_ASSERT (
|
HAWK_ASSERT(
|
||||||
HAWK_OOECS_LEN(hawk->tok.name) ==
|
HAWK_OOECS_LEN(hawk->tok.name) ==
|
||||||
hawk_count_oocstr(HAWK_OOECS_PTR(hawk->tok.name)));
|
hawk_count_oocstr(HAWK_OOECS_PTR(hawk->tok.name)));
|
||||||
|
|
||||||
@ -4961,7 +4961,7 @@ static hawk_nde_t* parse_primary_flt (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
return (hawk_nde_t*)nde;
|
return (hawk_nde_t*)nde;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
HAWK_ASSERT (nde != HAWK_NULL);
|
HAWK_ASSERT(nde != HAWK_NULL);
|
||||||
if (nde->str) hawk_freemem(hawk, nde->str);
|
if (nde->str) hawk_freemem(hawk, nde->str);
|
||||||
hawk_freemem(hawk, nde);
|
hawk_freemem(hawk, nde);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
@ -4987,7 +4987,7 @@ static hawk_nde_t* parse_primary_str (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
return (hawk_nde_t*)nde;
|
return (hawk_nde_t*)nde;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
HAWK_ASSERT (nde != HAWK_NULL);
|
HAWK_ASSERT(nde != HAWK_NULL);
|
||||||
if (nde->ptr) hawk_freemem(hawk, nde->ptr);
|
if (nde->ptr) hawk_freemem(hawk, nde->ptr);
|
||||||
hawk_freemem(hawk, nde);
|
hawk_freemem(hawk, nde);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
@ -5037,7 +5037,7 @@ static hawk_nde_t* parse_primary_mbs (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
return (hawk_nde_t*)nde;
|
return (hawk_nde_t*)nde;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
HAWK_ASSERT (nde != HAWK_NULL);
|
HAWK_ASSERT(nde != HAWK_NULL);
|
||||||
if (nde->ptr) hawk_freemem(hawk, nde->ptr);
|
if (nde->ptr) hawk_freemem(hawk, nde->ptr);
|
||||||
hawk_freemem(hawk, nde);
|
hawk_freemem(hawk, nde);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
@ -5062,7 +5062,7 @@ static hawk_nde_t* parse_primary_rex (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
SET_TOKEN_TYPE(hawk, &hawk->tok, TOK_REX);
|
SET_TOKEN_TYPE(hawk, &hawk->tok, TOK_REX);
|
||||||
if (get_rexstr(hawk, &hawk->tok) <= -1) return HAWK_NULL;
|
if (get_rexstr(hawk, &hawk->tok) <= -1) return HAWK_NULL;
|
||||||
|
|
||||||
HAWK_ASSERT (MATCH(hawk,TOK_REX));
|
HAWK_ASSERT(MATCH(hawk,TOK_REX));
|
||||||
|
|
||||||
nde = (hawk_nde_rex_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde));
|
nde = (hawk_nde_rex_t*)hawk_callocmem(hawk, HAWK_SIZEOF(*nde));
|
||||||
if (nde == HAWK_NULL)
|
if (nde == HAWK_NULL)
|
||||||
@ -5088,7 +5088,7 @@ static hawk_nde_t* parse_primary_rex (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
return (hawk_nde_t*)nde;
|
return (hawk_nde_t*)nde;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
HAWK_ASSERT (nde != HAWK_NULL);
|
HAWK_ASSERT(nde != HAWK_NULL);
|
||||||
if (nde->code[0]) hawk_freerex(hawk, nde->code[0], nde->code[1]);
|
if (nde->code[0]) hawk_freerex(hawk, nde->code[0], nde->code[1]);
|
||||||
if (nde->str.ptr) hawk_freemem(hawk, nde->str.ptr);
|
if (nde->str.ptr) hawk_freemem(hawk, nde->str.ptr);
|
||||||
hawk_freemem(hawk, nde);
|
hawk_freemem(hawk, nde);
|
||||||
@ -5146,7 +5146,7 @@ static hawk_nde_t* parse_primary_lparen (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
|
|
||||||
/* parse subsequent expressions separated by a comma, if any */
|
/* parse subsequent expressions separated by a comma, if any */
|
||||||
last = nde;
|
last = nde;
|
||||||
HAWK_ASSERT (last->next == HAWK_NULL);
|
HAWK_ASSERT(last->next == HAWK_NULL);
|
||||||
|
|
||||||
while (MATCH(hawk,TOK_COMMA))
|
while (MATCH(hawk,TOK_COMMA))
|
||||||
{
|
{
|
||||||
@ -5162,7 +5162,7 @@ static hawk_nde_t* parse_primary_lparen (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
tmp = parse_expr_withdc(hawk, &eloc);
|
tmp = parse_expr_withdc(hawk, &eloc);
|
||||||
if (HAWK_UNLIKELY(!tmp)) goto oops;
|
if (HAWK_UNLIKELY(!tmp)) goto oops;
|
||||||
|
|
||||||
HAWK_ASSERT (tmp->next == HAWK_NULL);
|
HAWK_ASSERT(tmp->next == HAWK_NULL);
|
||||||
last->next = tmp;
|
last->next = tmp;
|
||||||
last = tmp;
|
last = tmp;
|
||||||
}
|
}
|
||||||
@ -5329,7 +5329,7 @@ static hawk_nde_t* parse_primary_xnil (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
return (hawk_nde_t*)nde;
|
return (hawk_nde_t*)nde;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
HAWK_ASSERT (nde != HAWK_NULL);
|
HAWK_ASSERT(nde != HAWK_NULL);
|
||||||
hawk_freemem(hawk, nde);
|
hawk_freemem(hawk, nde);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
@ -5348,7 +5348,7 @@ static hawk_nde_t* parse_primary_xarg (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
* function but ARGC is the number of arguments including the program name so ARGC is greater
|
* function but ARGC is the number of arguments including the program name so ARGC is greater
|
||||||
* than @argc by 1. */
|
* than @argc by 1. */
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->tok.type == TOK_XARGV || hawk->tok.type == TOK_XARGC);
|
HAWK_ASSERT(hawk->tok.type == TOK_XARGV || hawk->tok.type == TOK_XARGC);
|
||||||
|
|
||||||
if (hawk->tok.type == TOK_XARGV)
|
if (hawk->tok.type == TOK_XARGV)
|
||||||
{
|
{
|
||||||
@ -5692,7 +5692,7 @@ static int dup_ident_and_get_next (hawk_t* hawk, const hawk_loc_t* xloc, hawk_oo
|
|||||||
{
|
{
|
||||||
int nsegs = 0;
|
int nsegs = 0;
|
||||||
|
|
||||||
HAWK_ASSERT (MATCH(hawk,TOK_IDENT));
|
HAWK_ASSERT(MATCH(hawk,TOK_IDENT));
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -5786,7 +5786,7 @@ static hawk_nde_t* parse_primary_ident_noseg (hawk_t* hawk, const hawk_loc_t* xl
|
|||||||
*/
|
*/
|
||||||
hawk_oocs_t segs[2];
|
hawk_oocs_t segs[2];
|
||||||
|
|
||||||
HAWK_ASSERT (fnc->spec.arg.spec != HAWK_NULL);
|
HAWK_ASSERT(fnc->spec.arg.spec != HAWK_NULL);
|
||||||
|
|
||||||
segs[0].ptr = (hawk_ooch_t*)fnc->spec.arg.spec;
|
segs[0].ptr = (hawk_ooch_t*)fnc->spec.arg.spec;
|
||||||
segs[0].len = hawk_count_oocstr(fnc->spec.arg.spec);
|
segs[0].len = hawk_count_oocstr(fnc->spec.arg.spec);
|
||||||
@ -5834,12 +5834,12 @@ static hawk_nde_t* parse_primary_ident_noseg (hawk_t* hawk, const hawk_loc_t* xl
|
|||||||
|
|
||||||
if (fntype)
|
if (fntype)
|
||||||
{
|
{
|
||||||
HAWK_ASSERT (fntype == FNTYPE_FUN);
|
HAWK_ASSERT(fntype == FNTYPE_FUN);
|
||||||
|
|
||||||
if (MATCH(hawk,TOK_LPAREN))
|
if (MATCH(hawk,TOK_LPAREN))
|
||||||
{
|
{
|
||||||
/* must be a function name */
|
/* must be a function name */
|
||||||
HAWK_ASSERT (hawk_htb_search(hawk->parse.named, name->ptr, name->len) == HAWK_NULL);
|
HAWK_ASSERT(hawk_htb_search(hawk->parse.named, name->ptr, name->len) == HAWK_NULL);
|
||||||
nde = parse_fncall(hawk, name, HAWK_NULL, xloc, 0);
|
nde = parse_fncall(hawk, name, HAWK_NULL, xloc, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -6024,7 +6024,7 @@ static hawk_nde_t* parse_primary_ident (hawk_t* hawk, const hawk_loc_t* xloc)
|
|||||||
hawk_oocs_t name[2]; /* TODO: support more than 2 segments??? */
|
hawk_oocs_t name[2]; /* TODO: support more than 2 segments??? */
|
||||||
int nsegs;
|
int nsegs;
|
||||||
|
|
||||||
HAWK_ASSERT (MATCH(hawk,TOK_IDENT));
|
HAWK_ASSERT(MATCH(hawk,TOK_IDENT));
|
||||||
|
|
||||||
nsegs = dup_ident_and_get_next(hawk, xloc, name, HAWK_COUNTOF(name));
|
nsegs = dup_ident_and_get_next(hawk, xloc, name, HAWK_COUNTOF(name));
|
||||||
if (nsegs <= -1) return HAWK_NULL;
|
if (nsegs <= -1) return HAWK_NULL;
|
||||||
@ -6108,7 +6108,7 @@ more_idx:
|
|||||||
if (!idx)
|
if (!idx)
|
||||||
{
|
{
|
||||||
/* this is the first item */
|
/* this is the first item */
|
||||||
HAWK_ASSERT (last == HAWK_NULL);
|
HAWK_ASSERT(last == HAWK_NULL);
|
||||||
idx = tmp;
|
idx = tmp;
|
||||||
last = tmp;
|
last = tmp;
|
||||||
}
|
}
|
||||||
@ -6121,7 +6121,7 @@ more_idx:
|
|||||||
}
|
}
|
||||||
while (MATCH(hawk,TOK_COMMA));
|
while (MATCH(hawk,TOK_COMMA));
|
||||||
|
|
||||||
HAWK_ASSERT (idx != HAWK_NULL);
|
HAWK_ASSERT(idx != HAWK_NULL);
|
||||||
|
|
||||||
if (!MATCH(hawk,TOK_RBRACK))
|
if (!MATCH(hawk,TOK_RBRACK))
|
||||||
{
|
{
|
||||||
@ -6150,8 +6150,8 @@ more_idx:
|
|||||||
}
|
}
|
||||||
tmp->type = HAWK_NDE_NULL;
|
tmp->type = HAWK_NDE_NULL;
|
||||||
|
|
||||||
HAWK_ASSERT (idx != HAWK_NULL);
|
HAWK_ASSERT(idx != HAWK_NULL);
|
||||||
HAWK_ASSERT (last != HAWK_NULL);
|
HAWK_ASSERT(last != HAWK_NULL);
|
||||||
|
|
||||||
last->next = tmp;
|
last->next = tmp;
|
||||||
last = tmp;
|
last = tmp;
|
||||||
@ -6227,7 +6227,7 @@ more_idx:
|
|||||||
goto exit_func;
|
goto exit_func;
|
||||||
}
|
}
|
||||||
|
|
||||||
HAWK_ASSERT (fnname == 0);
|
HAWK_ASSERT(fnname == 0);
|
||||||
|
|
||||||
nde->type = HAWK_NDE_NAMEDIDX;
|
nde->type = HAWK_NDE_NAMEDIDX;
|
||||||
nde->loc = *xloc;
|
nde->loc = *xloc;
|
||||||
@ -6373,7 +6373,7 @@ static int get_number (hawk_t* hawk, hawk_tok_t* tok)
|
|||||||
{
|
{
|
||||||
hawk_ooci_t c;
|
hawk_ooci_t c;
|
||||||
|
|
||||||
HAWK_ASSERT (HAWK_OOECS_LEN(tok->name) == 0);
|
HAWK_ASSERT(HAWK_OOECS_LEN(tok->name) == 0);
|
||||||
SET_TOKEN_TYPE(hawk, tok, TOK_INT);
|
SET_TOKEN_TYPE(hawk, tok, TOK_INT);
|
||||||
|
|
||||||
c = hawk->sio.last.c;
|
c = hawk->sio.last.c;
|
||||||
@ -7443,7 +7443,7 @@ static int deparse (hawk_t* hawk)
|
|||||||
hawk_ooi_t op;
|
hawk_ooi_t op;
|
||||||
hawk_oocs_t kw;
|
hawk_oocs_t kw;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->sio.outf != HAWK_NULL);
|
HAWK_ASSERT(hawk->sio.outf != HAWK_NULL);
|
||||||
|
|
||||||
HAWK_MEMSET (&hawk->sio.arg, 0, HAWK_SIZEOF(hawk->sio.arg));
|
HAWK_MEMSET (&hawk->sio.arg, 0, HAWK_SIZEOF(hawk->sio.arg));
|
||||||
|
|
||||||
@ -7466,7 +7466,7 @@ static int deparse (hawk_t* hawk)
|
|||||||
{
|
{
|
||||||
hawk_oow_t i, len;
|
hawk_oow_t i, len;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk->tree.ngbls > 0);
|
HAWK_ASSERT(hawk->tree.ngbls > 0);
|
||||||
|
|
||||||
hawk_getkwname(hawk, HAWK_KWID_XGLOBAL, &kw);
|
hawk_getkwname(hawk, HAWK_KWID_XGLOBAL, &kw);
|
||||||
if (hawk_putsrcoochars(hawk, kw.ptr, kw.len) <= -1 || hawk_putsrcoocstr(hawk, HAWK_T(" ")) <= -1) EXIT_DEPARSE ();
|
if (hawk_putsrcoochars(hawk, kw.ptr, kw.len) <= -1 || hawk_putsrcoocstr(hawk, HAWK_T(" ")) <= -1) EXIT_DEPARSE ();
|
||||||
@ -7481,7 +7481,7 @@ static int deparse (hawk_t* hawk)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
len = hawk_int_to_oocstr((hawk_int_t)i, 10, HAWK_T("__g"), tmp, HAWK_COUNTOF(tmp));
|
len = hawk_int_to_oocstr((hawk_int_t)i, 10, HAWK_T("__g"), tmp, HAWK_COUNTOF(tmp));
|
||||||
HAWK_ASSERT (len != (hawk_oow_t)-1);
|
HAWK_ASSERT(len != (hawk_oow_t)-1);
|
||||||
if (hawk_putsrcoochars(hawk, tmp, len) <= -1) EXIT_DEPARSE ();
|
if (hawk_putsrcoochars(hawk, tmp, len) <= -1) EXIT_DEPARSE ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7496,7 +7496,7 @@ static int deparse (hawk_t* hawk)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
len = hawk_int_to_oocstr((hawk_int_t)i, 10, HAWK_T("__g"), tmp, HAWK_COUNTOF(tmp));
|
len = hawk_int_to_oocstr((hawk_int_t)i, 10, HAWK_T("__g"), tmp, HAWK_COUNTOF(tmp));
|
||||||
HAWK_ASSERT (len != (hawk_oow_t)-1);
|
HAWK_ASSERT(len != (hawk_oow_t)-1);
|
||||||
if (hawk_putsrcoochars(hawk, tmp, len) <= -1) EXIT_DEPARSE ();
|
if (hawk_putsrcoochars(hawk, tmp, len) <= -1) EXIT_DEPARSE ();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7609,7 +7609,7 @@ static hawk_htb_walk_t deparse_func (hawk_htb_t* map, hawk_htb_pair_t* pair, voi
|
|||||||
hawk_oow_t i, n;
|
hawk_oow_t i, n;
|
||||||
hawk_oocs_t kw;
|
hawk_oocs_t kw;
|
||||||
|
|
||||||
HAWK_ASSERT (hawk_comp_oochars(HAWK_HTB_KPTR(pair), HAWK_HTB_KLEN(pair), fun->name.ptr, fun->name.len, 0) == 0);
|
HAWK_ASSERT(hawk_comp_oochars(HAWK_HTB_KPTR(pair), HAWK_HTB_KLEN(pair), fun->name.ptr, fun->name.len, 0) == 0);
|
||||||
|
|
||||||
#define PUT_C(x,c) \
|
#define PUT_C(x,c) \
|
||||||
if (put_char(x->hawk,c)==-1) { \
|
if (put_char(x->hawk,c)==-1) { \
|
||||||
@ -7637,7 +7637,7 @@ static hawk_htb_walk_t deparse_func (hawk_htb_t* map, hawk_htb_pair_t* pair, voi
|
|||||||
{
|
{
|
||||||
if (fun->argspec && i < fun->argspeclen && fun->argspec[i] == 'r') PUT_S(df, HAWK_T("&"));
|
if (fun->argspec && i < fun->argspeclen && fun->argspec[i] == 'r') PUT_S(df, HAWK_T("&"));
|
||||||
n = hawk_int_to_oocstr(i++, 10, HAWK_T("__p"), df->tmp, df->tmp_len);
|
n = hawk_int_to_oocstr(i++, 10, HAWK_T("__p"), df->tmp, df->tmp_len);
|
||||||
HAWK_ASSERT (n != (hawk_oow_t)-1);
|
HAWK_ASSERT(n != (hawk_oow_t)-1);
|
||||||
PUT_SX (df, df->tmp, n);
|
PUT_SX (df, df->tmp, n);
|
||||||
|
|
||||||
if (i >= fun->nargs) break;
|
if (i >= fun->nargs) break;
|
||||||
@ -7791,7 +7791,7 @@ static hawk_mod_t* query_module (hawk_t* hawk, const hawk_oocs_t segs[], int nse
|
|||||||
hawk_mod_data_t* mdp;
|
hawk_mod_data_t* mdp;
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
HAWK_ASSERT (nsegs == 2);
|
HAWK_ASSERT(nsegs == 2);
|
||||||
|
|
||||||
pair = hawk_rbt_search(hawk->modtab, segs[0].ptr, segs[0].len);
|
pair = hawk_rbt_search(hawk->modtab, segs[0].ptr, segs[0].len);
|
||||||
if (pair)
|
if (pair)
|
||||||
|
@ -28,6 +28,10 @@ EXTRA_DIST = $(check_SCRIPTS) $(check_ERRORS) tap.inc err.sh \
|
|||||||
|
|
||||||
check_PROGRAMS = t-001 t-002 t-003 t-004 t-005 t-006 t-007 t-008 t-009
|
check_PROGRAMS = t-001 t-002 t-003 t-004 t-005 t-006 t-007 t-008 t-009
|
||||||
|
|
||||||
|
if ENABLE_CXX
|
||||||
|
check_PROGRAMS += t-101
|
||||||
|
endif
|
||||||
|
|
||||||
t_001_SOURCES = t-001.c tap.h
|
t_001_SOURCES = t-001.c tap.h
|
||||||
t_001_CPPFLAGS = $(CPPFLAGS_COMMON)
|
t_001_CPPFLAGS = $(CPPFLAGS_COMMON)
|
||||||
|
|
||||||
@ -79,6 +83,14 @@ t_009_CFLAGS = $(CFLAGS_COMMON)
|
|||||||
t_009_LDFLAGS = $(LDFLAGS_COMMON)
|
t_009_LDFLAGS = $(LDFLAGS_COMMON)
|
||||||
t_009_LDADD = $(LIBADD_COMMON)
|
t_009_LDADD = $(LIBADD_COMMON)
|
||||||
|
|
||||||
|
if ENABLE_CXX
|
||||||
|
t_101_SOURCES = t-101.cpp tap.h
|
||||||
|
t_101_CPPFLAGS = $(CPPFLAGS_COMMON)
|
||||||
|
t_101_CFLAGS = $(CFLAGS_COMMON)
|
||||||
|
t_101_LDFLAGS = $(LDFLAGS_COMMON)
|
||||||
|
t_101_LDADD = $(LIBADD_COMMON)
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/ac/tap-driver.sh
|
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/ac/tap-driver.sh
|
||||||
TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(check_ERRORS)
|
TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(check_ERRORS)
|
||||||
|
@ -92,7 +92,8 @@ host_triplet = @host@
|
|||||||
@ENABLE_WIDE_CHAR_TRUE@am__append_1 = h-001.hawk h-002.hawk
|
@ENABLE_WIDE_CHAR_TRUE@am__append_1 = h-001.hawk h-002.hawk
|
||||||
check_PROGRAMS = t-001$(EXEEXT) t-002$(EXEEXT) t-003$(EXEEXT) \
|
check_PROGRAMS = t-001$(EXEEXT) t-002$(EXEEXT) t-003$(EXEEXT) \
|
||||||
t-004$(EXEEXT) t-005$(EXEEXT) t-006$(EXEEXT) t-007$(EXEEXT) \
|
t-004$(EXEEXT) t-005$(EXEEXT) t-006$(EXEEXT) t-007$(EXEEXT) \
|
||||||
t-008$(EXEEXT) t-009$(EXEEXT)
|
t-008$(EXEEXT) t-009$(EXEEXT) $(am__EXEEXT_1)
|
||||||
|
@ENABLE_CXX_TRUE@am__append_2 = t-101
|
||||||
subdir = t
|
subdir = t
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_sign.m4 \
|
||||||
@ -111,6 +112,7 @@ mkinstalldirs = $(install_sh) -d
|
|||||||
CONFIG_HEADER = $(top_builddir)/lib/hawk-cfg.h
|
CONFIG_HEADER = $(top_builddir)/lib/hawk-cfg.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
CONFIG_CLEAN_VPATH_FILES =
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
|
@ENABLE_CXX_TRUE@am__EXEEXT_1 = t-101$(EXEEXT)
|
||||||
am_t_001_OBJECTS = t_001-t-001.$(OBJEXT)
|
am_t_001_OBJECTS = t_001-t-001.$(OBJEXT)
|
||||||
t_001_OBJECTS = $(am_t_001_OBJECTS)
|
t_001_OBJECTS = $(am_t_001_OBJECTS)
|
||||||
t_001_LDADD = $(LDADD)
|
t_001_LDADD = $(LDADD)
|
||||||
@ -168,6 +170,13 @@ t_009_DEPENDENCIES = $(am__DEPENDENCIES_2)
|
|||||||
t_009_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
t_009_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(t_009_CFLAGS) $(CFLAGS) \
|
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(t_009_CFLAGS) $(CFLAGS) \
|
||||||
$(t_009_LDFLAGS) $(LDFLAGS) -o $@
|
$(t_009_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
am__t_101_SOURCES_DIST = t-101.cpp tap.h
|
||||||
|
@ENABLE_CXX_TRUE@am_t_101_OBJECTS = t_101-t-101.$(OBJEXT)
|
||||||
|
t_101_OBJECTS = $(am_t_101_OBJECTS)
|
||||||
|
@ENABLE_CXX_TRUE@t_101_DEPENDENCIES = $(am__DEPENDENCIES_2)
|
||||||
|
t_101_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||||
|
$(CXXFLAGS) $(t_101_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
AM_V_P = $(am__v_P_@AM_V@)
|
AM_V_P = $(am__v_P_@AM_V@)
|
||||||
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||||
am__v_P_0 = false
|
am__v_P_0 = false
|
||||||
@ -187,7 +196,8 @@ am__depfiles_remade = ./$(DEPDIR)/t_001-t-001.Po \
|
|||||||
./$(DEPDIR)/t_002-t-002.Po ./$(DEPDIR)/t_003-t-003.Po \
|
./$(DEPDIR)/t_002-t-002.Po ./$(DEPDIR)/t_003-t-003.Po \
|
||||||
./$(DEPDIR)/t_004-t-004.Po ./$(DEPDIR)/t_005-t-005.Po \
|
./$(DEPDIR)/t_004-t-004.Po ./$(DEPDIR)/t_005-t-005.Po \
|
||||||
./$(DEPDIR)/t_006-t-006.Po ./$(DEPDIR)/t_007-t-007.Po \
|
./$(DEPDIR)/t_006-t-006.Po ./$(DEPDIR)/t_007-t-007.Po \
|
||||||
./$(DEPDIR)/t_008-t-008.Po ./$(DEPDIR)/t_009-t-009.Po
|
./$(DEPDIR)/t_008-t-008.Po ./$(DEPDIR)/t_009-t-009.Po \
|
||||||
|
./$(DEPDIR)/t_101-t-101.Po
|
||||||
am__mv = mv -f
|
am__mv = mv -f
|
||||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||||
@ -207,12 +217,32 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
|
|||||||
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
|
||||||
am__v_CCLD_0 = @echo " CCLD " $@;
|
am__v_CCLD_0 = @echo " CCLD " $@;
|
||||||
am__v_CCLD_1 =
|
am__v_CCLD_1 =
|
||||||
|
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||||
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||||
|
LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
|
||||||
|
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||||
|
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||||
|
AM_V_CXX = $(am__v_CXX_@AM_V@)
|
||||||
|
am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
|
||||||
|
am__v_CXX_0 = @echo " CXX " $@;
|
||||||
|
am__v_CXX_1 =
|
||||||
|
CXXLD = $(CXX)
|
||||||
|
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||||
|
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||||
|
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
|
AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
|
||||||
|
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
|
||||||
|
am__v_CXXLD_0 = @echo " CXXLD " $@;
|
||||||
|
am__v_CXXLD_1 =
|
||||||
SOURCES = $(t_001_SOURCES) $(t_002_SOURCES) $(t_003_SOURCES) \
|
SOURCES = $(t_001_SOURCES) $(t_002_SOURCES) $(t_003_SOURCES) \
|
||||||
$(t_004_SOURCES) $(t_005_SOURCES) $(t_006_SOURCES) \
|
$(t_004_SOURCES) $(t_005_SOURCES) $(t_006_SOURCES) \
|
||||||
$(t_007_SOURCES) $(t_008_SOURCES) $(t_009_SOURCES)
|
$(t_007_SOURCES) $(t_008_SOURCES) $(t_009_SOURCES) \
|
||||||
|
$(t_101_SOURCES)
|
||||||
DIST_SOURCES = $(t_001_SOURCES) $(t_002_SOURCES) $(t_003_SOURCES) \
|
DIST_SOURCES = $(t_001_SOURCES) $(t_002_SOURCES) $(t_003_SOURCES) \
|
||||||
$(t_004_SOURCES) $(t_005_SOURCES) $(t_006_SOURCES) \
|
$(t_004_SOURCES) $(t_005_SOURCES) $(t_006_SOURCES) \
|
||||||
$(t_007_SOURCES) $(t_008_SOURCES) $(t_009_SOURCES)
|
$(t_007_SOURCES) $(t_008_SOURCES) $(t_009_SOURCES) \
|
||||||
|
$(am__t_101_SOURCES_DIST)
|
||||||
am__can_run_installinfo = \
|
am__can_run_installinfo = \
|
||||||
case $$AM_UPDATE_INFO_DIR in \
|
case $$AM_UPDATE_INFO_DIR in \
|
||||||
n|no|NO) false;; \
|
n|no|NO) false;; \
|
||||||
@ -662,6 +692,11 @@ t_009_CPPFLAGS = $(CPPFLAGS_COMMON)
|
|||||||
t_009_CFLAGS = $(CFLAGS_COMMON)
|
t_009_CFLAGS = $(CFLAGS_COMMON)
|
||||||
t_009_LDFLAGS = $(LDFLAGS_COMMON)
|
t_009_LDFLAGS = $(LDFLAGS_COMMON)
|
||||||
t_009_LDADD = $(LIBADD_COMMON)
|
t_009_LDADD = $(LIBADD_COMMON)
|
||||||
|
@ENABLE_CXX_TRUE@t_101_SOURCES = t-101.cpp tap.h
|
||||||
|
@ENABLE_CXX_TRUE@t_101_CPPFLAGS = $(CPPFLAGS_COMMON)
|
||||||
|
@ENABLE_CXX_TRUE@t_101_CFLAGS = $(CFLAGS_COMMON)
|
||||||
|
@ENABLE_CXX_TRUE@t_101_LDFLAGS = $(LDFLAGS_COMMON)
|
||||||
|
@ENABLE_CXX_TRUE@t_101_LDADD = $(LIBADD_COMMON)
|
||||||
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/ac/tap-driver.sh
|
LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/ac/tap-driver.sh
|
||||||
TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(check_ERRORS)
|
TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(check_ERRORS)
|
||||||
TEST_EXTENSIONS = .hawk .err
|
TEST_EXTENSIONS = .hawk .err
|
||||||
@ -674,7 +709,7 @@ AM_ERR_LOG_FLAGS =
|
|||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .c .err .err$(EXEEXT) .hawk .hawk$(EXEEXT) .lo .log .o .obj .trs
|
.SUFFIXES: .c .cpp .err .err$(EXEEXT) .hawk .hawk$(EXEEXT) .lo .log .o .obj .trs
|
||||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
@ -745,6 +780,10 @@ t-009$(EXEEXT): $(t_009_OBJECTS) $(t_009_DEPENDENCIES) $(EXTRA_t_009_DEPENDENCIE
|
|||||||
@rm -f t-009$(EXEEXT)
|
@rm -f t-009$(EXEEXT)
|
||||||
$(AM_V_CCLD)$(t_009_LINK) $(t_009_OBJECTS) $(t_009_LDADD) $(LIBS)
|
$(AM_V_CCLD)$(t_009_LINK) $(t_009_OBJECTS) $(t_009_LDADD) $(LIBS)
|
||||||
|
|
||||||
|
t-101$(EXEEXT): $(t_101_OBJECTS) $(t_101_DEPENDENCIES) $(EXTRA_t_101_DEPENDENCIES)
|
||||||
|
@rm -f t-101$(EXEEXT)
|
||||||
|
$(AM_V_CXXLD)$(t_101_LINK) $(t_101_OBJECTS) $(t_101_LDADD) $(LIBS)
|
||||||
|
|
||||||
mostlyclean-compile:
|
mostlyclean-compile:
|
||||||
-rm -f *.$(OBJEXT)
|
-rm -f *.$(OBJEXT)
|
||||||
|
|
||||||
@ -760,6 +799,7 @@ distclean-compile:
|
|||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_007-t-007.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_007-t-007.Po@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_008-t-008.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_008-t-008.Po@am__quote@ # am--include-marker
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_009-t-009.Po@am__quote@ # am--include-marker
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_009-t-009.Po@am__quote@ # am--include-marker
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t_101-t-101.Po@am__quote@ # am--include-marker
|
||||||
|
|
||||||
$(am__depfiles_remade):
|
$(am__depfiles_remade):
|
||||||
@$(MKDIR_P) $(@D)
|
@$(MKDIR_P) $(@D)
|
||||||
@ -917,6 +957,44 @@ t_009-t-009.obj: t-009.c
|
|||||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_009_CPPFLAGS) $(CPPFLAGS) $(t_009_CFLAGS) $(CFLAGS) -c -o t_009-t-009.obj `if test -f 't-009.c'; then $(CYGPATH_W) 't-009.c'; else $(CYGPATH_W) '$(srcdir)/t-009.c'; fi`
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_009_CPPFLAGS) $(CPPFLAGS) $(t_009_CFLAGS) $(CFLAGS) -c -o t_009-t-009.obj `if test -f 't-009.c'; then $(CYGPATH_W) 't-009.c'; else $(CYGPATH_W) '$(srcdir)/t-009.c'; fi`
|
||||||
|
|
||||||
|
.cpp.o:
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||||
|
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
.cpp.obj:
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
|
||||||
|
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
|
||||||
|
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||||
|
|
||||||
|
.cpp.lo:
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
|
||||||
|
@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||||
|
@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
|
||||||
|
|
||||||
|
t_101-t-101.o: t-101.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_101_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT t_101-t-101.o -MD -MP -MF $(DEPDIR)/t_101-t-101.Tpo -c -o t_101-t-101.o `test -f 't-101.cpp' || echo '$(srcdir)/'`t-101.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/t_101-t-101.Tpo $(DEPDIR)/t_101-t-101.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='t-101.cpp' object='t_101-t-101.o' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_101_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o t_101-t-101.o `test -f 't-101.cpp' || echo '$(srcdir)/'`t-101.cpp
|
||||||
|
|
||||||
|
t_101-t-101.obj: t-101.cpp
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_101_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT t_101-t-101.obj -MD -MP -MF $(DEPDIR)/t_101-t-101.Tpo -c -o t_101-t-101.obj `if test -f 't-101.cpp'; then $(CYGPATH_W) 't-101.cpp'; else $(CYGPATH_W) '$(srcdir)/t-101.cpp'; fi`
|
||||||
|
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/t_101-t-101.Tpo $(DEPDIR)/t_101-t-101.Po
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='t-101.cpp' object='t_101-t-101.obj' libtool=no @AMDEPBACKSLASH@
|
||||||
|
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||||
|
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(t_101_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o t_101-t-101.obj `if test -f 't-101.cpp'; then $(CYGPATH_W) 't-101.cpp'; else $(CYGPATH_W) '$(srcdir)/t-101.cpp'; fi`
|
||||||
|
|
||||||
mostlyclean-libtool:
|
mostlyclean-libtool:
|
||||||
-rm -f *.lo
|
-rm -f *.lo
|
||||||
|
|
||||||
@ -1204,6 +1282,13 @@ t-009.log: t-009$(EXEEXT)
|
|||||||
--log-file $$b.log --trs-file $$b.trs \
|
--log-file $$b.log --trs-file $$b.trs \
|
||||||
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||||
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||||
|
t-101.log: t-101$(EXEEXT)
|
||||||
|
@p='t-101$(EXEEXT)'; \
|
||||||
|
b='t-101'; \
|
||||||
|
$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
|
||||||
|
--log-file $$b.log --trs-file $$b.trs \
|
||||||
|
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
|
||||||
|
"$$tst" $(AM_TESTS_FD_REDIRECT)
|
||||||
.hawk.log:
|
.hawk.log:
|
||||||
@p='$<'; \
|
@p='$<'; \
|
||||||
$(am__set_b); \
|
$(am__set_b); \
|
||||||
@ -1319,6 +1404,7 @@ distclean: distclean-am
|
|||||||
-rm -f ./$(DEPDIR)/t_007-t-007.Po
|
-rm -f ./$(DEPDIR)/t_007-t-007.Po
|
||||||
-rm -f ./$(DEPDIR)/t_008-t-008.Po
|
-rm -f ./$(DEPDIR)/t_008-t-008.Po
|
||||||
-rm -f ./$(DEPDIR)/t_009-t-009.Po
|
-rm -f ./$(DEPDIR)/t_009-t-009.Po
|
||||||
|
-rm -f ./$(DEPDIR)/t_101-t-101.Po
|
||||||
-rm -f Makefile
|
-rm -f Makefile
|
||||||
distclean-am: clean-am distclean-compile distclean-generic \
|
distclean-am: clean-am distclean-compile distclean-generic \
|
||||||
distclean-tags
|
distclean-tags
|
||||||
@ -1373,6 +1459,7 @@ maintainer-clean: maintainer-clean-am
|
|||||||
-rm -f ./$(DEPDIR)/t_007-t-007.Po
|
-rm -f ./$(DEPDIR)/t_007-t-007.Po
|
||||||
-rm -f ./$(DEPDIR)/t_008-t-008.Po
|
-rm -f ./$(DEPDIR)/t_008-t-008.Po
|
||||||
-rm -f ./$(DEPDIR)/t_009-t-009.Po
|
-rm -f ./$(DEPDIR)/t_009-t-009.Po
|
||||||
|
-rm -f ./$(DEPDIR)/t_101-t-101.Po
|
||||||
-rm -f Makefile
|
-rm -f Makefile
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||||
|
|
||||||
|
46
t/t-101.cpp
Normal file
46
t/t-101.cpp
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#include <Hawk.hpp>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "tap.h"
|
||||||
|
|
||||||
|
#define OK_X(test) OK(test, #test)
|
||||||
|
|
||||||
|
static void test1()
|
||||||
|
{
|
||||||
|
HAWK::HawkStd hawk;
|
||||||
|
HAWK::Hawk::Run* rtx;
|
||||||
|
int n;
|
||||||
|
|
||||||
|
n = hawk.open();
|
||||||
|
OK_X(n == 0);
|
||||||
|
|
||||||
|
HAWK::HawkStd::SourceString in("BEGIN{}");
|
||||||
|
rtx = hawk.parse(in, HAWK::Hawk::Source::NONE);
|
||||||
|
OK_X(rtx != HAWK_NULL);
|
||||||
|
|
||||||
|
HAWK::Hawk::Value v(rtx);
|
||||||
|
HAWK::Hawk::Value vi(rtx);
|
||||||
|
|
||||||
|
vi.setInt(1010);
|
||||||
|
OK_X(vi.getType() == HAWK_VAL_INT);
|
||||||
|
|
||||||
|
v.setMbs("hello", 5);
|
||||||
|
OK_X(v.getType() == HAWK_VAL_MBS);
|
||||||
|
|
||||||
|
v.setArrayedVal(4, vi);
|
||||||
|
OK_X(v.getType() == HAWK_VAL_ARR);
|
||||||
|
OK_X(v.getArrayedSize() == 5);
|
||||||
|
OK_X(v.getArrayedLength() == 1);
|
||||||
|
|
||||||
|
// i must not call hawk.close() to ensure that v is destroyed first.
|
||||||
|
//hawk.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
no_plan ();
|
||||||
|
|
||||||
|
test1();
|
||||||
|
|
||||||
|
return exit_status();
|
||||||
|
}
|
||||||
|
|
Reference in New Issue
Block a user