added hawk_get_val_type()
This commit is contained in:
parent
ccc32d8118
commit
897e867819
@ -1045,6 +1045,8 @@ public:
|
||||
return p;
|
||||
}
|
||||
|
||||
int getType () const { return hawk_get_val_type(this->val); }
|
||||
|
||||
int getInt (hawk_int_t* v) const;
|
||||
int getFlt (hawk_flt_t* v) const;
|
||||
int getNum (hawk_int_t* lv, hawk_flt_t* fv) const;
|
||||
|
@ -1279,7 +1279,7 @@ int HawkStd::SourceFile::open (Data& io)
|
||||
|
||||
if (this->cmgr) hawk_sio_setcmgr (sio, this->cmgr);
|
||||
io.setName (xpath);
|
||||
io.setPath (xpath); // let parser use this path, especially upon an error
|
||||
io.setPath (xpath); // let the parser use this path, especially upon an error
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1367,11 +1367,8 @@ hawk_ooi_t HawkStd::SourceFile::write (Data& io, const hawk_ooch_t* buf, hawk_oo
|
||||
|
||||
HawkStd::SourceString::~SourceString ()
|
||||
{
|
||||
if (this->_hawk)
|
||||
{
|
||||
HAWK_ASSERT (this->str != HAWK_NULL);
|
||||
hawk_freemem (this->_hawk, this->str);
|
||||
}
|
||||
HAWK_ASSERT (this->_hawk == HAWK_NULL);
|
||||
HAWK_ASSERT (this->str == HAWK_NULL);
|
||||
}
|
||||
|
||||
int HawkStd::SourceString::open (Data& io)
|
||||
@ -1394,21 +1391,21 @@ int HawkStd::SourceString::open (Data& io)
|
||||
if (this->_type == STR_UCH)
|
||||
{
|
||||
#if defined(HAWK_OOCH_IS_UCH)
|
||||
this->str = hawk_dupucstr(this->_hawk, (hawk_uch_t*)this->_str, HAWK_NULL);
|
||||
this->str = hawk_dupucstr(this->_hawk, (const hawk_uch_t*)this->_str, HAWK_NULL);
|
||||
#else
|
||||
this->str = hawk_duputobcstr(this->_hawk, (hawk_uch_t*)this->_str, HAWK_NULL);
|
||||
this->str = hawk_duputobcstr(this->_hawk, (const hawk_uch_t*)this->_str, HAWK_NULL);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
HAWK_ASSERT (this->_type == STR_BCH);
|
||||
#if defined(HAWK_OOCH_IS_UCH)
|
||||
this->str = hawk_dupbtoucstr(this->_hawk, (hawk_bch_t*)this->_str, HAWK_NULL, 0);
|
||||
this->str = hawk_dupbtoucstr(this->_hawk, (const hawk_bch_t*)this->_str, HAWK_NULL, 0);
|
||||
#else
|
||||
this->str = hawk_dupbcstr(this->_hawk, (hawk_bch_t*)this->_str, HAWK_NULL);
|
||||
this->str = hawk_dupbcstr(this->_hawk, (const hawk_bch_t*)this->_str, HAWK_NULL);
|
||||
#endif
|
||||
}
|
||||
if (!this->str)
|
||||
if (HAWK_UNLIKELY(!this->str))
|
||||
{
|
||||
this->_hawk = HAWK_NULL;
|
||||
return -1;
|
||||
@ -1448,7 +1445,7 @@ int HawkStd::SourceString::open (Data& io)
|
||||
if (totlen >= HAWK_COUNTOF(fbuf))
|
||||
{
|
||||
dbuf = (hawk_ooch_t*)hawk_allocmem((hawk_t*)io, HAWK_SIZEOF(hawk_ooch_t) * (totlen + 1));
|
||||
if (!dbuf) return -1;
|
||||
if (HAWK_UNLIKELY(!dbuf)) return -1;
|
||||
path = dbuf;
|
||||
}
|
||||
else path = fbuf;
|
||||
@ -1464,7 +1461,7 @@ int HawkStd::SourceString::open (Data& io)
|
||||
{
|
||||
xpath = hawk_addsionamewithoochars((hawk_t*)io, ioname, hawk_count_oocstr(ioname));
|
||||
}
|
||||
if (!xpath) return -1;
|
||||
if (HAWK_UNLIKELY(!xpath)) return -1;
|
||||
|
||||
sio = open_sio(
|
||||
io, HAWK_NULL, xpath,
|
||||
|
@ -130,6 +130,7 @@ struct hawk_rtx_alt_t
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
/* garbage collection header */
|
||||
typedef struct hawk_gch_t hawk_gch_t;
|
||||
struct hawk_gch_t
|
||||
{
|
||||
@ -3609,6 +3610,10 @@ HAWK_EXPORT hawk_val_t* hawk_get_nil_val (
|
||||
void
|
||||
);
|
||||
|
||||
HAWK_EXPORT int hawk_get_val_type (
|
||||
hawk_val_t* val
|
||||
);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
@ -142,11 +142,12 @@ struct hawk_val_rchunk_t
|
||||
#define HAWK_VTR_TO_QCHAR(p) ((hawk_ooch_t)((hawk_uintptr_t)(p) >> HAWK_VTR_NUM_TYPE_BITS_LO))
|
||||
#define HAWK_VTR_TO_QBCHR(p) ((hawk_ooch_t)((hawk_uintptr_t)(p) >> HAWK_VTR_NUM_TYPE_BITS_LOHI))
|
||||
|
||||
#define HAWK_RTX_GETVALTYPE(rtx,p) (HAWK_VTR_IS_QINT(p)? HAWK_VAL_INT: \
|
||||
HAWK_VTR_IS_QCHAR(p)? HAWK_VAL_CHAR: \
|
||||
HAWK_VTR_IS_QBCHR(p)? HAWK_VAL_BCHR: (p)->v_type)
|
||||
#define HAWK_GET_VAL_TYPE(p) (HAWK_VTR_IS_QINT(p)? HAWK_VAL_INT: \
|
||||
HAWK_VTR_IS_QCHAR(p)? HAWK_VAL_CHAR: \
|
||||
HAWK_VTR_IS_QBCHR(p)? HAWK_VAL_BCHR: (p)->v_type)
|
||||
|
||||
#define HAWK_RTX_GETINTFROMVAL(rtx,p) ((HAWK_VTR_IS_QINT(p)? (hawk_int_t)HAWK_VTR_TO_QINT(p): ((hawk_val_int_t*)(p))->i_val))
|
||||
#define HAWK_RTX_GETVALTYPE(rtx, p) HAWK_GET_VAL_TYPE(p)
|
||||
#define HAWK_RTX_GETINTFROMVAL(rtx, p) ((HAWK_VTR_IS_QINT(p)? (hawk_int_t)HAWK_VTR_TO_QINT(p): ((hawk_val_int_t*)(p))->i_val))
|
||||
#define HAWK_RTX_GETCHARFROMVAL(rtx, p) (HAWK_VTR_TO_QCHAR(p))
|
||||
#define HAWK_RTX_GETBCHRFROMVAL(rtx, p) (HAWK_VTR_TO_QBCHR(p))
|
||||
|
||||
|
@ -469,6 +469,11 @@ static HAWK_INLINE hawk_val_t* gc_calloc_val (hawk_rtx_t* rtx, hawk_oow_t size)
|
||||
|
||||
/* --------------------------------------------------------------------- */
|
||||
|
||||
int hawk_get_val_type (hawk_val_t* val)
|
||||
{
|
||||
return HAWK_GET_VAL_TYPE(val);
|
||||
}
|
||||
|
||||
hawk_val_t* hawk_get_nil_val (void)
|
||||
{
|
||||
return (hawk_val_t*)&hawk_nil;
|
||||
|
Loading…
Reference in New Issue
Block a user