_instsize into qse_xli_t and qse_json_t
This commit is contained in:
parent
35a24a56d1
commit
5d627bc2a7
@ -160,15 +160,6 @@ QSE_EXPORT qse_awk_rtx_t* qse_awk_rtx_openstd (
|
|||||||
qse_cmgr_t* cmgr
|
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
|
* The qse_awk_rtx_getiocmgrstd() function gets the current character
|
||||||
* manager associated with a particular I/O target indicated by the name
|
* manager associated with a particular I/O target indicated by the name
|
||||||
|
@ -35,6 +35,18 @@
|
|||||||
*/
|
*/
|
||||||
typedef struct qse_json_t qse_json_t;
|
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
|
enum qse_json_errnum_t
|
||||||
{
|
{
|
||||||
QSE_JSON_ENOERR = 0,
|
QSE_JSON_ENOERR = 0,
|
||||||
@ -155,22 +167,17 @@ QSE_EXPORT int qse_json_getoption (
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
QSE_EXPORT void* qse_json_getxtn (
|
#if defined(QSE_HAVE_INLINE)
|
||||||
qse_json_t* json
|
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; }
|
||||||
QSE_EXPORT qse_mmgr_t* qse_json_getmmgr (
|
static QSE_INLINE void qse_json_setcmgr (qse_json_t* json, qse_cmgr_t* cmgr) { ((qse_json_alt_t*)json)->_cmgr = cmgr; }
|
||||||
qse_json_t* json
|
#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)
|
||||||
QSE_EXPORT qse_cmgr_t* qse_json_getcmgr (
|
# define qse_json_getcmgr(json) (((qse_json_alt_t*)(json))->_cmgr)
|
||||||
qse_json_t* json
|
# define qse_json_setcmgr(json,_cmgr) (((qse_json_alt_t*)(json))->_cmgr = (_cmgr))
|
||||||
);
|
#endif /* QSE_HAVE_INLINE */
|
||||||
|
|
||||||
QSE_EXPORT void qse_json_setcmgr (
|
|
||||||
qse_json_t* json,
|
|
||||||
qse_cmgr_t* cmgr
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
QSE_EXPORT qse_json_errnum_t qse_json_geterrnum (
|
QSE_EXPORT qse_json_errnum_t qse_json_geterrnum (
|
||||||
|
@ -115,15 +115,6 @@ QSE_EXPORT qse_xli_t* qse_xli_openstdwithmmgr (
|
|||||||
qse_xli_errnum_t* errnum
|
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_EXPORT int qse_xli_readstd (
|
||||||
qse_xli_t* xli,
|
qse_xli_t* xli,
|
||||||
qse_xli_iostd_t* in
|
qse_xli_iostd_t* in
|
||||||
|
@ -50,6 +50,17 @@
|
|||||||
|
|
||||||
typedef struct qse_xli_t qse_xli_t;
|
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
|
enum qse_xli_errnum_t
|
||||||
{
|
{
|
||||||
QSE_XLI_ENOERR, /**< no error */
|
QSE_XLI_ENOERR, /**< no error */
|
||||||
@ -482,13 +493,13 @@ QSE_EXPORT void qse_xli_close (
|
|||||||
qse_xli_t* xli
|
qse_xli_t* xli
|
||||||
);
|
);
|
||||||
|
|
||||||
QSE_EXPORT qse_mmgr_t* qse_xli_getmmgr (
|
#if defined(QSE_HAVE_INLINE)
|
||||||
qse_xli_t* xli
|
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
|
||||||
QSE_EXPORT void* qse_xli_getxtn (
|
# define qse_xli_getxtn(xli) ((void*)((qse_uint8_t*)xli + ((qse_xli_alt_t*)xli)->_instsize))
|
||||||
qse_xli_t* xli
|
# define qse_xli_getmmgr(xli) (((qse_xli_alt_t*)(xli))->_mmgr)
|
||||||
);
|
#endif /* QSE_HAVE_INLINE */
|
||||||
|
|
||||||
QSE_EXPORT void qse_xli_pushecb (
|
QSE_EXPORT void qse_xli_pushecb (
|
||||||
qse_xli_t* xli,
|
qse_xli_t* xli,
|
||||||
|
@ -94,7 +94,7 @@ qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t xtnsize, const qse_awk_prm
|
|||||||
QSE_MMGR_FREE (mmgr, awk);
|
QSE_MMGR_FREE (mmgr, awk);
|
||||||
awk = QSE_NULL;
|
awk = QSE_NULL;
|
||||||
}
|
}
|
||||||
else QSE_MEMSET (awk + 1, 0, xtnsize);
|
else QSE_MEMSET (QSE_XTN(awk), 0, xtnsize);
|
||||||
}
|
}
|
||||||
else if (errnum) *errnum = QSE_AWK_ENOMEM;
|
else if (errnum) *errnum = QSE_AWK_ENOMEM;
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
#include "awk-prv.h"
|
#include "awk-prv.h"
|
||||||
|
|
||||||
const qse_char_t* qse_awk_dflerrstr (const qse_awk_t* awk, qse_awk_errnum_t errnum)
|
const qse_char_t* qse_awk_dflerrstr (qse_awk_t* awk, qse_awk_errnum_t errnum)
|
||||||
{
|
{
|
||||||
static const qse_char_t* errstr[] =
|
static const qse_char_t* errstr[] =
|
||||||
{
|
{
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const qse_char_t* qse_awk_dflerrstr (const qse_awk_t* awk, qse_awk_errnum_t errnum);
|
const qse_char_t* qse_awk_dflerrstr (qse_awk_t* awk, qse_awk_errnum_t errnum);
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
|
@ -527,6 +527,8 @@ qse_awk_t* qse_awk_openstdwithmmgr (qse_mmgr_t* mmgr, qse_size_t xtnsize, qse_aw
|
|||||||
awk = qse_awk_open(mmgr, QSE_SIZEOF(xtn_t) + xtnsize, &prm, errnum);
|
awk = qse_awk_open(mmgr, QSE_SIZEOF(xtn_t) + xtnsize, &prm, errnum);
|
||||||
if (!awk) return QSE_NULL;
|
if (!awk) return QSE_NULL;
|
||||||
|
|
||||||
|
/* adjust the object size by the sizeof xtn_t so that qse_getxtn() returns the right pointer. */
|
||||||
|
awk->_instsize += QSE_SIZEOF(xtn_t);
|
||||||
|
|
||||||
#if defined(USE_DLFCN)
|
#if defined(USE_DLFCN)
|
||||||
if (qse_awk_setopt(awk, QSE_AWK_MODPOSTFIX, QSE_T(".so")) <= -1)
|
if (qse_awk_setopt(awk, QSE_AWK_MODPOSTFIX, QSE_T(".so")) <= -1)
|
||||||
@ -536,9 +538,6 @@ qse_awk_t* qse_awk_openstdwithmmgr (qse_mmgr_t* mmgr, qse_size_t xtnsize, qse_aw
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* adjust the object size by the sizeof xtn_t so that qse_getxtn() returns the right pointer. */
|
|
||||||
awk->_instsize += QSE_SIZEOF(xtn_t);
|
|
||||||
|
|
||||||
/* initialize extension */
|
/* initialize extension */
|
||||||
xtn = GET_XTN(awk);
|
xtn = GET_XTN(awk);
|
||||||
/* the extension area has been cleared in qse_awk_open().
|
/* the extension area has been cleared in qse_awk_open().
|
||||||
|
@ -75,9 +75,7 @@ struct qse_json_state_node_t
|
|||||||
|
|
||||||
struct qse_json_t
|
struct qse_json_t
|
||||||
{
|
{
|
||||||
qse_mmgr_t* mmgr;
|
QSE_JSON_HDR;
|
||||||
qse_cmgr_t* cmgr;
|
|
||||||
qse_json_prim_t prim;
|
|
||||||
|
|
||||||
qse_json_errnum_t errnum;
|
qse_json_errnum_t errnum;
|
||||||
struct
|
struct
|
||||||
@ -87,6 +85,8 @@ struct qse_json_t
|
|||||||
/*qse_size_t len;*/
|
/*qse_size_t len;*/
|
||||||
} errmsg;
|
} errmsg;
|
||||||
|
|
||||||
|
qse_json_prim_t prim;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
int trait;
|
int trait;
|
||||||
@ -276,7 +276,7 @@ static int handle_string_value_char (qse_json_t* json, qse_cint_t c)
|
|||||||
qse_mchar_t bcsbuf[QSE_MBLEN_MAX];
|
qse_mchar_t bcsbuf[QSE_MBLEN_MAX];
|
||||||
qse_size_t n;
|
qse_size_t n;
|
||||||
|
|
||||||
n = json->cmgr->wctomb(json->state_stack->u.sv.acc, bcsbuf, QSE_COUNTOF(bcsbuf));
|
n = json->_cmgr->wctomb(json->state_stack->u.sv.acc, bcsbuf, QSE_COUNTOF(bcsbuf));
|
||||||
if (n == 0 || n > QSE_COUNTOF(bcsbuf))
|
if (n == 0 || n > QSE_COUNTOF(bcsbuf))
|
||||||
{
|
{
|
||||||
/* illegal character or buffer to small */
|
/* illegal character or buffer to small */
|
||||||
@ -786,7 +786,7 @@ static int feed_json_data (qse_json_t* json, const qse_mchar_t* data, qse_size_t
|
|||||||
qse_size_t n;
|
qse_size_t n;
|
||||||
|
|
||||||
bcslen = end - ptr;
|
bcslen = end - ptr;
|
||||||
n = json->cmgr->mbtowc(ptr, bcslen, &uc);
|
n = json->_cmgr->mbtowc(ptr, bcslen, &uc);
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
{
|
{
|
||||||
/* invalid sequence */
|
/* invalid sequence */
|
||||||
@ -834,8 +834,9 @@ qse_json_t* qse_json_open (qse_mmgr_t* mmgr, qse_size_t xtnsize, qse_json_prim_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
QSE_MEMSET (json, 0, QSE_SIZEOF(*json) + xtnsize);
|
QSE_MEMSET (json, 0, QSE_SIZEOF(*json) + xtnsize);
|
||||||
json->mmgr = mmgr;
|
json->_instsize = QSE_SIZEOF(*json);
|
||||||
json->cmgr = qse_getdflcmgr();
|
json->_mmgr = mmgr;
|
||||||
|
json->_cmgr = qse_getdflcmgr();
|
||||||
json->prim = *prim;
|
json->prim = *prim;
|
||||||
|
|
||||||
json->state_top.state = QSE_JSON_STATE_START;
|
json->state_top.state = QSE_JSON_STATE_START;
|
||||||
@ -849,7 +850,7 @@ void qse_json_close (qse_json_t* json)
|
|||||||
{
|
{
|
||||||
pop_all_states (json);
|
pop_all_states (json);
|
||||||
if (json->tok.ptr) qse_json_freemem (json, json->tok.ptr);
|
if (json->tok.ptr) qse_json_freemem (json, json->tok.ptr);
|
||||||
QSE_MMGR_FREE (json->mmgr, json);
|
QSE_MMGR_FREE (json->_mmgr, json);
|
||||||
}
|
}
|
||||||
|
|
||||||
int qse_json_setoption (qse_json_t* json, qse_json_option_t id, const void* value)
|
int qse_json_setoption (qse_json_t* json, qse_json_option_t id, const void* value)
|
||||||
@ -878,27 +879,6 @@ int qse_json_getoption (qse_json_t* json, qse_json_option_t id, void* value)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void* qse_json_getxtn (qse_json_t* json)
|
|
||||||
{
|
|
||||||
return (void*)(json + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
qse_mmgr_t* qse_json_getmmgr (qse_json_t* json)
|
|
||||||
{
|
|
||||||
return json->mmgr;
|
|
||||||
}
|
|
||||||
|
|
||||||
qse_cmgr_t* qse_json_getcmgr (qse_json_t* json)
|
|
||||||
{
|
|
||||||
return json->cmgr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void qse_json_setcmgr (qse_json_t* json, qse_cmgr_t* cmgr)
|
|
||||||
{
|
|
||||||
json->cmgr = cmgr;
|
|
||||||
}
|
|
||||||
|
|
||||||
qse_json_errnum_t qse_json_geterrnum (qse_json_t* json)
|
qse_json_errnum_t qse_json_geterrnum (qse_json_t* json)
|
||||||
{
|
{
|
||||||
return json->errnum;
|
return json->errnum;
|
||||||
@ -951,7 +931,7 @@ void* qse_json_allocmem (qse_json_t* json, qse_size_t size)
|
|||||||
{
|
{
|
||||||
void* ptr;
|
void* ptr;
|
||||||
|
|
||||||
ptr = QSE_MMGR_ALLOC(json->mmgr, size);
|
ptr = QSE_MMGR_ALLOC(qse_json_getmmgr(json), size);
|
||||||
if (!ptr) qse_json_seterrnum (json, QSE_JSON_ENOMEM);
|
if (!ptr) qse_json_seterrnum (json, QSE_JSON_ENOMEM);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
@ -960,7 +940,7 @@ void* qse_json_callocmem (qse_json_t* json, qse_size_t size)
|
|||||||
{
|
{
|
||||||
void* ptr;
|
void* ptr;
|
||||||
|
|
||||||
ptr = QSE_MMGR_ALLOC(json->mmgr, size);
|
ptr = QSE_MMGR_ALLOC(qse_json_getmmgr(json), size);
|
||||||
if (!ptr) qse_json_seterrnum (json, QSE_JSON_ENOMEM);
|
if (!ptr) qse_json_seterrnum (json, QSE_JSON_ENOMEM);
|
||||||
else QSE_MEMSET (ptr, 0, size);
|
else QSE_MEMSET (ptr, 0, size);
|
||||||
return ptr;
|
return ptr;
|
||||||
@ -968,14 +948,14 @@ void* qse_json_callocmem (qse_json_t* json, qse_size_t size)
|
|||||||
|
|
||||||
void* qse_json_reallocmem (qse_json_t* json, void* ptr, qse_size_t size)
|
void* qse_json_reallocmem (qse_json_t* json, void* ptr, qse_size_t size)
|
||||||
{
|
{
|
||||||
ptr = QSE_MMGR_REALLOC(json->mmgr, ptr, size);
|
ptr = QSE_MMGR_REALLOC(qse_json_getmmgr(json), ptr, size);
|
||||||
if (!ptr) qse_json_seterrnum (json, QSE_JSON_ENOMEM);
|
if (!ptr) qse_json_seterrnum (json, QSE_JSON_ENOMEM);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void qse_json_freemem (qse_json_t* json, void* ptr)
|
void qse_json_freemem (qse_json_t* json, void* ptr)
|
||||||
{
|
{
|
||||||
QSE_MMGR_FREE (json->mmgr, ptr);
|
QSE_MMGR_FREE (qse_json_getmmgr(json), ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ========================================================================= */
|
/* ========================================================================= */
|
||||||
|
@ -366,7 +366,7 @@ static int read_list (qse_xli_t* xli)
|
|||||||
|
|
||||||
QSE_ASSERT (key.ptr == QSE_NULL);
|
QSE_ASSERT (key.ptr == QSE_NULL);
|
||||||
key.len = QSE_STR_LEN(xli->tok.name);
|
key.len = QSE_STR_LEN(xli->tok.name);
|
||||||
key.ptr = qse_strdup (QSE_STR_PTR(xli->tok.name), xli->mmgr);
|
key.ptr = qse_strdup(QSE_STR_PTR(xli->tok.name), qse_xli_getmmgr(xli));
|
||||||
if (key.ptr == QSE_NULL)
|
if (key.ptr == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
@ -398,7 +398,7 @@ static int read_list (qse_xli_t* xli)
|
|||||||
|
|
||||||
pair = qse_xli_insertpairwithstr (xli, curlist, QSE_NULL, key.ptr, QSE_NULL, QSE_NULL, &empty, QSE_NULL);
|
pair = qse_xli_insertpairwithstr (xli, curlist, QSE_NULL, key.ptr, QSE_NULL, QSE_NULL, &empty, QSE_NULL);
|
||||||
|
|
||||||
QSE_MMGR_FREE (xli->mmgr, key.ptr);
|
qse_xli_freemem (xli, key.ptr);
|
||||||
key.ptr = QSE_NULL;
|
key.ptr = QSE_NULL;
|
||||||
|
|
||||||
if (pair == QSE_NULL) goto oops;
|
if (pair == QSE_NULL) goto oops;
|
||||||
@ -410,7 +410,7 @@ static int read_list (qse_xli_t* xli)
|
|||||||
/* add a new pair with the initial string segment */
|
/* add a new pair with the initial string segment */
|
||||||
pair = qse_xli_insertpairwithstr (xli, curlist, QSE_NULL, key.ptr, QSE_NULL, QSE_NULL, QSE_STR_XSTR(xli->tok.name), QSE_NULL);
|
pair = qse_xli_insertpairwithstr (xli, curlist, QSE_NULL, key.ptr, QSE_NULL, QSE_NULL, QSE_STR_XSTR(xli->tok.name), QSE_NULL);
|
||||||
|
|
||||||
QSE_MMGR_FREE (xli->mmgr, key.ptr);
|
qse_xli_freemem (xli, key.ptr);
|
||||||
key.ptr = QSE_NULL;
|
key.ptr = QSE_NULL;
|
||||||
|
|
||||||
if (pair == QSE_NULL) goto oops;
|
if (pair == QSE_NULL) goto oops;
|
||||||
@ -432,7 +432,7 @@ static int read_list (qse_xli_t* xli)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
if (key.ptr) QSE_MMGR_FREE (xli->mmgr, key.ptr);
|
if (key.ptr) qse_xli_freemem (xli, key.ptr);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -505,7 +505,7 @@ oops:
|
|||||||
|
|
||||||
prev = xli->rio.inp->prev;
|
prev = xli->rio.inp->prev;
|
||||||
QSE_ASSERT (xli->rio.inp->name != QSE_NULL);
|
QSE_ASSERT (xli->rio.inp->name != QSE_NULL);
|
||||||
QSE_MMGR_FREE (xli->mmgr, xli->rio.inp);
|
qse_xli_freemem (xli, xli->rio.inp);
|
||||||
xli->rio.inp = prev;
|
xli->rio.inp = prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,7 +258,7 @@ static int end_include (qse_xli_t* xli, int noeof)
|
|||||||
xli->rio.inp = xli->rio.inp->prev;
|
xli->rio.inp = xli->rio.inp->prev;
|
||||||
|
|
||||||
QSE_ASSERT (cur->name != QSE_NULL);
|
QSE_ASSERT (cur->name != QSE_NULL);
|
||||||
QSE_MMGR_FREE (xli->mmgr, cur);
|
qse_xli_freemem (xli, cur);
|
||||||
/* xli->parse.depth.incl--; */
|
/* xli->parse.depth.incl--; */
|
||||||
|
|
||||||
if ((xli->opt.trait & QSE_XLI_KEEPFILE) && !noeof &&
|
if ((xli->opt.trait & QSE_XLI_KEEPFILE) && !noeof &&
|
||||||
@ -329,7 +329,7 @@ oops:
|
|||||||
/* i don't need to free 'link' since it's linked to
|
/* i don't need to free 'link' since it's linked to
|
||||||
* xli->rio_names that's freed at the beginning of qse_xli_read()
|
* xli->rio_names that's freed at the beginning of qse_xli_read()
|
||||||
* or by qse_xli_fini() */
|
* or by qse_xli_fini() */
|
||||||
if (arg) QSE_MMGR_FREE (xli->mmgr, arg);
|
if (arg) qse_xli_freemem (xli, arg);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -675,7 +675,7 @@ static int read_pair (qse_xli_t* xli, rpair_t* pair)
|
|||||||
|
|
||||||
if (check_token_for_key_eligibility(xli, xli->parlink->list) <= -1) goto oops;
|
if (check_token_for_key_eligibility(xli, xli->parlink->list) <= -1) goto oops;
|
||||||
|
|
||||||
key = qse_strdup(QSE_STR_PTR(xli->tok.name), xli->mmgr);
|
key = qse_strdup(QSE_STR_PTR(xli->tok.name), qse_xli_getmmgr(xli));
|
||||||
if (key == QSE_NULL)
|
if (key == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
@ -702,7 +702,7 @@ static int read_pair (qse_xli_t* xli, rpair_t* pair)
|
|||||||
|
|
||||||
oops:
|
oops:
|
||||||
if (val) qse_xli_freeval (xli, val);
|
if (val) qse_xli_freeval (xli, val);
|
||||||
if (key) QSE_MMGR_FREE (xli->mmgr, key);
|
if (key) qse_xli_freemem (xli, key);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -797,7 +797,7 @@ static int __read_list (qse_xli_t* xli)
|
|||||||
p = qse_xli_insertpair(xli, xli->parlink->list, QSE_NULL, rpair.key, QSE_NULL, QSE_NULL, rpair.val);
|
p = qse_xli_insertpair(xli, xli->parlink->list, QSE_NULL, rpair.key, QSE_NULL, QSE_NULL, rpair.val);
|
||||||
if (!p)
|
if (!p)
|
||||||
{
|
{
|
||||||
QSE_MMGR_FREE (xli->mmgr, rpair.key);
|
qse_xli_freemem (xli, rpair.key);
|
||||||
qse_xli_freeval (xli, rpair.val);
|
qse_xli_freeval (xli, rpair.val);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -805,7 +805,7 @@ static int __read_list (qse_xli_t* xli)
|
|||||||
if (xli->opt.cbs.pair_read) xli->opt.cbs.pair_read (xli, p, &ploc);
|
if (xli->opt.cbs.pair_read) xli->opt.cbs.pair_read (xli, p, &ploc);
|
||||||
|
|
||||||
/* clear the duplicated key. the key is also duplicated in qse_xli_insertpair(). don't need it */
|
/* clear the duplicated key. the key is also duplicated in qse_xli_insertpair(). don't need it */
|
||||||
QSE_MMGR_FREE (xli->mmgr, rpair.key);
|
qse_xli_freemem (xli, rpair.key);
|
||||||
|
|
||||||
if (get_token(xli) <= -1) return -1;
|
if (get_token(xli) <= -1) return -1;
|
||||||
|
|
||||||
@ -1003,7 +1003,7 @@ oops:
|
|||||||
|
|
||||||
prev = xli->rio.inp->prev;
|
prev = xli->rio.inp->prev;
|
||||||
QSE_ASSERT (xli->rio.inp->name != QSE_NULL);
|
QSE_ASSERT (xli->rio.inp->name != QSE_NULL);
|
||||||
QSE_MMGR_FREE (xli->mmgr, xli->rio.inp);
|
qse_xli_freemem (xli, xli->rio.inp);
|
||||||
xli->rio.inp = prev;
|
xli->rio.inp = prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -384,7 +384,7 @@ static int end_include (qse_xli_t* xli, int noeof)
|
|||||||
xli->rio.inp = xli->rio.inp->prev;
|
xli->rio.inp = xli->rio.inp->prev;
|
||||||
|
|
||||||
QSE_ASSERT (cur->name != QSE_NULL);
|
QSE_ASSERT (cur->name != QSE_NULL);
|
||||||
QSE_MMGR_FREE (xli->mmgr, cur);
|
qse_xli_freemem (xli, cur);
|
||||||
/* xli->parse.depth.incl--; */
|
/* xli->parse.depth.incl--; */
|
||||||
|
|
||||||
if ((xli->opt.trait & QSE_XLI_KEEPFILE) && !noeof &&
|
if ((xli->opt.trait & QSE_XLI_KEEPFILE) && !noeof &&
|
||||||
@ -455,7 +455,7 @@ oops:
|
|||||||
/* i don't need to free 'link' since it's linked to
|
/* i don't need to free 'link' since it's linked to
|
||||||
* xli->rio_names that's freed at the beginning of qse_xli_read()
|
* xli->rio_names that's freed at the beginning of qse_xli_read()
|
||||||
* or by qse_xli_fini() */
|
* or by qse_xli_fini() */
|
||||||
if (arg) QSE_MMGR_FREE (xli->mmgr, arg);
|
if (arg) qse_xli_freemem (xli, arg);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -764,7 +764,7 @@ static int read_pair (qse_xli_t* xli, const qse_char_t* keytag, const qse_xli_sc
|
|||||||
|
|
||||||
kloc = xli->tok.loc;
|
kloc = xli->tok.loc;
|
||||||
key.len = QSE_STR_LEN(xli->tok.name);
|
key.len = QSE_STR_LEN(xli->tok.name);
|
||||||
key.ptr = qse_strdup (QSE_STR_PTR(xli->tok.name), xli->mmgr);
|
key.ptr = qse_strdup (QSE_STR_PTR(xli->tok.name), qse_xli_getmmgr(xli));
|
||||||
if (key.ptr == QSE_NULL)
|
if (key.ptr == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
@ -847,7 +847,7 @@ static int read_pair (qse_xli_t* xli, const qse_char_t* keytag, const qse_xli_sc
|
|||||||
atom = atom->prev;
|
atom = atom->prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
name = qse_strdup (QSE_STR_PTR(xli->tok.name), xli->mmgr);
|
name = qse_strdup (QSE_STR_PTR(xli->tok.name), qse_xli_getmmgr(xli));
|
||||||
if (name == QSE_NULL)
|
if (name == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
@ -871,7 +871,7 @@ static int read_pair (qse_xli_t* xli, const qse_char_t* keytag, const qse_xli_sc
|
|||||||
|
|
||||||
if ((xli->opt.trait & QSE_XLI_STRTAG) && MATCH(xli, QSE_XLI_TOK_TAG))
|
if ((xli->opt.trait & QSE_XLI_STRTAG) && MATCH(xli, QSE_XLI_TOK_TAG))
|
||||||
{
|
{
|
||||||
strtag = qse_strxdup (QSE_STR_PTR(xli->tok.name), QSE_STR_LEN(xli->tok.name), xli->mmgr);
|
strtag = qse_strxdup (QSE_STR_PTR(xli->tok.name), QSE_STR_LEN(xli->tok.name), qse_xli_getmmgr(xli));
|
||||||
if (strtag == QSE_NULL)
|
if (strtag == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
@ -938,13 +938,13 @@ static int read_pair (qse_xli_t* xli, const qse_char_t* keytag, const qse_xli_sc
|
|||||||
|
|
||||||
if (strtag)
|
if (strtag)
|
||||||
{
|
{
|
||||||
QSE_MMGR_FREE (xli->mmgr, strtag);
|
qse_xli_freemem (xli, strtag);
|
||||||
strtag = QSE_NULL;
|
strtag = QSE_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((xli->opt.trait & QSE_XLI_STRTAG) && MATCH(xli, QSE_XLI_TOK_TAG))
|
if ((xli->opt.trait & QSE_XLI_STRTAG) && MATCH(xli, QSE_XLI_TOK_TAG))
|
||||||
{
|
{
|
||||||
strtag = qse_strxdup (QSE_STR_PTR(xli->tok.name), QSE_STR_LEN(xli->tok.name), xli->mmgr);
|
strtag = qse_strxdup (QSE_STR_PTR(xli->tok.name), QSE_STR_LEN(xli->tok.name), qse_xli_getmmgr(xli));
|
||||||
if (strtag == QSE_NULL)
|
if (strtag == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
@ -1070,17 +1070,17 @@ static int read_pair (qse_xli_t* xli, const qse_char_t* keytag, const qse_xli_sc
|
|||||||
goto oops;
|
goto oops;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strtag) QSE_MMGR_FREE (xli->mmgr, strtag);
|
if (strtag) qse_xli_freemem (xli, strtag);
|
||||||
QSE_MMGR_FREE (xli->mmgr, name);
|
qse_xli_freemem (xli, name);
|
||||||
QSE_MMGR_FREE (xli->mmgr, key.ptr);
|
qse_xli_freemem (xli, key.ptr);
|
||||||
qse_str_setlen (xli->dotted_curkey, dotted_curkey_len);
|
qse_str_setlen (xli->dotted_curkey, dotted_curkey_len);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
xli->tok_status &= ~TOK_STATUS_ENABLE_NSTR;
|
xli->tok_status &= ~TOK_STATUS_ENABLE_NSTR;
|
||||||
if (strtag) QSE_MMGR_FREE (xli->mmgr, strtag);
|
if (strtag) qse_xli_freemem (xli, strtag);
|
||||||
if (name) QSE_MMGR_FREE (xli->mmgr, name);
|
if (name) qse_xli_freemem (xli, name);
|
||||||
if (key.ptr) QSE_MMGR_FREE (xli->mmgr, key.ptr);
|
if (key.ptr) qse_xli_freemem (xli, key.ptr);
|
||||||
if (dotted_curkey_len != (qse_size_t)-1)
|
if (dotted_curkey_len != (qse_size_t)-1)
|
||||||
qse_str_setlen (xli->dotted_curkey, dotted_curkey_len);
|
qse_str_setlen (xli->dotted_curkey, dotted_curkey_len);
|
||||||
return -1;
|
return -1;
|
||||||
@ -1128,7 +1128,7 @@ static int __read_list (qse_xli_t* xli, const qse_xli_scm_t* override)
|
|||||||
qse_char_t* keytag;
|
qse_char_t* keytag;
|
||||||
int x;
|
int x;
|
||||||
|
|
||||||
keytag = qse_strxdup (QSE_STR_PTR(xli->tok.name), QSE_STR_LEN(xli->tok.name), xli->mmgr);
|
keytag = qse_strxdup (QSE_STR_PTR(xli->tok.name), QSE_STR_LEN(xli->tok.name), qse_xli_getmmgr(xli));
|
||||||
if (keytag == QSE_NULL)
|
if (keytag == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
@ -1137,19 +1137,19 @@ static int __read_list (qse_xli_t* xli, const qse_xli_scm_t* override)
|
|||||||
|
|
||||||
if (get_token(xli) <= -1)
|
if (get_token(xli) <= -1)
|
||||||
{
|
{
|
||||||
QSE_MMGR_FREE (xli->mmgr, keytag);
|
qse_xli_freemem (xli, keytag);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!MATCH(xli, QSE_XLI_TOK_IDENT) && !MATCH(xli, QSE_XLI_TOK_DQSTR) && !MATCH(xli, QSE_XLI_TOK_SQSTR))
|
if (!MATCH(xli, QSE_XLI_TOK_IDENT) && !MATCH(xli, QSE_XLI_TOK_DQSTR) && !MATCH(xli, QSE_XLI_TOK_SQSTR))
|
||||||
{
|
{
|
||||||
QSE_MMGR_FREE (xli->mmgr, keytag);
|
qse_xli_freemem (xli, keytag);
|
||||||
qse_xli_seterror (xli, QSE_XLI_ENOKEY, QSE_NULL, &xli->tok.loc);
|
qse_xli_seterror (xli, QSE_XLI_ENOKEY, QSE_NULL, &xli->tok.loc);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
x = read_pair(xli, keytag, override);
|
x = read_pair(xli, keytag, override);
|
||||||
QSE_MMGR_FREE (xli->mmgr, keytag);
|
qse_xli_freemem (xli, keytag);
|
||||||
if (x <= -1) return -1;
|
if (x <= -1) return -1;
|
||||||
}
|
}
|
||||||
else if (MATCH(xli, QSE_XLI_TOK_IDENT) || MATCH(xli, QSE_XLI_TOK_DQSTR) || MATCH(xli, QSE_XLI_TOK_SQSTR))
|
else if (MATCH(xli, QSE_XLI_TOK_IDENT) || MATCH(xli, QSE_XLI_TOK_DQSTR) || MATCH(xli, QSE_XLI_TOK_SQSTR))
|
||||||
@ -1221,7 +1221,7 @@ void qse_xli_clearrionames (qse_xli_t* xli)
|
|||||||
{
|
{
|
||||||
cur = xli->rio_names;
|
cur = xli->rio_names;
|
||||||
xli->rio_names = cur->link;
|
xli->rio_names = cur->link;
|
||||||
QSE_MMGR_FREE (xli->mmgr, cur);
|
qse_xli_freemem (xli, cur);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1277,7 +1277,7 @@ oops:
|
|||||||
|
|
||||||
prev = xli->rio.inp->prev;
|
prev = xli->rio.inp->prev;
|
||||||
QSE_ASSERT (xli->rio.inp->name != QSE_NULL);
|
QSE_ASSERT (xli->rio.inp->name != QSE_NULL);
|
||||||
QSE_MMGR_FREE (xli->mmgr, xli->rio.inp);
|
qse_xli_freemem (xli, xli->rio.inp);
|
||||||
xli->rio.inp = prev;
|
xli->rio.inp = prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,6 +71,12 @@ typedef struct xtn_t
|
|||||||
qse_xli_ecb_t ecb;
|
qse_xli_ecb_t ecb;
|
||||||
} xtn_t;
|
} xtn_t;
|
||||||
|
|
||||||
|
#if defined(QSE_HAVE_INLINE)
|
||||||
|
static QSE_INLINE xtn_t* GET_XTN(qse_xli_t* xli) { return (xtn_t*)((qse_uint8_t*)qse_xli_getxtn(xli) - QSE_SIZEOF(xtn_t)); }
|
||||||
|
#else
|
||||||
|
#define GET_XTN(xli) ((xtn_t*)((qse_uint8_t*)qse_xli_getxtn(xli) - QSE_SIZEOF(xtn_t)))
|
||||||
|
#endif
|
||||||
|
|
||||||
qse_xli_t* qse_xli_openstd (qse_size_t xtnsize, qse_size_t rootxtnsize, qse_xli_errnum_t* errnum)
|
qse_xli_t* qse_xli_openstd (qse_size_t xtnsize, qse_size_t rootxtnsize, qse_xli_errnum_t* errnum)
|
||||||
{
|
{
|
||||||
return qse_xli_openstdwithmmgr (QSE_MMGR_GETDFL(), xtnsize, rootxtnsize, errnum);
|
return qse_xli_openstdwithmmgr (QSE_MMGR_GETDFL(), xtnsize, rootxtnsize, errnum);
|
||||||
@ -95,8 +101,10 @@ qse_xli_t* qse_xli_openstdwithmmgr (qse_mmgr_t* mmgr, qse_size_t xtnsize, qse_si
|
|||||||
xli = qse_xli_open(mmgr, QSE_SIZEOF(xtn_t) + xtnsize, rootxtnsize, errnum);
|
xli = qse_xli_open(mmgr, QSE_SIZEOF(xtn_t) + xtnsize, rootxtnsize, errnum);
|
||||||
if (xli == QSE_NULL) goto oops;
|
if (xli == QSE_NULL) goto oops;
|
||||||
|
|
||||||
|
xli->_instsize += QSE_SIZEOF(xtn_t);
|
||||||
|
|
||||||
/* initialize extension */
|
/* initialize extension */
|
||||||
xtn = (xtn_t*) QSE_XTN (xli);
|
xtn = GET_XTN(xli);
|
||||||
/* the extension area has been cleared in qse_httpd_open().
|
/* the extension area has been cleared in qse_httpd_open().
|
||||||
* QSE_MEMSET (xtn, 0, QSE_SIZEOF(*xtn));*/
|
* QSE_MEMSET (xtn, 0, QSE_SIZEOF(*xtn));*/
|
||||||
|
|
||||||
@ -111,15 +119,10 @@ oops:
|
|||||||
return QSE_NULL;
|
return QSE_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* qse_xli_getxtnstd (qse_xli_t* xli)
|
|
||||||
{
|
|
||||||
return (void*)((xtn_t*)QSE_XTN(xli) + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static qse_sio_t* open_sio (qse_xli_t* xli, const qse_char_t* file, int flags)
|
static qse_sio_t* open_sio (qse_xli_t* xli, const qse_char_t* file, int flags)
|
||||||
{
|
{
|
||||||
qse_sio_t* sio;
|
qse_sio_t* sio;
|
||||||
sio = qse_sio_open (xli->mmgr, 0, file, flags);
|
sio = qse_sio_open(qse_xli_getmmgr(xli), 0, file, flags);
|
||||||
if (sio == QSE_NULL)
|
if (sio == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_cstr_t errarg;
|
qse_cstr_t errarg;
|
||||||
@ -140,7 +143,7 @@ static qse_cstr_t sio_std_names[] =
|
|||||||
static qse_sio_t* open_sio_std (qse_xli_t* xli, qse_sio_std_t std, int flags)
|
static qse_sio_t* open_sio_std (qse_xli_t* xli, qse_sio_std_t std, int flags)
|
||||||
{
|
{
|
||||||
qse_sio_t* sio;
|
qse_sio_t* sio;
|
||||||
sio = qse_sio_openstd (xli->mmgr, 0, std, flags);
|
sio = qse_sio_openstd (qse_xli_getmmgr(xli), 0, std, flags);
|
||||||
if (sio == QSE_NULL) qse_xli_seterrnum (xli, QSE_XLI_EIOFIL, &sio_std_names[std]);
|
if (sio == QSE_NULL) qse_xli_seterrnum (xli, QSE_XLI_EIOFIL, &sio_std_names[std]);
|
||||||
return sio;
|
return sio;
|
||||||
}
|
}
|
||||||
@ -234,10 +237,10 @@ static qse_ssize_t sf_in_open (qse_xli_t* xli, qse_xli_io_arg_t* arg, xtn_t* xtn
|
|||||||
}
|
}
|
||||||
|
|
||||||
arg->handle = qse_sio_open (
|
arg->handle = qse_sio_open (
|
||||||
xli->mmgr, 0, path, QSE_SIO_READ | QSE_SIO_IGNOREMBWCERR | QSE_SIO_KEEPPATH
|
qse_xli_getmmgr(xli), 0, path, QSE_SIO_READ | QSE_SIO_IGNOREMBWCERR | QSE_SIO_KEEPPATH
|
||||||
);
|
);
|
||||||
|
|
||||||
if (dbuf) QSE_MMGR_FREE (xli->mmgr, dbuf);
|
if (dbuf) qse_xli_freemem (xli, dbuf);
|
||||||
if (arg->handle == QSE_NULL)
|
if (arg->handle == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_cstr_t ea;
|
qse_cstr_t ea;
|
||||||
@ -347,7 +350,7 @@ static qse_ssize_t sf_in (
|
|||||||
qse_xli_t* xli, qse_xli_io_cmd_t cmd,
|
qse_xli_t* xli, qse_xli_io_cmd_t cmd,
|
||||||
qse_xli_io_arg_t* arg, qse_char_t* data, qse_size_t size)
|
qse_xli_io_arg_t* arg, qse_char_t* data, qse_size_t size)
|
||||||
{
|
{
|
||||||
xtn_t* xtn = QSE_XTN (xli);
|
xtn_t* xtn = GET_XTN(xli);
|
||||||
|
|
||||||
QSE_ASSERT (arg != QSE_NULL);
|
QSE_ASSERT (arg != QSE_NULL);
|
||||||
|
|
||||||
@ -401,7 +404,7 @@ static qse_ssize_t sf_out_open (qse_xli_t* xli, qse_xli_io_arg_t* arg, xtn_t* xt
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case QSE_XLI_IOSTD_STR:
|
case QSE_XLI_IOSTD_STR:
|
||||||
xtn->s.out.u.str.buf = qse_str_open (xli->mmgr, 0, 512);
|
xtn->s.out.u.str.buf = qse_str_open(qse_xli_getmmgr(xli), 0, 512);
|
||||||
if (xtn->s.out.u.str.buf == QSE_NULL)
|
if (xtn->s.out.u.str.buf == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
@ -461,10 +464,10 @@ static qse_ssize_t sf_out_open (qse_xli_t* xli, qse_xli_io_arg_t* arg, xtn_t* xt
|
|||||||
}
|
}
|
||||||
|
|
||||||
arg->handle = qse_sio_open (
|
arg->handle = qse_sio_open (
|
||||||
xli->mmgr, 0, path, QSE_SIO_WRITE | QSE_SIO_CREATE | QSE_SIO_TRUNCATE | QSE_SIO_IGNOREMBWCERR | QSE_SIO_KEEPPATH
|
qse_xli_getmmgr(xli), 0, path, QSE_SIO_WRITE | QSE_SIO_CREATE | QSE_SIO_TRUNCATE | QSE_SIO_IGNOREMBWCERR | QSE_SIO_KEEPPATH
|
||||||
);
|
);
|
||||||
|
|
||||||
if (dbuf) QSE_MMGR_FREE (xli->mmgr, dbuf);
|
if (dbuf) qse_xli_freemem (xli, dbuf);
|
||||||
if (arg->handle == QSE_NULL)
|
if (arg->handle == QSE_NULL)
|
||||||
{
|
{
|
||||||
qse_cstr_t ea;
|
qse_cstr_t ea;
|
||||||
@ -578,7 +581,7 @@ static qse_ssize_t sf_out (
|
|||||||
qse_xli_t* xli, qse_xli_io_cmd_t cmd,
|
qse_xli_t* xli, qse_xli_io_cmd_t cmd,
|
||||||
qse_xli_io_arg_t* arg, qse_char_t* data, qse_size_t size)
|
qse_xli_io_arg_t* arg, qse_char_t* data, qse_size_t size)
|
||||||
{
|
{
|
||||||
xtn_t* xtn = QSE_XTN (xli);
|
xtn_t* xtn = GET_XTN(xli);
|
||||||
|
|
||||||
QSE_ASSERT (arg != QSE_NULL);
|
QSE_ASSERT (arg != QSE_NULL);
|
||||||
|
|
||||||
@ -601,7 +604,7 @@ static qse_ssize_t sf_out (
|
|||||||
|
|
||||||
int qse_xli_readstd (qse_xli_t* xli, qse_xli_iostd_t* in)
|
int qse_xli_readstd (qse_xli_t* xli, qse_xli_iostd_t* in)
|
||||||
{
|
{
|
||||||
xtn_t* xtn = (xtn_t*) QSE_XTN (xli);
|
xtn_t* xtn = GET_XTN(xli);
|
||||||
|
|
||||||
if (in == QSE_NULL || (in->type != QSE_XLI_IOSTD_FILE &&
|
if (in == QSE_NULL || (in->type != QSE_XLI_IOSTD_FILE &&
|
||||||
in->type != QSE_XLI_IOSTD_STR))
|
in->type != QSE_XLI_IOSTD_STR))
|
||||||
@ -619,7 +622,7 @@ int qse_xli_readstd (qse_xli_t* xli, qse_xli_iostd_t* in)
|
|||||||
|
|
||||||
int qse_xli_readinistd (qse_xli_t* xli, qse_xli_iostd_t* in)
|
int qse_xli_readinistd (qse_xli_t* xli, qse_xli_iostd_t* in)
|
||||||
{
|
{
|
||||||
xtn_t* xtn = (xtn_t*) QSE_XTN (xli);
|
xtn_t* xtn = GET_XTN(xli);
|
||||||
|
|
||||||
if (in == QSE_NULL || (in->type != QSE_XLI_IOSTD_FILE &&
|
if (in == QSE_NULL || (in->type != QSE_XLI_IOSTD_FILE &&
|
||||||
in->type != QSE_XLI_IOSTD_STR))
|
in->type != QSE_XLI_IOSTD_STR))
|
||||||
@ -636,7 +639,7 @@ int qse_xli_readinistd (qse_xli_t* xli, qse_xli_iostd_t* in)
|
|||||||
|
|
||||||
int qse_xli_readjsonstd (qse_xli_t* xli, qse_xli_iostd_t* in)
|
int qse_xli_readjsonstd (qse_xli_t* xli, qse_xli_iostd_t* in)
|
||||||
{
|
{
|
||||||
xtn_t* xtn = (xtn_t*) QSE_XTN (xli);
|
xtn_t* xtn = GET_XTN(xli);
|
||||||
|
|
||||||
if (in == QSE_NULL || (in->type != QSE_XLI_IOSTD_FILE &&
|
if (in == QSE_NULL || (in->type != QSE_XLI_IOSTD_FILE &&
|
||||||
in->type != QSE_XLI_IOSTD_STR))
|
in->type != QSE_XLI_IOSTD_STR))
|
||||||
@ -654,7 +657,7 @@ int qse_xli_readjsonstd (qse_xli_t* xli, qse_xli_iostd_t* in)
|
|||||||
int qse_xli_writestd (qse_xli_t* xli, qse_xli_list_t* root_list, qse_xli_iostd_t* out)
|
int qse_xli_writestd (qse_xli_t* xli, qse_xli_list_t* root_list, qse_xli_iostd_t* out)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
xtn_t* xtn = (xtn_t*) QSE_XTN (xli);
|
xtn_t* xtn = GET_XTN(xli);
|
||||||
|
|
||||||
if (out == QSE_NULL || (out->type != QSE_XLI_IOSTD_FILE &&
|
if (out == QSE_NULL || (out->type != QSE_XLI_IOSTD_FILE &&
|
||||||
out->type != QSE_XLI_IOSTD_STR))
|
out->type != QSE_XLI_IOSTD_STR))
|
||||||
@ -684,7 +687,7 @@ int qse_xli_writestd (qse_xli_t* xli, qse_xli_list_t* root_list, qse_xli_iostd_t
|
|||||||
int qse_xli_writeinistd (qse_xli_t* xli, qse_xli_list_t* root_list, qse_xli_iostd_t* out)
|
int qse_xli_writeinistd (qse_xli_t* xli, qse_xli_list_t* root_list, qse_xli_iostd_t* out)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
xtn_t* xtn = (xtn_t*) QSE_XTN (xli);
|
xtn_t* xtn = GET_XTN(xli);
|
||||||
|
|
||||||
if (out == QSE_NULL || (out->type != QSE_XLI_IOSTD_FILE &&
|
if (out == QSE_NULL || (out->type != QSE_XLI_IOSTD_FILE &&
|
||||||
out->type != QSE_XLI_IOSTD_STR))
|
out->type != QSE_XLI_IOSTD_STR))
|
||||||
@ -714,7 +717,7 @@ int qse_xli_writeinistd (qse_xli_t* xli, qse_xli_list_t* root_list, qse_xli_iost
|
|||||||
int qse_xli_writejsonstd (qse_xli_t* xli, qse_xli_list_t* root_list, qse_xli_iostd_t* out)
|
int qse_xli_writejsonstd (qse_xli_t* xli, qse_xli_list_t* root_list, qse_xli_iostd_t* out)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
xtn_t* xtn = (xtn_t*) QSE_XTN (xli);
|
xtn_t* xtn = GET_XTN(xli);
|
||||||
|
|
||||||
if (out == QSE_NULL || (out->type != QSE_XLI_IOSTD_FILE &&
|
if (out == QSE_NULL || (out->type != QSE_XLI_IOSTD_FILE &&
|
||||||
out->type != QSE_XLI_IOSTD_STR))
|
out->type != QSE_XLI_IOSTD_STR))
|
||||||
|
@ -388,7 +388,7 @@ void qse_xli_clearwionames (qse_xli_t* xli)
|
|||||||
{
|
{
|
||||||
cur = xli->wio_names;
|
cur = xli->wio_names;
|
||||||
xli->wio_names = cur->link;
|
xli->wio_names = cur->link;
|
||||||
QSE_MMGR_FREE (xli->mmgr, cur);
|
qse_xli_freemem (xli, cur);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ struct qse_xli_root_list_t
|
|||||||
|
|
||||||
struct qse_xli_t
|
struct qse_xli_t
|
||||||
{
|
{
|
||||||
qse_mmgr_t* mmgr;
|
QSE_XLI_HDR;
|
||||||
|
|
||||||
qse_xli_errstr_t errstr; /**< error string getter */
|
qse_xli_errstr_t errstr; /**< error string getter */
|
||||||
qse_xli_errnum_t errnum; /**< stores an error number */
|
qse_xli_errnum_t errnum; /**< stores an error number */
|
||||||
|
@ -60,13 +60,14 @@ void qse_xli_close (qse_xli_t* xli)
|
|||||||
if (ecb->close) ecb->close (xli);
|
if (ecb->close) ecb->close (xli);
|
||||||
|
|
||||||
qse_xli_fini (xli);
|
qse_xli_fini (xli);
|
||||||
QSE_MMGR_FREE (xli->mmgr, xli);
|
QSE_MMGR_FREE (xli->_mmgr, xli);
|
||||||
}
|
}
|
||||||
|
|
||||||
int qse_xli_init (qse_xli_t* xli, qse_mmgr_t* mmgr, qse_size_t rootxtnsize)
|
int qse_xli_init (qse_xli_t* xli, qse_mmgr_t* mmgr, qse_size_t rootxtnsize)
|
||||||
{
|
{
|
||||||
QSE_MEMSET (xli, 0, QSE_SIZEOF(*xli));
|
QSE_MEMSET (xli, 0, QSE_SIZEOF(*xli));
|
||||||
xli->mmgr = mmgr;
|
xli->_instsize = QSE_SIZEOF(*xli);
|
||||||
|
xli->_mmgr = mmgr;
|
||||||
xli->errstr = qse_xli_dflerrstr;
|
xli->errstr = qse_xli_dflerrstr;
|
||||||
xli->opt.root_xtnsize = rootxtnsize;
|
xli->opt.root_xtnsize = rootxtnsize;
|
||||||
xli->opt.key_splitter = QSE_T('.');
|
xli->opt.key_splitter = QSE_T('.');
|
||||||
@ -100,23 +101,13 @@ oops:
|
|||||||
void qse_xli_fini (qse_xli_t* xli)
|
void qse_xli_fini (qse_xli_t* xli)
|
||||||
{
|
{
|
||||||
qse_xli_clear (xli);
|
qse_xli_clear (xli);
|
||||||
QSE_MMGR_FREE (xli->mmgr, xli->root);
|
QSE_MMGR_FREE (qse_xli_getmmgr(xli), xli->root);
|
||||||
|
|
||||||
qse_rbt_close (xli->schema);
|
qse_rbt_close (xli->schema);
|
||||||
qse_str_close (xli->tok.name);
|
qse_str_close (xli->tok.name);
|
||||||
qse_str_close (xli->dotted_curkey);
|
qse_str_close (xli->dotted_curkey);
|
||||||
}
|
}
|
||||||
|
|
||||||
qse_mmgr_t* qse_xli_getmmgr (qse_xli_t* xli)
|
|
||||||
{
|
|
||||||
return xli->mmgr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void* qse_xli_getxtn (qse_xli_t* xli)
|
|
||||||
{
|
|
||||||
return QSE_XTN (xli);
|
|
||||||
}
|
|
||||||
|
|
||||||
int qse_xli_setopt (qse_xli_t* xli, qse_xli_opt_t id, const void* value)
|
int qse_xli_setopt (qse_xli_t* xli, qse_xli_opt_t id, const void* value)
|
||||||
{
|
{
|
||||||
switch (id)
|
switch (id)
|
||||||
@ -204,7 +195,7 @@ void* qse_xli_allocmem (qse_xli_t* xli, qse_size_t size)
|
|||||||
{
|
{
|
||||||
void* ptr;
|
void* ptr;
|
||||||
|
|
||||||
ptr = QSE_MMGR_ALLOC (xli->mmgr, size);
|
ptr = QSE_MMGR_ALLOC (qse_xli_getmmgr(xli), size);
|
||||||
if (!ptr) qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
if (!ptr) qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
@ -213,7 +204,7 @@ void* qse_xli_callocmem (qse_xli_t* xli, qse_size_t size)
|
|||||||
{
|
{
|
||||||
void* ptr;
|
void* ptr;
|
||||||
|
|
||||||
ptr = QSE_MMGR_ALLOC (xli->mmgr, size);
|
ptr = QSE_MMGR_ALLOC (qse_xli_getmmgr(xli), size);
|
||||||
if (!ptr) qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
if (!ptr) qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
else QSE_MEMSET (ptr, 0, size);
|
else QSE_MEMSET (ptr, 0, size);
|
||||||
return ptr;
|
return ptr;
|
||||||
@ -221,7 +212,7 @@ void* qse_xli_callocmem (qse_xli_t* xli, qse_size_t size)
|
|||||||
|
|
||||||
void qse_xli_freemem (qse_xli_t* xli, void* ptr)
|
void qse_xli_freemem (qse_xli_t* xli, void* ptr)
|
||||||
{
|
{
|
||||||
QSE_MMGR_FREE (xli->mmgr, ptr);
|
QSE_MMGR_FREE (qse_xli_getmmgr(xli), ptr);
|
||||||
}
|
}
|
||||||
/* ------------------------------------------------------ */
|
/* ------------------------------------------------------ */
|
||||||
|
|
||||||
@ -355,7 +346,7 @@ void qse_xli_deletepair (qse_xli_t* xli, qse_xli_pair_t* pair)
|
|||||||
}
|
}
|
||||||
|
|
||||||
free_val (xli->root, pair->val);
|
free_val (xli->root, pair->val);
|
||||||
QSE_MMGR_FREE (xli->mmgr, pair);
|
QSE_MMGR_FREE (qse_xli_getmmgr(xli), pair);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------------------ */
|
/* ------------------------------------------------------ */
|
||||||
@ -603,7 +594,7 @@ static qse_xli_root_list_t* make_root (qse_xli_t* xli)
|
|||||||
{
|
{
|
||||||
qse_xli_root_list_t* tmp;
|
qse_xli_root_list_t* tmp;
|
||||||
|
|
||||||
tmp = QSE_MMGR_ALLOC (xli->mmgr, QSE_SIZEOF(*tmp) + xli->opt.root_xtnsize);
|
tmp = QSE_MMGR_ALLOC (qse_xli_getmmgr(xli), QSE_SIZEOF(*tmp) + xli->opt.root_xtnsize);
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
{
|
{
|
||||||
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
qse_xli_seterrnum (xli, QSE_XLI_ENOMEM, QSE_NULL);
|
||||||
@ -615,7 +606,7 @@ static qse_xli_root_list_t* make_root (qse_xli_t* xli)
|
|||||||
tmp->xnil.type = QSE_XLI_NIL;
|
tmp->xnil.type = QSE_XLI_NIL;
|
||||||
tmp->xtrue.type = QSE_XLI_TRUE;
|
tmp->xtrue.type = QSE_XLI_TRUE;
|
||||||
tmp->xfalse.type = QSE_XLI_FALSE;
|
tmp->xfalse.type = QSE_XLI_FALSE;
|
||||||
tmp->mmgr = xli->mmgr;
|
tmp->mmgr = qse_xli_getmmgr(xli);
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user