_instsize into qse_xli_t and qse_json_t

This commit is contained in:
2019-06-24 14:24:14 +00:00
parent 35a24a56d1
commit 5d627bc2a7
16 changed files with 130 additions and 157 deletions

View File

@ -160,15 +160,6 @@ QSE_EXPORT qse_awk_rtx_t* qse_awk_rtx_openstd (
qse_cmgr_t* cmgr
);
/**
* The qse_awk_rtx_getxtnstd() function gets the pointer to extension area
* created with qse_awk_rtx_openstd().
*/
QSE_EXPORT void* qse_awk_rtx_getxtnstd (
qse_awk_rtx_t* rtx
);
/**
* The qse_awk_rtx_getiocmgrstd() function gets the current character
* manager associated with a particular I/O target indicated by the name

View File

@ -35,6 +35,18 @@
*/
typedef struct qse_json_t qse_json_t;
#define QSE_JSON_HDR \
qse_size_t _instsize; \
qse_mmgr_t* _mmgr; \
qse_cmgr_t* _cmgr
typedef struct qse_json_alt_t qse_json_alt_t;
struct qse_json_alt_t
{
/* ensure that qse_json_t matches the beginning part of qse_json_t */
QSE_JSON_HDR;
};
enum qse_json_errnum_t
{
QSE_JSON_ENOERR = 0,
@ -155,22 +167,17 @@ QSE_EXPORT int qse_json_getoption (
);
QSE_EXPORT void* qse_json_getxtn (
qse_json_t* json
);
QSE_EXPORT qse_mmgr_t* qse_json_getmmgr (
qse_json_t* json
);
QSE_EXPORT qse_cmgr_t* qse_json_getcmgr (
qse_json_t* json
);
QSE_EXPORT void qse_json_setcmgr (
qse_json_t* json,
qse_cmgr_t* cmgr
);
#if defined(QSE_HAVE_INLINE)
static QSE_INLINE void* qse_json_getxtn (qse_json_t* json) { return (void*)((qse_uint8_t*)json + ((qse_json_alt_t*)json)->_instsize); }
static QSE_INLINE qse_mmgr_t* qse_json_getmmgr (qse_json_t* json) { return ((qse_json_alt_t*)json)->_mmgr; }
static QSE_INLINE qse_cmgr_t* qse_json_getcmgr (qse_json_t* json) { return ((qse_json_alt_t*)json)->_cmgr; }
static QSE_INLINE void qse_json_setcmgr (qse_json_t* json, qse_cmgr_t* cmgr) { ((qse_json_alt_t*)json)->_cmgr = cmgr; }
#else
# define qse_json_getxtn(json) ((void*)((qse_uint8_t*)json + ((qse_json_alt_t*)json)->_instsize))
# define qse_json_getmmgr(json) (((qse_json_alt_t*)(json))->_mmgr)
# define qse_json_getcmgr(json) (((qse_json_alt_t*)(json))->_cmgr)
# define qse_json_setcmgr(json,_cmgr) (((qse_json_alt_t*)(json))->_cmgr = (_cmgr))
#endif /* QSE_HAVE_INLINE */
QSE_EXPORT qse_json_errnum_t qse_json_geterrnum (

View File

@ -115,15 +115,6 @@ QSE_EXPORT qse_xli_t* qse_xli_openstdwithmmgr (
qse_xli_errnum_t* errnum
);
/**
* The qse_xli_getxtnstd() gets the pointer to extension area created with
* qse_xli_openstd() or qse_xli_openstdwithmmgr(). You must not call
* qse_xli_getxtn() for sunch an object.
*/
QSE_EXPORT void* qse_xli_getxtnstd (
qse_xli_t* xli
);
QSE_EXPORT int qse_xli_readstd (
qse_xli_t* xli,
qse_xli_iostd_t* in

View File

@ -50,6 +50,17 @@
typedef struct qse_xli_t qse_xli_t;
#define QSE_XLI_HDR \
qse_size_t _instsize; \
qse_mmgr_t* _mmgr
typedef struct qse_xli_alt_t qse_xli_alt_t;
struct qse_xli_alt_t
{
/* ensure that qse_xli_t matches the beginning part of qse_xli_t */
QSE_XLI_HDR;
};
enum qse_xli_errnum_t
{
QSE_XLI_ENOERR, /**< no error */
@ -482,13 +493,13 @@ QSE_EXPORT void qse_xli_close (
qse_xli_t* xli
);
QSE_EXPORT qse_mmgr_t* qse_xli_getmmgr (
qse_xli_t* xli
);
QSE_EXPORT void* qse_xli_getxtn (
qse_xli_t* xli
);
#if defined(QSE_HAVE_INLINE)
static QSE_INLINE void* qse_xli_getxtn (qse_xli_t* xli) { return (void*)((qse_uint8_t*)xli + ((qse_xli_alt_t*)xli)->_instsize); }
static QSE_INLINE qse_mmgr_t* qse_xli_getmmgr (qse_xli_t* xli) { return ((qse_xli_alt_t*)xli)->_mmgr; }
#else
# define qse_xli_getxtn(xli) ((void*)((qse_uint8_t*)xli + ((qse_xli_alt_t*)xli)->_instsize))
# define qse_xli_getmmgr(xli) (((qse_xli_alt_t*)(xli))->_mmgr)
#endif /* QSE_HAVE_INLINE */
QSE_EXPORT void qse_xli_pushecb (
qse_xli_t* xli,