added qse_awk_getxtnstd() and enhanced qse_awk_openstd()
This commit is contained in:
		| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: awk.c 75 2009-02-22 14:10:34Z hyunghwan.chung $  | ||||
|  * $Id: awk.c 85 2009-02-26 10:56:12Z hyunghwan.chung $  | ||||
|  * | ||||
|    Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|  | ||||
| @ -78,10 +78,20 @@ qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t xtn, qse_awk_prm_t* prm) | ||||
| 	awk->mmgr = mmgr; | ||||
|  | ||||
| 	/* progagate the primitive functions */ | ||||
| 	QSE_ASSERT (prm          != QSE_NULL); | ||||
| 	QSE_ASSERT (prm->pow     != QSE_NULL); | ||||
| 	QSE_ASSERT (prm->sprintf != QSE_NULL); | ||||
| 	QSE_ASSERT (prm->isccls  != QSE_NULL); | ||||
| 	QSE_ASSERT (prm->toccls  != QSE_NULL); | ||||
| 	if (prm          == QSE_NULL ||  | ||||
| 	    prm->pow     == QSE_NULL || | ||||
| 	    prm->sprintf == QSE_NULL || | ||||
| 	    prm->isccls  == QSE_NULL || | ||||
| 	    prm->toccls  == QSE_NULL) | ||||
| 	{ | ||||
| 		QSE_AWK_FREE (awk, awk); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
| 	awk->prm = *prm; | ||||
|  | ||||
| 	/* build a character classifier from the primitive functions */ | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: parse.c 75 2009-02-22 14:10:34Z hyunghwan.chung $ | ||||
|  * $Id: parse.c 85 2009-02-26 10:56:12Z hyunghwan.chung $ | ||||
|  * | ||||
|    Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|  | ||||
| @ -469,9 +469,16 @@ int qse_awk_parse (qse_awk_t* awk, qse_awk_sio_t* sio) | ||||
| { | ||||
| 	int n; | ||||
|  | ||||
| 	QSE_ASSERTX ( | ||||
| 		sio != QSE_NULL && sio->in != QSE_NULL, | ||||
| 	QSE_ASSERTX (sio != QSE_NULL , | ||||
| 		"the source code istream must be provided"); | ||||
| 	QSE_ASSERTX (sio->in != QSE_NULL, | ||||
| 		"the source code input stream must be provided at least"); | ||||
| 	if (sio == QSE_NULL || sio->in == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR (awk, QSE_AWK_EINVAL); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| 	QSE_ASSERT (awk->parse.depth.cur.loop == 0); | ||||
| 	QSE_ASSERT (awk->parse.depth.cur.expr == 0); | ||||
|  | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: std.c 84 2009-02-25 10:35:22Z hyunghwan.chung $ | ||||
|  * $Id: std.c 85 2009-02-26 10:56:12Z hyunghwan.chung $ | ||||
|  * | ||||
|    Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|  | ||||
| @ -138,7 +138,7 @@ static qse_cint_t custom_awk_toccls ( | ||||
|  | ||||
| static int add_functions (qse_awk_t* awk); | ||||
|  | ||||
| qse_awk_t* qse_awk_openstd (void) | ||||
| qse_awk_t* qse_awk_openstd (qse_size_t xtnsize) | ||||
| { | ||||
| 	qse_awk_t* awk; | ||||
| 	qse_awk_prm_t prm; | ||||
| @ -150,7 +150,8 @@ qse_awk_t* qse_awk_openstd (void) | ||||
| 	prm.toccls  = custom_awk_toccls; | ||||
|  | ||||
| 	/* create an object */ | ||||
| 	awk = qse_awk_open (QSE_MMGR_GETDFL(), QSE_SIZEOF(xtn_t), &prm); | ||||
| 	awk = qse_awk_open ( | ||||
| 		QSE_MMGR_GETDFL(), QSE_SIZEOF(xtn_t) + xtnsize, &prm); | ||||
| 	if (awk == QSE_NULL) return QSE_NULL; | ||||
|  | ||||
| 	/* initialize extension */ | ||||
| @ -167,6 +168,11 @@ qse_awk_t* qse_awk_openstd (void) | ||||
| 	return awk; | ||||
| } | ||||
|  | ||||
| void* qse_awk_getxtnstd (qse_awk_t* awk) | ||||
| { | ||||
| 	return (void*)((xtn_t*)QSE_XTN(awk) + 1); | ||||
| } | ||||
|  | ||||
| /*** PARSESTD ***/ | ||||
|  | ||||
| static qse_ssize_t sf_in ( | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: val.c 78 2009-02-23 14:03:28Z hyunghwan.chung $ | ||||
|  * $Id: val.c 85 2009-02-26 10:56:12Z hyunghwan.chung $ | ||||
|  * | ||||
|    Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|  | ||||
| @ -22,33 +22,7 @@ | ||||
| #include <qse/utl/stdio.h> | ||||
| #endif | ||||
|  | ||||
| #define CHUNKSIZE 100 | ||||
|  | ||||
| typedef struct qse_awk_val_ichunk_t qse_awk_val_ichunk_t; | ||||
| typedef struct qse_awk_val_rchunk_t qse_awk_val_rchunk_t; | ||||
|  | ||||
| struct qse_awk_val_chunk_t | ||||
| { | ||||
|         qse_awk_val_chunk_t* next; | ||||
| }; | ||||
|  | ||||
| struct qse_awk_val_ichunk_t | ||||
| { | ||||
| 	qse_awk_val_chunk_t* next; | ||||
| 	/* make sure that it has the same fields as  | ||||
| 	   qse_awk_val_chunk_t up to this point */ | ||||
|  | ||||
| 	qse_awk_val_int_t slot[CHUNKSIZE]; | ||||
| }; | ||||
|  | ||||
| struct qse_awk_val_rchunk_t | ||||
| { | ||||
| 	qse_awk_val_chunk_t* next; | ||||
| 	/* make sure that it has the same fields as  | ||||
| 	   qse_awk_val_chunk_t up to this point */ | ||||
|  | ||||
| 	qse_awk_val_real_t slot[CHUNKSIZE]; | ||||
| }; | ||||
| #define CHUNKSIZE QSE_AWK_VAL_CHUNK_SIZE | ||||
|  | ||||
| static qse_char_t* str_to_str ( | ||||
| 	qse_awk_rtx_t* run, const qse_char_t* str, qse_size_t str_len, | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: val.h 75 2009-02-22 14:10:34Z hyunghwan.chung $ | ||||
|  * $Id: val.h 85 2009-02-26 10:56:12Z hyunghwan.chung $ | ||||
|  * | ||||
|    Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|  | ||||
| @ -19,6 +19,35 @@ | ||||
| #ifndef _QSE_LIB_AWK_VAL_H_ | ||||
| #define _QSE_LIB_AWK_VAL_H_ | ||||
|  | ||||
| #define QSE_AWK_VAL_CHUNK_SIZE 100 | ||||
|  | ||||
| typedef struct qse_awk_val_chunk_t qse_awk_val_chunk_t; | ||||
| typedef struct qse_awk_val_ichunk_t qse_awk_val_ichunk_t; | ||||
| typedef struct qse_awk_val_rchunk_t qse_awk_val_rchunk_t; | ||||
|  | ||||
| struct qse_awk_val_chunk_t | ||||
| { | ||||
|         qse_awk_val_chunk_t* next; | ||||
| }; | ||||
|  | ||||
| struct qse_awk_val_ichunk_t | ||||
| { | ||||
| 	qse_awk_val_chunk_t* next; | ||||
| 	/* make sure that it has the same fields as  | ||||
| 	   qse_awk_val_chunk_t up to this point */ | ||||
|  | ||||
| 	qse_awk_val_int_t slot[QSE_AWK_VAL_CHUNK_SIZE]; | ||||
| }; | ||||
|  | ||||
| struct qse_awk_val_rchunk_t | ||||
| { | ||||
| 	qse_awk_val_chunk_t* next; | ||||
| 	/* make sure that it has the same fields as  | ||||
| 	   qse_awk_val_chunk_t up to this point */ | ||||
|  | ||||
| 	qse_awk_val_real_t slot[QSE_AWK_VAL_CHUNK_SIZE]; | ||||
| }; | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
		Reference in New Issue
	
	Block a user