started adding simple xli validation

This commit is contained in:
2013-07-11 16:55:08 +00:00
parent 2bccba995c
commit 67c47e906d
8 changed files with 332 additions and 161 deletions

View File

@ -49,7 +49,10 @@ enum qse_xli_errnum_t
QSE_XLI_EINCLSTR,/**< '@include' not followed by a string */
QSE_XLI_ELXCHR, /**< invalid character '${0} */
QSE_XLI_EXKWNR, /**< @word '${0}' not recognized */
QSE_XLI_EXKWEM /**< @ not followed by a valid word */
QSE_XLI_EXKWEM, /**< @ not followed by a valid word */
QSE_XLI_EILKEY, /**< illegal key '${0}' */
QSE_XLI_EILVAL, /**< illegal value for '${0}' */
QSE_XLI_ESTRSEG /**< too many string segments for '${0}' */
};
typedef enum qse_xli_errnum_t qse_xli_errnum_t;
@ -78,6 +81,8 @@ enum qse_xli_trait_t
QSE_XLI_KEEPTEXT = (1 << 3), /**< keep comment text */
QSE_XLI_KEEPFILE = (1 << 4), /**< keep inclusion file info */
QSE_XLI_VALIDATE = (1 << 5)
};
typedef enum qse_xli_trait_t qse_xli_trait_t;
@ -287,11 +292,30 @@ typedef qse_ssize_t (*qse_xli_io_impl_t) (
qse_size_t count
);
enum qse_xli_scm_flag_t
{
QSE_XLI_SCM_REQUIRED = (1 << 0),
QSE_XLI_SCM_VAL_NIL = (1 << 1),
QSE_XLI_SCM_VAL_STR = (1 << 2),
QSE_XLI_SCM_VAL_LIST = (1 << 3),
QSE_XLI_SCM_KEY_NODUP = (1 << 4),
QSE_XLI_SCM_KEY_ALIAS = (1 << 5)
};
struct qse_xli_scm_t
{
int flags;
int str_minseg;
int str_maxseg;
};
typedef struct qse_xli_scm_t qse_xli_scm_t;
#if defined(__cplusplus)
extern "C" {
#endif
QSE_EXPORT qse_xli_t* qse_xli_open (
qse_mmgr_t* mmgr,
qse_size_t xtnsize
@ -518,20 +542,16 @@ QSE_EXPORT qse_xli_eof_t* qse_xli_inserteof (
qse_xli_atom_t* peer
);
QSE_EXPORT qse_xli_list_t* qse_xli_getroot (
qse_xli_t* xli
);
QSE_EXPORT qse_xli_pair_t* qse_xli_findpairbyalias (
QSE_EXPORT qse_xli_pair_t* qse_xli_findpairbyname (
qse_xli_t* xli,
const qse_xli_list_t* list,
const qse_char_t* alias
const qse_char_t* dotted_name
);
QSE_EXPORT qse_size_t qse_xli_getnumpairsbyalias (
QSE_EXPORT qse_size_t qse_xli_getnumpairsbyname (
qse_xli_t* xli,
const qse_xli_list_t* list,
const qse_char_t* alias
const qse_char_t* dotted_name
);
/**
@ -558,10 +578,28 @@ qse_char_t* qse_xli_dupflatstr (
qse_size_t* nsegs
);
QSE_EXPORT qse_xli_list_t* qse_xli_getroot (
qse_xli_t* xli
);
QSE_EXPORT void qse_xli_clearroot (
qse_xli_t* xli
);
QSE_EXPORT void qse_xli_clearschema (
qse_xli_t* xli
);
QSE_EXPORT void qse_xli_clear (
qse_xli_t* xli
);
QSE_EXPORT int qse_xli_setschema (
qse_xli_t* xli,
const qse_char_t* dotted_name,
const qse_xli_scm_t* scm
);
QSE_EXPORT int qse_xli_read (
qse_xli_t* xli,
qse_xli_io_impl_t io