add QSE_XLI_PAIRXTNSIZE and qse_xli_getpairxtn()
This commit is contained in:
		| @ -72,7 +72,8 @@ typedef const qse_char_t* (*qse_xli_errstr_t) ( | |||||||
|  |  | ||||||
| enum qse_xli_opt_t | enum qse_xli_opt_t | ||||||
| { | { | ||||||
| 	QSE_XLI_TRAIT | 	QSE_XLI_TRAIT, | ||||||
|  | 	QSE_XLI_PAIRXTNSIZE | ||||||
| }; | }; | ||||||
| typedef enum qse_xli_opt_t qse_xli_opt_t; | typedef enum qse_xli_opt_t qse_xli_opt_t; | ||||||
|  |  | ||||||
| @ -499,6 +500,11 @@ QSE_EXPORT void qse_xli_freemem ( | |||||||
| 	void*      ptr | 	void*      ptr | ||||||
| ); | ); | ||||||
|  |  | ||||||
|  | QSE_EXPORT void* qse_xli_getpairxtn ( | ||||||
|  | 	qse_xli_t*        xli, | ||||||
|  | 	qse_xli_pair_t*   pair | ||||||
|  | ); | ||||||
|  |  | ||||||
| QSE_EXPORT qse_xli_pair_t* qse_xli_insertpair ( | QSE_EXPORT qse_xli_pair_t* qse_xli_insertpair ( | ||||||
| 	qse_xli_t*        xli, | 	qse_xli_t*        xli, | ||||||
| 	qse_xli_list_t*   list, | 	qse_xli_list_t*   list, | ||||||
|  | |||||||
| @ -109,6 +109,10 @@ int qse_xli_setopt (qse_xli_t* xli, qse_xli_opt_t id, const void* value) | |||||||
| 		case QSE_XLI_TRAIT: | 		case QSE_XLI_TRAIT: | ||||||
| 			xli->opt.trait = *(const int*)value; | 			xli->opt.trait = *(const int*)value; | ||||||
| 			return 0; | 			return 0; | ||||||
|  |  | ||||||
|  | 		case QSE_XLI_PAIRXTNSIZE: | ||||||
|  | 			xli->opt.pair_xtnsize = *(const qse_size_t*)value;	 | ||||||
|  | 			return 0; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	qse_xli_seterrnum (xli, QSE_XLI_EINVAL, QSE_NULL); | 	qse_xli_seterrnum (xli, QSE_XLI_EINVAL, QSE_NULL); | ||||||
| @ -122,6 +126,10 @@ int qse_xli_getopt (qse_xli_t* xli, qse_xli_opt_t  id, void* value) | |||||||
| 		case QSE_XLI_TRAIT: | 		case QSE_XLI_TRAIT: | ||||||
| 			*(int*)value = xli->opt.trait; | 			*(int*)value = xli->opt.trait; | ||||||
| 			return 0; | 			return 0; | ||||||
|  |  | ||||||
|  | 		case QSE_XLI_PAIRXTNSIZE: | ||||||
|  | 			*(qse_size_t*)value = xli->opt.pair_xtnsize; | ||||||
|  | 			return 0; | ||||||
| 	}; | 	}; | ||||||
|  |  | ||||||
| 	qse_xli_seterrnum (xli, QSE_XLI_EINVAL, QSE_NULL); | 	qse_xli_seterrnum (xli, QSE_XLI_EINVAL, QSE_NULL); | ||||||
| @ -214,12 +222,12 @@ static qse_xli_pair_t* insert_pair ( | |||||||
| 	alen = alias? alias->len: 0; | 	alen = alias? alias->len: 0; | ||||||
|  |  | ||||||
| 	pair = qse_xli_callocmem (xli,  | 	pair = qse_xli_callocmem (xli,  | ||||||
| 		QSE_SIZEOF(*pair) +  | 		QSE_SIZEOF(*pair) + xli->opt.pair_xtnsize + | ||||||
| 		((key->len + 1) * QSE_SIZEOF(*key->ptr)) +  | 		((key->len + 1) * QSE_SIZEOF(*key->ptr)) +  | ||||||
| 		((alen + 1) * QSE_SIZEOF(*alias->ptr))); | 		((alen + 1) * QSE_SIZEOF(*alias->ptr))); | ||||||
| 	if (pair == QSE_NULL) return QSE_NULL; | 	if (pair == QSE_NULL) return QSE_NULL; | ||||||
|  |  | ||||||
| 	kptr = (qse_char_t*)(pair + 1); | 	kptr = (qse_char_t*)((qse_uint8_t*)(pair + 1) + xli->opt.pair_xtnsize); | ||||||
| 	qse_strcpy (kptr, key->ptr); | 	qse_strcpy (kptr, key->ptr); | ||||||
|  |  | ||||||
| 	pair->type = QSE_XLI_PAIR; | 	pair->type = QSE_XLI_PAIR; | ||||||
| @ -236,6 +244,11 @@ static qse_xli_pair_t* insert_pair ( | |||||||
| 	return pair; | 	return pair; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void* qse_xli_getpairxtn (qse_xli_t* xli, qse_xli_pair_t* pair) | ||||||
|  | { | ||||||
|  | 	return (void*)(pair + 1); | ||||||
|  | } | ||||||
|  |  | ||||||
| qse_xli_pair_t* qse_xli_insertpair ( | qse_xli_pair_t* qse_xli_insertpair ( | ||||||
| 	qse_xli_t* xli, qse_xli_list_t* parent, qse_xli_atom_t* peer, | 	qse_xli_t* xli, qse_xli_list_t* parent, qse_xli_atom_t* peer, | ||||||
| 	const qse_char_t* key, const qse_char_t* alias, qse_xli_val_t* value) | 	const qse_char_t* key, const qse_char_t* alias, qse_xli_val_t* value) | ||||||
|  | |||||||
| @ -54,7 +54,8 @@ struct qse_xli_t | |||||||
|  |  | ||||||
| 	struct | 	struct | ||||||
| 	{ | 	{ | ||||||
| 		int  trait;           | 		int trait;           | ||||||
|  | 		qse_size_t pair_xtnsize; | ||||||
| 	} opt; | 	} opt; | ||||||
|  |  | ||||||
| 	qse_xli_ecb_t* ecb; | 	qse_xli_ecb_t* ecb; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user