added the _instsize field to qse_awk_t and qse_awk_rtx_t to get rid of qse_awk_getxtnstd() and qse_awk_rtx_getxtnstd()

This commit is contained in:
2019-06-24 08:53:49 +00:00
parent f4a8a5bff7
commit 35a24a56d1
16 changed files with 189 additions and 200 deletions

View File

@ -1411,7 +1411,7 @@ private:
void fini_runctx ();
int dispatch_function (Run* run, const fnc_info_t* fi);
static const char_t* xerrstr (const awk_t* a, errnum_t num);
static const char_t* xerrstr (awk_t* a, errnum_t num);
};
/////////////////////////////////

View File

@ -93,8 +93,9 @@ typedef qse_flt_t qse_awk_flt_t;
typedef struct qse_awk_t qse_awk_t;
#define QSE_AWK_HDR \
qse_mmgr_t* mmgr; \
qse_cmgr_t* cmgr
qse_size_t _instsize; \
qse_mmgr_t* _mmgr; \
qse_cmgr_t* _cmgr
typedef struct qse_awk_alt_t qse_awk_alt_t;
struct qse_awk_alt_t
@ -131,6 +132,7 @@ struct qse_awk_alt_t
typedef struct qse_awk_rtx_t qse_awk_rtx_t;
#define QSE_AWK_RTX_HDR \
qse_size_t _instsize; \
int id; \
qse_awk_t* awk
@ -1385,7 +1387,7 @@ typedef struct qse_awk_errinf_t qse_awk_errinf_t;
* object with the qse_awk_seterrstr() function to customize an error string.
*/
typedef const qse_char_t* (*qse_awk_errstr_t) (
const qse_awk_t* awk, /**< awk */
qse_awk_t* awk, /**< awk */
qse_awk_errnum_t num /**< error number */
);
@ -1562,23 +1564,17 @@ QSE_EXPORT void qse_awk_close (
* qse_awk_open().
*/
#if defined(QSE_HAVE_INLINE)
static QSE_INLINE qse_mmgr_t* qse_awk_getmmgr (qse_awk_t* awk) { return ((qse_awk_alt_t*)awk)->mmgr; }
static QSE_INLINE qse_cmgr_t* qse_awk_getcmgr (qse_awk_t* awk) { return ((qse_awk_alt_t*)awk)->cmgr; }
static QSE_INLINE void qse_awk_setcmgr (qse_awk_t* awk, qse_cmgr_t* cmgr) { ((qse_awk_alt_t*)awk)->cmgr = cmgr; }
static QSE_INLINE void* qse_awk_getxtn (qse_awk_t* awk) { return (void*)((qse_uint8_t*)awk + ((qse_awk_alt_t*)awk)->_instsize); }
static QSE_INLINE qse_mmgr_t* qse_awk_getmmgr (qse_awk_t* awk) { return ((qse_awk_alt_t*)awk)->_mmgr; }
static QSE_INLINE qse_cmgr_t* qse_awk_getcmgr (qse_awk_t* awk) { return ((qse_awk_alt_t*)awk)->_cmgr; }
static QSE_INLINE void qse_awk_setcmgr (qse_awk_t* awk, qse_cmgr_t* cmgr) { ((qse_awk_alt_t*)awk)->_cmgr = cmgr; }
#else
# define qse_awk_getmmgr(awk) (((qse_awk_alt_t*)(awk))->mmgr)
# define qse_awk_getcmgr(awk) (((qse_awk_alt_t*)(awk))->cmgr)
# define qse_awk_setcmgr(awk,_cmgr) (((qse_awk_alt_t*)(awk))->cmgr = (_cmgr))
# define qse_awk_getxtn(awk) ((void*)((qse_uint8_t*)awk + ((qse_awk_alt_t*)awk)->_instsize))
# define qse_awk_getmmgr(awk) (((qse_awk_alt_t*)(awk))->_mmgr)
# define qse_awk_getcmgr(awk) (((qse_awk_alt_t*)(awk))->_cmgr)
# define qse_awk_setcmgr(awk,_cmgr) (((qse_awk_alt_t*)(awk))->_cmgr = (_cmgr))
#endif /* QSE_HAVE_INLINE */
/**
* The qse_awk_getxtn() function gets the poniter to the beginning
* of the extension area created with qse_awk_open ().
*/
QSE_EXPORT void* qse_awk_getxtn (
qse_awk_t* awk
);
/**
* The qse_awk_getprm() function retrieves primitive functions
* associated. Actual function pointers are copied into a
@ -1914,10 +1910,10 @@ QSE_EXPORT void* qse_awk_callocmem (
#if defined(QSE_HAVE_INLINE)
static QSE_INLINE void qse_awk_freemem (qse_awk_t* awk, void* ptr)
{
QSE_MMGR_FREE (((qse_awk_alt_t*)(awk))->mmgr, ptr);
QSE_MMGR_FREE (((qse_awk_alt_t*)(awk))->_mmgr, ptr);
}
#else
# define qse_awk_freemem(awk, ptr) QSE_MMGR_FREE(((qse_awk_alt_t*)(awk))->mmgr, ptr);
# define qse_awk_freemem(awk, ptr) QSE_MMGR_FREE(((qse_awk_alt_t*)(awk))->_mmgr, ptr);
#endif
@ -2282,6 +2278,15 @@ QSE_EXPORT int qse_awk_rtx_setofilename (
#if defined(QSE_HAVE_INLINE)
/**
* The qse_awk_rtx_getxtn() function gets the pointer to the extension area
* created with qse_awk_rtx_open().
*/
static QSE_INLINE void* qse_awk_rtx_getxtn (qse_awk_rtx_t* rtx)
{
return (void*)((qse_uint8_t*)rtx + ((qse_awk_rtx_alt_t*)rtx)->_instsize);
}
/**
* The qse_awk_rtx_getawk() function gets the owner of a runtime context \a rtx.
* \return owner of a runtime context \a rtx.
@ -2306,20 +2311,13 @@ static QSE_INLINE qse_cmgr_t* qse_awk_rtx_getcmgr (qse_awk_rtx_t* rtx)
}
#else
# define qse_awk_rtx_getxtn(rtx) ((void*)((qse_uint8_t*)rtx + ((qse_awk_rtx_alt_t*)rtx)->_instsize))
# define qse_awk_rtx_getawk(rtx) (((qse_awk_rtx_alt_t*)(rtx))->awk)
# define qse_awk_rtx_getmmgr(rtx) (qse_awk_getmmgr(qse_awk_rtx_getawk(rtx)))
# define qse_awk_rtx_getcmgr(rtx) (qse_awk_getcmgr(qse_awk_rtx_getawk(rtx)))
#endif /* QSE_HAVE_INLINE */
/**
* The qse_awk_rtx_getxtn() function gets the pointer to the extension area
* created with qse_awk_rtx_open().
*/
QSE_EXPORT void* qse_awk_rtx_getxtn (
qse_awk_rtx_t* rtx /**< runtime context */
);
/**
* The qse_awk_rtx_getnvmap() gets the map of named variables
*/

View File

@ -117,15 +117,6 @@ QSE_EXPORT qse_awk_t* qse_awk_openstdwithmmgr (
qse_awk_errnum_t* errnum /**< pointer to an error number variable */
);
/**
* The qse_awk_getxtnstd() gets the pointer to extension area created with
* qse_awk_openstd() or qse_awk_openstdwithmmgr(). You must not call
* qse_awk_getxtn() for sunch an object.
*/
QSE_EXPORT void* qse_awk_getxtnstd (
qse_awk_t* awk
);
/**
* The qse_awk_parsestd() functions parses source script.
* The code below shows how to parse a literal string 'BEGIN { print 10; }'