touched up code
This commit is contained in:
		| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: Awk.cpp 257 2009-08-17 12:10:30Z hyunghwan.chung $ | ||||
|  * $Id: Awk.cpp 259 2009-08-20 11:28:03Z hyunghwan.chung $ | ||||
|  * | ||||
|    Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|  | ||||
| @ -358,9 +358,9 @@ Awk::Value::operator Awk::real_t () const | ||||
|  | ||||
| Awk::Value::operator const Awk::char_t* () const | ||||
| { | ||||
| 	const char_t* ptr; | ||||
| 	const Awk::char_t* ptr; | ||||
| 	size_t len; | ||||
| 	if (getStr (&ptr, &len) <= -1) ptr = QSE_T(""); | ||||
| 	if (Awk::Value::getStr (&ptr, &len) <= -1) ptr = QSE_T(""); | ||||
| 	return ptr; | ||||
| } | ||||
|  | ||||
| @ -1783,5 +1783,4 @@ int Awk::sprintf (awk_t* awk, char_t* buf, size_t size, | ||||
|  | ||||
| ///////////////////////////////// | ||||
| QSE_END_NAMESPACE(QSE) | ||||
| ///////////////////////////////// | ||||
|  | ||||
| ///////////////////////////////// | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: fnc.c 256 2009-08-16 13:44:20Z hyunghwan.chung $ | ||||
|  * $Id: fnc.c 259 2009-08-20 11:28:03Z hyunghwan.chung $ | ||||
|  * | ||||
|    Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|  | ||||
| @ -993,7 +993,7 @@ static int __substitute (qse_awk_rtx_t* run, qse_long_t max_count) | ||||
| 		{ | ||||
| 			FREE_A_PTRS (run->awk); | ||||
| 			/* a map is not allowed as the third parameter */ | ||||
| 			qse_awk_rtx_seterrnum (run, QSE_AWK_EMAPNOTALLOWED, QSE_NULL); | ||||
| 			qse_awk_rtx_seterrnum (run, QSE_AWK_EMAPNA, QSE_NULL); | ||||
| 			return -1; | ||||
| 		} | ||||
|  | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: parse.c 258 2009-08-19 14:04:15Z hyunghwan.chung $ | ||||
|  * $Id: parse.c 259 2009-08-20 11:28:03Z hyunghwan.chung $ | ||||
|  * | ||||
|    Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|  | ||||
| @ -382,20 +382,20 @@ static global_t gtab[] = | ||||
| #define SETERR_CODE(awk,code) \ | ||||
| 	qse_awk_seterror (awk, code, QSE_NULL, 0) | ||||
|  | ||||
| #define SETERR_LIN(awk,code,line) \ | ||||
| #define SETERR_LOC(awk,code,line) \ | ||||
| 	qse_awk_seterror (awk, code, QSE_NULL, line) | ||||
|  | ||||
| #define SETERR_ARG(awk,code,arg,leng) \ | ||||
| #define SETERR_ARG(awk,code,ep,el) \ | ||||
| 	do { \ | ||||
| 		qse_cstr_t __ea; \ | ||||
| 		__ea.len = (leng); __ea.ptr = (arg); \ | ||||
| 		__ea.len = (el); __ea.ptr = (ep); \ | ||||
| 		qse_awk_seterror ((awk), (code), &__ea, 0); \ | ||||
| 	} while (0) | ||||
|  | ||||
| #define SETERR_ARG_LOC(awk,code,arg,leng,line) \ | ||||
| #define SETERR_ARG_LOC(awk,code,ep,el,line) \ | ||||
| 	do { \ | ||||
| 		qse_cstr_t __ea; \ | ||||
| 		__ea.len = (leng); __ea.ptr = (arg); \ | ||||
| 		__ea.len = (el); __ea.ptr = (ep); \ | ||||
| 		qse_awk_seterror ((awk), (code), &__ea, (line)); \ | ||||
| 	} while (0) | ||||
|  | ||||
| @ -674,7 +674,7 @@ static int begin_include (qse_awk_t* awk) | ||||
| 	); | ||||
| 	if (pair == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, awk->ptoken.lin); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, awk->ptoken.lin); | ||||
| 		goto oops; | ||||
| 	} | ||||
|  | ||||
| @ -684,7 +684,7 @@ static int begin_include (qse_awk_t* awk) | ||||
| 	arg = (qse_awk_sio_arg_t*) QSE_MMGR_ALLOC (awk->mmgr, QSE_SIZEOF(*arg)); | ||||
| 	if (arg == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, awk->ptoken.lin); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, awk->ptoken.lin); | ||||
| 		goto oops; | ||||
| 	} | ||||
|  | ||||
| @ -807,7 +807,7 @@ retry: | ||||
| 			if (awk->parse.depth.max.incl > 0 && | ||||
| 			    awk->parse.depth.cur.incl >=  awk->parse.depth.max.incl) | ||||
| 			{ | ||||
| 				SETERR_LIN (awk, QSE_AWK_EINCLTD, awk->ptoken.lin); | ||||
| 				SETERR_LOC (awk, QSE_AWK_EINCLTD, awk->ptoken.lin); | ||||
| 				return QSE_NULL; | ||||
| 			} | ||||
|  | ||||
| @ -815,7 +815,7 @@ retry: | ||||
|  | ||||
| 			if (!MATCH(awk,TOKEN_STR)) | ||||
| 			{ | ||||
| 				SETERR_LIN (awk, QSE_AWK_EINCLSTR, awk->ptoken.lin); | ||||
| 				SETERR_LOC (awk, QSE_AWK_EINCLSTR, awk->ptoken.lin); | ||||
| 				return QSE_NULL; | ||||
| 			} | ||||
|  | ||||
| @ -857,7 +857,7 @@ retry: | ||||
| 		{ | ||||
| 			/* when QSE_AWK_NEWLINE is set, | ||||
| 	   		 * BEGIN and { should be located on the same line */ | ||||
| 			SETERR_LIN (awk, QSE_AWK_EBLKBEG, awk->ptoken.lin); | ||||
| 			SETERR_LOC (awk, QSE_AWK_EBLKBEG, awk->ptoken.lin); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -885,7 +885,7 @@ retry: | ||||
| 		{ | ||||
| 			/* when QSE_AWK_NEWLINE is set, | ||||
| 	   		 * END and { should be located on the same line */ | ||||
| 			SETERR_LIN (awk, QSE_AWK_EBLKEND, awk->ptoken.lin); | ||||
| 			SETERR_LOC (awk, QSE_AWK_EBLKEND, awk->ptoken.lin); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -983,7 +983,7 @@ retry: | ||||
| 				/* blockless pattern requires QSE_AWK_RIO | ||||
| 				 * to be ON because the implicit block is | ||||
| 				 * "print $0" */ | ||||
| 				SETERR_LIN (awk, QSE_AWK_ENOSUP, tline); | ||||
| 				SETERR_LOC (awk, QSE_AWK_ENOSUP, tline); | ||||
| 				return QSE_NULL; | ||||
| 			} | ||||
| 		} | ||||
| @ -1069,7 +1069,7 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk) | ||||
| 	name_dup = QSE_AWK_STRXDUP (awk, name, name_len); | ||||
| 	if (name_dup == QSE_NULL)  | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, awk->token.lin); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, awk->token.lin); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -1155,7 +1155,7 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk) | ||||
| 			{ | ||||
| 				QSE_AWK_FREE (awk, name_dup); | ||||
| 				qse_lda_clear (awk->parse.params); | ||||
| 				SETERR_LIN (awk, QSE_AWK_EPARTM, awk->token.lin); | ||||
| 				SETERR_LOC (awk, QSE_AWK_EPARTM, awk->token.lin); | ||||
| 				return QSE_NULL; | ||||
| 			} | ||||
|  | ||||
| @ -1167,7 +1167,7 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk) | ||||
| 				QSE_AWK_FREE (awk, name_dup); | ||||
| 				qse_lda_clear (awk->parse.params); | ||||
|  | ||||
| 				SETERR_LIN (awk, QSE_AWK_ENOMEM, awk->token.lin); | ||||
| 				SETERR_LOC (awk, QSE_AWK_ENOMEM, awk->token.lin); | ||||
| 				return QSE_NULL; | ||||
| 			}	 | ||||
|  | ||||
| @ -1270,7 +1270,7 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk) | ||||
| 		QSE_AWK_FREE (awk, name_dup); | ||||
| 		qse_awk_clrpt (awk, body); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, awk->token.lin); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, awk->token.lin); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -1289,7 +1289,7 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk) | ||||
| 		qse_awk_clrpt (awk, body); | ||||
| 		QSE_AWK_FREE (awk, fun); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, awk->token.lin); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, awk->token.lin); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -1373,7 +1373,7 @@ static qse_awk_chain_t* parse_pattern_block ( | ||||
| 	{ | ||||
| 		qse_awk_clrpt (awk, nde); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -1457,8 +1457,8 @@ static qse_awk_nde_t* parse_block ( | ||||
| 				QSE_LDA_SIZE(awk->parse.lcls) - nlcls); | ||||
| 			if (head != QSE_NULL) qse_awk_clrpt (awk, head); | ||||
|  | ||||
| 			/*SETERR_LIN (awk, QSE_AWK_EEOF, awk->ptoken.lin);*/ | ||||
| 			SETERR_LIN (awk, QSE_AWK_EEOF, awk->token.lin); | ||||
| 			/*SETERR_LOC (awk, QSE_AWK_EEOF, awk->ptoken.lin);*/ | ||||
| 			SETERR_LOC (awk, QSE_AWK_EEOF, awk->token.lin); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -1516,7 +1516,7 @@ static qse_awk_nde_t* parse_block ( | ||||
| 			QSE_LDA_SIZE(awk->parse.lcls)-nlcls); | ||||
| 		qse_awk_clrpt (awk, head); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -1561,7 +1561,7 @@ static qse_awk_nde_t* parse_block_dc ( | ||||
| 	if (awk->parse.depth.max.block > 0 && | ||||
| 	    awk->parse.depth.cur.block >= awk->parse.depth.max.block) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_EBLKNST, awk->ptoken.lin); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EBLKNST, awk->ptoken.lin); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -1738,7 +1738,7 @@ static int add_global ( | ||||
| 	ngbls = QSE_LDA_SIZE (awk->parse.gbls); | ||||
| 	if (ngbls >= QSE_AWK_MAX_GBLS) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_EGBLTM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EGBLTM, line); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| @ -1746,7 +1746,7 @@ static int add_global ( | ||||
| 		QSE_LDA_SIZE(awk->parse.gbls),  | ||||
| 		(qse_char_t*)name, len) == QSE_LDA_NIL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| @ -1973,7 +1973,7 @@ static qse_awk_t* collect_locals ( | ||||
|  | ||||
| 		if (QSE_LDA_SIZE(awk->parse.lcls) >= QSE_AWK_MAX_LCLS) | ||||
| 		{ | ||||
| 			SETERR_LIN (awk, QSE_AWK_ELCLTM, awk->token.lin); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ELCLTM, awk->token.lin); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -1982,7 +1982,7 @@ static qse_awk_t* collect_locals ( | ||||
| 			QSE_LDA_SIZE(awk->parse.lcls), | ||||
| 			lcl.ptr, lcl.len) == QSE_LDA_NIL) | ||||
| 		{ | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, awk->token.lin); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, awk->token.lin); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -2034,7 +2034,7 @@ static qse_awk_nde_t* parse_statement (qse_awk_t* awk, qse_size_t line) | ||||
| 			QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_t)); | ||||
| 		if (nde == QSE_NULL)  | ||||
| 		{ | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -2200,7 +2200,7 @@ static qse_awk_nde_t* parse_statement_nb (qse_awk_t* awk, qse_size_t line) | ||||
| 	else | ||||
| 	{ | ||||
| 		if (nde != QSE_NULL) qse_awk_clrpt (awk, nde); | ||||
| 		SETERR_LIN (awk, QSE_AWK_ESTMEND, awk->ptoken.lin); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ESTMEND, awk->ptoken.lin); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -2214,7 +2214,7 @@ static qse_awk_nde_t* parse_expression (qse_awk_t* awk, qse_size_t line) | ||||
| 	if (awk->parse.depth.max.expr > 0 && | ||||
| 	    awk->parse.depth.cur.expr >= awk->parse.depth.max.expr) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_EEXPRNST, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EEXPRNST, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -2275,7 +2275,7 @@ static qse_awk_nde_t* parse_expression0 (qse_awk_t* awk, qse_size_t line) | ||||
| 	if (!is_var(x) && x->type != QSE_AWK_NDE_POS)  | ||||
| 	{ | ||||
| 		qse_awk_clrpt (awk, x); | ||||
| 		SETERR_LIN (awk, QSE_AWK_EASSIGN, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EASSIGN, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -2300,7 +2300,7 @@ static qse_awk_nde_t* parse_expression0 (qse_awk_t* awk, qse_size_t line) | ||||
| 		qse_awk_clrpt (awk, x); | ||||
| 		qse_awk_clrpt (awk, y); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -2359,7 +2359,7 @@ static qse_awk_nde_t* parse_basic_expr (qse_awk_t* awk, qse_size_t line) | ||||
| 			qse_awk_clrpt (awk, n1); | ||||
| 			qse_awk_clrpt (awk, n2); | ||||
|  | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -2428,7 +2428,7 @@ static qse_awk_nde_t* parse_binary_expr ( | ||||
| 			qse_awk_clrpt (awk, right); | ||||
| 			qse_awk_clrpt (awk, left); | ||||
|  | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -2510,7 +2510,7 @@ static qse_awk_nde_t* parse_in (qse_awk_t* awk, qse_size_t line) | ||||
| 			qse_awk_clrpt (awk, right); | ||||
| 			qse_awk_clrpt (awk, left); | ||||
|  | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOTVAR, line2); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOTVAR, line2); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -2521,7 +2521,7 @@ static qse_awk_nde_t* parse_in (qse_awk_t* awk, qse_size_t line) | ||||
| 			qse_awk_clrpt (awk, right); | ||||
| 			qse_awk_clrpt (awk, left); | ||||
|  | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -2666,7 +2666,7 @@ static qse_awk_nde_t* parse_concat (qse_awk_t* awk, qse_size_t line) | ||||
| 			qse_awk_clrpt (awk, left); | ||||
| 			qse_awk_clrpt (awk, right); | ||||
|  | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -2730,7 +2730,7 @@ static qse_awk_nde_t* parse_unary (qse_awk_t* awk, qse_size_t line) | ||||
| 	if (awk->parse.depth.max.expr > 0 && | ||||
| 	    awk->parse.depth.cur.expr >= awk->parse.depth.max.expr) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_EEXPRNST, awk->token.lin); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EEXPRNST, awk->token.lin); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
| 	awk->parse.depth.cur.expr++; | ||||
| @ -2744,7 +2744,7 @@ static qse_awk_nde_t* parse_unary (qse_awk_t* awk, qse_size_t line) | ||||
| 	{ | ||||
| 		qse_awk_clrpt (awk, left); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -2788,7 +2788,7 @@ static qse_awk_nde_t* parse_unary_exp (qse_awk_t* awk, qse_size_t line) | ||||
| 	if (awk->parse.depth.max.expr > 0 && | ||||
| 	    awk->parse.depth.cur.expr >= awk->parse.depth.max.expr) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_EEXPRNST, awk->token.lin); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EEXPRNST, awk->token.lin); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
| 	awk->parse.depth.cur.expr++; | ||||
| @ -2802,7 +2802,7 @@ static qse_awk_nde_t* parse_unary_exp (qse_awk_t* awk, qse_size_t line) | ||||
| 	{ | ||||
| 		qse_awk_clrpt (awk, left); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -2844,7 +2844,7 @@ static qse_awk_nde_t* parse_increment (qse_awk_t* awk, qse_size_t line) | ||||
| 		 * not allowed */ | ||||
| 		qse_awk_clrpt (awk, left); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_EPREPST, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EPREPST, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
| 	else if (opcode1 == -1 && opcode2 == -1) | ||||
| @ -2874,7 +2874,7 @@ static qse_awk_nde_t* parse_increment (qse_awk_t* awk, qse_size_t line) | ||||
| 	if (!is_var(left) && left->type != QSE_AWK_NDE_POS) | ||||
| 	{ | ||||
| 		qse_awk_clrpt (awk, left); | ||||
| 		SETERR_LIN (awk, QSE_AWK_EINCDECOPR, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EINCDECOPR, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -2883,7 +2883,7 @@ static qse_awk_nde_t* parse_increment (qse_awk_t* awk, qse_size_t line) | ||||
| 	if (nde == QSE_NULL) | ||||
| 	{ | ||||
| 		qse_awk_clrpt (awk, left); | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -2911,7 +2911,7 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line) | ||||
| 			awk, QSE_SIZEOF(qse_awk_nde_int_t)); | ||||
| 		if (nde == QSE_NULL) | ||||
| 		{ | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -2952,7 +2952,7 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line) | ||||
| 			awk, QSE_SIZEOF(qse_awk_nde_real_t)); | ||||
| 		if (nde == QSE_NULL) | ||||
| 		{ | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -2993,7 +2993,7 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line) | ||||
| 			awk, QSE_SIZEOF(qse_awk_nde_str_t)); | ||||
| 		if (nde == QSE_NULL) | ||||
| 		{ | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3006,7 +3006,7 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line) | ||||
| 		if (nde->ptr == QSE_NULL)  | ||||
| 		{ | ||||
| 			QSE_AWK_FREE (awk, nde); | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3038,7 +3038,7 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line) | ||||
| 			awk, QSE_SIZEOF(qse_awk_nde_rex_t)); | ||||
| 		if (nde == QSE_NULL) | ||||
| 		{ | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3053,7 +3053,7 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line) | ||||
| 		if (nde->ptr == QSE_NULL) | ||||
| 		{ | ||||
| 			QSE_AWK_FREE (awk, nde); | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3066,7 +3066,7 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line) | ||||
| 			QSE_AWK_FREE (awk, nde->ptr); | ||||
| 			QSE_AWK_FREE (awk, nde); | ||||
|  | ||||
| 			SETERR_LIN (awk, errnum, line); | ||||
| 			SETERR_LOC (awk, errnum, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3095,7 +3095,7 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line) | ||||
| 		if (nde == QSE_NULL)  | ||||
| 		{ | ||||
| 			qse_awk_clrpt (awk, prim); | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3189,7 +3189,7 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line) | ||||
| 			if (tmp == QSE_NULL) | ||||
| 			{ | ||||
| 				qse_awk_clrpt (awk, nde); | ||||
| 				SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 				SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 				return QSE_NULL; | ||||
| 			}	 | ||||
|  | ||||
| @ -3244,7 +3244,7 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line) | ||||
| 		{ | ||||
| 			if (var != QSE_NULL) qse_awk_clrpt (awk, var); | ||||
| 			if (in != QSE_NULL) qse_awk_clrpt (awk, in); | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3341,7 +3341,7 @@ static qse_awk_nde_t* parse_primary (qse_awk_t* awk, qse_size_t line) | ||||
| 		{ | ||||
| 			qse_awk_clrpt (awk, left); | ||||
|  | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3373,7 +3373,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line) | ||||
| 		QSE_STR_LEN(awk->token.name)); | ||||
| 	if (name_dup == QSE_NULL)  | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
| 	name_len = QSE_STR_LEN(awk->token.name); | ||||
| @ -3442,7 +3442,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line) | ||||
| 		if (nde == QSE_NULL)  | ||||
| 		{ | ||||
| 			QSE_AWK_FREE (awk, name_dup); | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3476,7 +3476,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line) | ||||
| 		if (nde == QSE_NULL)  | ||||
| 		{ | ||||
| 			QSE_AWK_FREE (awk, name_dup); | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3510,7 +3510,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line) | ||||
| 		if (nde == QSE_NULL)  | ||||
| 		{ | ||||
| 			QSE_AWK_FREE (awk, name_dup); | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3556,7 +3556,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line) | ||||
| 		if (nde == QSE_NULL)  | ||||
| 		{ | ||||
| 			QSE_AWK_FREE (awk, name_dup); | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| @ -3608,7 +3608,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line) | ||||
| 				name_dup, name_len,  | ||||
| 				&line, QSE_SIZEOF(line)) == QSE_NULL) | ||||
| 			{ | ||||
| 				  SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 				  SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 				  goto exit_func; | ||||
| 			} | ||||
|  | ||||
| @ -3685,7 +3685,7 @@ static qse_awk_nde_t* parse_hashidx ( | ||||
| 	if (nde == QSE_NULL)  | ||||
| 	{ | ||||
| 		qse_awk_clrpt (awk, idx); | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -3876,7 +3876,7 @@ make_node: | ||||
| 	{ | ||||
| 		if (head != QSE_NULL) qse_awk_clrpt (awk, head); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -3923,7 +3923,7 @@ make_node: | ||||
| 		{ | ||||
| 			QSE_AWK_FREE (awk, call); | ||||
| 			if (head != QSE_NULL) qse_awk_clrpt (awk, head); | ||||
| 			SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 			SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
| 	} | ||||
| @ -4008,7 +4008,7 @@ static qse_awk_nde_t* parse_if (qse_awk_t* awk, qse_size_t line) | ||||
| 		qse_awk_clrpt (awk, then_part); | ||||
| 		qse_awk_clrpt (awk, test); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4065,7 +4065,7 @@ static qse_awk_nde_t* parse_while (qse_awk_t* awk, qse_size_t line) | ||||
| 		qse_awk_clrpt (awk, body); | ||||
| 		qse_awk_clrpt (awk, test); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4135,7 +4135,7 @@ static qse_awk_nde_t* parse_for (qse_awk_t* awk, qse_size_t line) | ||||
| 				qse_awk_clrpt (awk, init); | ||||
| 				qse_awk_clrpt (awk, body); | ||||
|  | ||||
| 				SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 				SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 				return QSE_NULL; | ||||
| 			} | ||||
|  | ||||
| @ -4249,7 +4249,7 @@ static qse_awk_nde_t* parse_for (qse_awk_t* awk, qse_size_t line) | ||||
| 		qse_awk_clrpt (awk, incr); | ||||
| 		qse_awk_clrpt (awk, body); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4341,7 +4341,7 @@ static qse_awk_nde_t* parse_dowhile (qse_awk_t* awk, qse_size_t line) | ||||
| 		qse_awk_clrpt (awk, body); | ||||
| 		qse_awk_clrpt (awk, test); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4361,7 +4361,7 @@ static qse_awk_nde_t* parse_break (qse_awk_t* awk, qse_size_t line) | ||||
| 	QSE_ASSERT (awk->ptoken.type == TOKEN_BREAK); | ||||
| 	if (awk->parse.depth.cur.loop <= 0)  | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_EBREAK, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EBREAK, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4369,7 +4369,7 @@ static qse_awk_nde_t* parse_break (qse_awk_t* awk, qse_size_t line) | ||||
| 		QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_break_t)); | ||||
| 	if (nde == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4387,7 +4387,7 @@ static qse_awk_nde_t* parse_continue (qse_awk_t* awk, qse_size_t line) | ||||
| 	QSE_ASSERT (awk->ptoken.type == TOKEN_CONTINUE); | ||||
| 	if (awk->parse.depth.cur.loop <= 0)  | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ECONTINUE, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ECONTINUE, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4395,7 +4395,7 @@ static qse_awk_nde_t* parse_continue (qse_awk_t* awk, qse_size_t line) | ||||
| 		QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_continue_t)); | ||||
| 	if (nde == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4417,7 +4417,7 @@ static qse_awk_nde_t* parse_return (qse_awk_t* awk, qse_size_t line) | ||||
| 		awk, QSE_SIZEOF(qse_awk_nde_return_t)); | ||||
| 	if (nde == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4455,7 +4455,7 @@ static qse_awk_nde_t* parse_exit (qse_awk_t* awk, qse_size_t line) | ||||
| 		QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_exit_t)); | ||||
| 	if (nde == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4490,12 +4490,12 @@ static qse_awk_nde_t* parse_next (qse_awk_t* awk, qse_size_t line) | ||||
|  | ||||
| 	if (awk->parse.id.block == PARSE_BEGIN_BLOCK) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENEXTBEG, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENEXTBEG, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
| 	if (awk->parse.id.block == PARSE_END_BLOCK) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENEXTEND, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENEXTEND, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4503,7 +4503,7 @@ static qse_awk_nde_t* parse_next (qse_awk_t* awk, qse_size_t line) | ||||
| 		QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_next_t)); | ||||
| 	if (nde == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
| 	nde->type = QSE_AWK_NDE_NEXT; | ||||
| @ -4519,12 +4519,12 @@ static qse_awk_nde_t* parse_nextfile (qse_awk_t* awk, qse_size_t line, int out) | ||||
|  | ||||
| 	if (!out && awk->parse.id.block == PARSE_BEGIN_BLOCK) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENEXTFBEG, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENEXTFBEG, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
| 	if (!out && awk->parse.id.block == PARSE_END_BLOCK) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENEXTFEND, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENEXTFEND, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4532,7 +4532,7 @@ static qse_awk_nde_t* parse_nextfile (qse_awk_t* awk, qse_size_t line, int out) | ||||
| 		QSE_AWK_ALLOC (awk, QSE_SIZEOF(qse_awk_nde_nextfile_t)); | ||||
| 	if (nde == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4563,7 +4563,7 @@ static qse_awk_nde_t* parse_delete (qse_awk_t* awk, qse_size_t line) | ||||
| 	{ | ||||
| 		/* a normal identifier is expected */ | ||||
| 		qse_awk_clrpt (awk, var); | ||||
| 		SETERR_LIN (awk, QSE_AWK_EDELETE, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EDELETE, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4571,7 +4571,7 @@ static qse_awk_nde_t* parse_delete (qse_awk_t* awk, qse_size_t line) | ||||
| 		awk, QSE_SIZEOF(qse_awk_nde_delete_t)); | ||||
| 	if (nde == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4603,7 +4603,7 @@ static qse_awk_nde_t* parse_reset (qse_awk_t* awk, qse_size_t line) | ||||
| 	{ | ||||
| 		/* a normal identifier is expected */ | ||||
| 		qse_awk_clrpt (awk, var); | ||||
| 		SETERR_LIN (awk, QSE_AWK_ERESET, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ERESET, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4611,7 +4611,7 @@ static qse_awk_nde_t* parse_reset (qse_awk_t* awk, qse_size_t line) | ||||
| 		awk, QSE_SIZEOF(qse_awk_nde_reset_t)); | ||||
| 	if (nde == QSE_NULL) | ||||
| 	{ | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4767,7 +4767,7 @@ static qse_awk_nde_t* parse_print (qse_awk_t* awk, qse_size_t line, int type) | ||||
| 		if (args != QSE_NULL) qse_awk_clrpt (awk, args); | ||||
| 		if (out != QSE_NULL) qse_awk_clrpt (awk, out); | ||||
|  | ||||
| 		SETERR_LIN (awk, QSE_AWK_ENOMEM, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_ENOMEM, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -4778,7 +4778,7 @@ static qse_awk_nde_t* parse_print (qse_awk_t* awk, qse_size_t line, int type) | ||||
| 	if (type == QSE_AWK_NDE_PRINTF && args == QSE_NULL) | ||||
| 	{ | ||||
| 		if (out != QSE_NULL) qse_awk_clrpt (awk, out); | ||||
| 		SETERR_LIN (awk, QSE_AWK_EPRINTFARG, line); | ||||
| 		SETERR_LOC (awk, QSE_AWK_EPRINTFARG, line); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -5181,7 +5181,7 @@ static int skip_comment (qse_awk_t* awk) | ||||
| 			GET_CHAR_TO (awk, c); | ||||
| 			if (c == QSE_CHAR_EOF) | ||||
| 			{ | ||||
| 				SETERR_LIN (awk, QSE_AWK_ECMTNC, awk->sio.inp->lin); | ||||
| 				SETERR_LOC (awk, QSE_AWK_ECMTNC, awk->sio.inp->lin); | ||||
| 				return -1; | ||||
| 			} | ||||
|  | ||||
| @ -5190,7 +5190,7 @@ static int skip_comment (qse_awk_t* awk) | ||||
| 				GET_CHAR_TO (awk, c); | ||||
| 				if (c == QSE_CHAR_EOF) | ||||
| 				{ | ||||
| 					SETERR_LIN (awk, QSE_AWK_ECMTNC, awk->sio.inp->lin); | ||||
| 					SETERR_LOC (awk, QSE_AWK_ECMTNC, awk->sio.inp->lin); | ||||
| 					return -1; | ||||
| 				} | ||||
|  | ||||
|  | ||||
							
								
								
									
										1380
									
								
								qse/lib/awk/run.c
									
									
									
									
									
								
							
							
						
						
									
										1380
									
								
								qse/lib/awk/run.c
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -1,5 +1,5 @@ | ||||
| /* | ||||
|  * $Id: val.c 255 2009-08-16 08:08:58Z hyunghwan.chung $ | ||||
|  * $Id: val.c 259 2009-08-20 11:28:03Z hyunghwan.chung $ | ||||
|  * | ||||
|    Copyright 2006-2009 Chung, Hyung-Hwan. | ||||
|  | ||||
| @ -60,7 +60,7 @@ qse_awk_val_t* qse_awk_val_negone = (qse_awk_val_t*)&awk_int[0]; | ||||
| qse_awk_val_t* qse_awk_val_zero = (qse_awk_val_t*)&awk_int[1]; | ||||
| qse_awk_val_t* qse_awk_val_one = (qse_awk_val_t*)&awk_int[2]; | ||||
|  | ||||
| qse_awk_val_t* qse_awk_rtx_makeintval (qse_awk_rtx_t* run, qse_long_t v) | ||||
| qse_awk_val_t* qse_awk_rtx_makeintval (qse_awk_rtx_t* rtx, qse_long_t v) | ||||
| { | ||||
| 	qse_awk_val_int_t* val; | ||||
|  | ||||
| @ -87,7 +87,7 @@ qse_awk_val_t* qse_awk_rtx_makeintval (qse_awk_rtx_t* run, qse_long_t v) | ||||
| 	} | ||||
| 	*/ | ||||
|  | ||||
| 	if (run->vmgr.ifree == QSE_NULL) | ||||
| 	if (rtx->vmgr.ifree == QSE_NULL) | ||||
| 	{ | ||||
| 		qse_awk_val_ichunk_t* c; | ||||
| 		/*qse_awk_val_int_t* x;*/ | ||||
| @ -101,16 +101,16 @@ qse_awk_val_t* qse_awk_rtx_makeintval (qse_awk_rtx_t* run, qse_long_t v) | ||||
| 		/* c = QSE_AWK_ALLOC (run->awk,  | ||||
| 			QSE_SIZEOF(qse_awk_val_chunk_t)+ | ||||
| 			QSE_SIZEOF(qse_awk_val_int_t)*CHUNKSIZE); */ | ||||
| 		c = QSE_AWK_ALLOC (run->awk, QSE_SIZEOF(qse_awk_val_ichunk_t)); | ||||
| 		c = QSE_AWK_ALLOC (rtx->awk, QSE_SIZEOF(qse_awk_val_ichunk_t)); | ||||
| 		if (c == QSE_NULL) | ||||
| 		{ | ||||
| 			qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 			qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| 		c->next = run->vmgr.ichunk; | ||||
| 		c->next = rtx->vmgr.ichunk; | ||||
| 		/*run->vmgr.ichunk = c;*/ | ||||
| 		run->vmgr.ichunk = (qse_awk_val_chunk_t*)c; | ||||
| 		rtx->vmgr.ichunk = (qse_awk_val_chunk_t*)c; | ||||
|  | ||||
| 		/*x = (qse_awk_val_int_t*)(c + 1); | ||||
| 		for (i = 0; i < CHUNKSIZE-1; i++)  | ||||
| @ -124,11 +124,11 @@ qse_awk_val_t* qse_awk_rtx_makeintval (qse_awk_rtx_t* run, qse_long_t v) | ||||
| 			c->slot[i].nde = (qse_awk_nde_int_t*)&c->slot[i+1]; | ||||
| 		c->slot[i].nde = QSE_NULL; | ||||
|  | ||||
| 		run->vmgr.ifree = &c->slot[0]; | ||||
| 		rtx->vmgr.ifree = &c->slot[0]; | ||||
| 	} | ||||
|  | ||||
| 	val = run->vmgr.ifree; | ||||
| 	run->vmgr.ifree = (qse_awk_val_int_t*)val->nde; | ||||
| 	val = rtx->vmgr.ifree; | ||||
| 	rtx->vmgr.ifree = (qse_awk_val_int_t*)val->nde; | ||||
|  | ||||
| 	val->type = QSE_AWK_VAL_INT; | ||||
| 	val->ref = 0; | ||||
| @ -142,7 +142,7 @@ qse_awk_val_t* qse_awk_rtx_makeintval (qse_awk_rtx_t* run, qse_long_t v) | ||||
| 	return (qse_awk_val_t*)val; | ||||
| } | ||||
|  | ||||
| qse_awk_val_t* qse_awk_rtx_makerealval (qse_awk_rtx_t* run, qse_real_t v) | ||||
| qse_awk_val_t* qse_awk_rtx_makerealval (qse_awk_rtx_t* rtx, qse_real_t v) | ||||
| { | ||||
| 	qse_awk_val_real_t* val; | ||||
|  | ||||
| @ -163,7 +163,7 @@ qse_awk_val_t* qse_awk_rtx_makerealval (qse_awk_rtx_t* run, qse_real_t v) | ||||
| 	} | ||||
| 	*/ | ||||
|  | ||||
| 	if (run->vmgr.rfree == QSE_NULL) | ||||
| 	if (rtx->vmgr.rfree == QSE_NULL) | ||||
| 	{ | ||||
| 		qse_awk_val_rchunk_t* c; | ||||
| 		/*qse_awk_val_real_t* x;*/ | ||||
| @ -172,16 +172,16 @@ qse_awk_val_t* qse_awk_rtx_makerealval (qse_awk_rtx_t* run, qse_real_t v) | ||||
| 		/* c = QSE_AWK_ALLOC (run->awk,  | ||||
| 			QSE_SIZEOF(qse_awk_val_chunk_t)+ | ||||
| 			QSE_SIZEOF(qse_awk_val_real_t)*CHUNKSIZE); */ | ||||
| 		c = QSE_AWK_ALLOC (run->awk, QSE_SIZEOF(qse_awk_val_rchunk_t)); | ||||
| 		c = QSE_AWK_ALLOC (rtx->awk, QSE_SIZEOF(qse_awk_val_rchunk_t)); | ||||
| 		if (c == QSE_NULL) | ||||
| 		{ | ||||
| 			qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 			qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| 		c->next = run->vmgr.rchunk; | ||||
| 		c->next = rtx->vmgr.rchunk; | ||||
| 		/*run->vmgr.rchunk = c;*/ | ||||
| 		run->vmgr.rchunk = (qse_awk_val_chunk_t*)c; | ||||
| 		rtx->vmgr.rchunk = (qse_awk_val_chunk_t*)c; | ||||
|  | ||||
| 		/* | ||||
| 		x = (qse_awk_val_real_t*)(c + 1); | ||||
| @ -196,11 +196,11 @@ qse_awk_val_t* qse_awk_rtx_makerealval (qse_awk_rtx_t* run, qse_real_t v) | ||||
| 			c->slot[i].nde = (qse_awk_nde_real_t*)&c->slot[i+1]; | ||||
| 		c->slot[i].nde = QSE_NULL; | ||||
|  | ||||
| 		run->vmgr.rfree = &c->slot[0]; | ||||
| 		rtx->vmgr.rfree = &c->slot[0]; | ||||
| 	} | ||||
|  | ||||
| 	val = run->vmgr.rfree; | ||||
| 	run->vmgr.rfree = (qse_awk_val_real_t*)val->nde; | ||||
| 	val = rtx->vmgr.rfree; | ||||
| 	rtx->vmgr.rfree = (qse_awk_val_real_t*)val->nde; | ||||
|  | ||||
| 	val->type = QSE_AWK_VAL_REAL; | ||||
| 	val->ref = 0; | ||||
| @ -215,13 +215,13 @@ qse_awk_val_t* qse_awk_rtx_makerealval (qse_awk_rtx_t* run, qse_real_t v) | ||||
| } | ||||
|  | ||||
| qse_awk_val_t* qse_awk_rtx_makestrval0 ( | ||||
| 	qse_awk_rtx_t* run, const qse_char_t* str) | ||||
| 	qse_awk_rtx_t* rtx, const qse_char_t* str) | ||||
| { | ||||
| 	return qse_awk_rtx_makestrval (run, str, qse_strlen(str)); | ||||
| 	return qse_awk_rtx_makestrval (rtx, str, qse_strlen(str)); | ||||
| } | ||||
|  | ||||
| qse_awk_val_t* qse_awk_rtx_makestrval ( | ||||
| 	qse_awk_rtx_t* run, const qse_char_t* str, qse_size_t len) | ||||
| 	qse_awk_rtx_t* rtx, const qse_char_t* str, qse_size_t len) | ||||
| { | ||||
| 	qse_awk_val_str_t* val; | ||||
| 	qse_size_t rlen = len; | ||||
| @ -246,12 +246,12 @@ qse_awk_val_t* qse_awk_rtx_makestrval ( | ||||
| 	}*/ | ||||
| 	 | ||||
| 	val = (qse_awk_val_str_t*) QSE_AWK_ALLOC ( | ||||
| 		run->awk,  | ||||
| 		rtx->awk, | ||||
| 		QSE_SIZEOF(qse_awk_val_str_t) +  | ||||
| 		(rlen+1)*QSE_SIZEOF(qse_char_t)); | ||||
| 	if (val == QSE_NULL)  | ||||
| 	{ | ||||
| 		qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
| /* | ||||
| @ -272,15 +272,15 @@ init: | ||||
| } | ||||
|  | ||||
| qse_awk_val_t* qse_awk_rtx_makestrval_nodup ( | ||||
| 	qse_awk_rtx_t* run, qse_char_t* str, qse_size_t len) | ||||
| 	qse_awk_rtx_t* rtx, qse_char_t* str, qse_size_t len) | ||||
| { | ||||
| 	qse_awk_val_str_t* val; | ||||
|  | ||||
| 	val = (qse_awk_val_str_t*) QSE_AWK_ALLOC ( | ||||
| 		run->awk, QSE_SIZEOF(qse_awk_val_str_t)); | ||||
| 		rtx->awk, QSE_SIZEOF(qse_awk_val_str_t)); | ||||
| 	if (val == QSE_NULL)  | ||||
| 	{ | ||||
| 		qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -293,7 +293,7 @@ qse_awk_val_t* qse_awk_rtx_makestrval_nodup ( | ||||
| } | ||||
|  | ||||
| qse_awk_val_t* qse_awk_rtx_makestrval2 ( | ||||
| 	qse_awk_rtx_t* run, | ||||
| 	qse_awk_rtx_t* rtx, | ||||
| 	const qse_char_t* str1, qse_size_t len1,  | ||||
| 	const qse_char_t* str2, qse_size_t len2) | ||||
| { | ||||
| @ -320,12 +320,12 @@ qse_awk_val_t* qse_awk_rtx_makestrval2 ( | ||||
| 	}*/ | ||||
|  | ||||
| 	val = (qse_awk_val_str_t*) QSE_AWK_ALLOC ( | ||||
| 		run->awk,  | ||||
| 		rtx->awk, | ||||
| 		QSE_SIZEOF(qse_awk_val_str_t) + | ||||
| 		(rlen+1)*QSE_SIZEOF(qse_char_t)); | ||||
| 	if (val == QSE_NULL)  | ||||
| 	{ | ||||
| 		qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -349,15 +349,15 @@ init: | ||||
| } | ||||
|  | ||||
| qse_awk_val_t* qse_awk_rtx_makenstrval ( | ||||
| 	qse_awk_rtx_t* run, const qse_char_t* str, qse_size_t len) | ||||
| 	qse_awk_rtx_t* rtx, const qse_char_t* str, qse_size_t len) | ||||
| { | ||||
| 	int x; | ||||
| 	qse_awk_val_t* v; | ||||
| 	qse_long_t l; | ||||
| 	qse_real_t r; | ||||
|  | ||||
| 	x = qse_awk_rtx_strtonum (run, 1, str, len, &l, &r); | ||||
| 	v = qse_awk_rtx_makestrval (run, str, len); | ||||
| 	x = qse_awk_rtx_strtonum (rtx, 1, str, len, &l, &r); | ||||
| 	v = qse_awk_rtx_makestrval (rtx, str, len); | ||||
|  | ||||
| 	if (v == QSE_NULL) return QSE_NULL; | ||||
|  | ||||
| @ -373,25 +373,25 @@ qse_awk_val_t* qse_awk_rtx_makenstrval ( | ||||
| } | ||||
|  | ||||
| qse_awk_val_t* qse_awk_rtx_makerexval ( | ||||
| 	qse_awk_rtx_t* run, const qse_char_t* buf, qse_size_t len, void* code) | ||||
| 	qse_awk_rtx_t* rtx, const qse_char_t* buf, qse_size_t len, void* code) | ||||
| { | ||||
| 	qse_awk_val_rex_t* val; | ||||
| 	qse_size_t totsz; | ||||
|  | ||||
| 	/* the regular expression value holds: | ||||
| 	 *   header | ||||
| 	 *   a raw string plus with added a terminating '\0' | ||||
| 	 *   a compiled regular expression  | ||||
| 	 * - header | ||||
| 	 * - a raw string plus with added a terminating '\0' | ||||
| 	 * - a compiled regular expression | ||||
| 	 * the total size is just large enough for all these. | ||||
| 	 */ | ||||
| 	totsz = QSE_SIZEOF(qse_awk_val_rex_t) +   | ||||
| 	        (QSE_SIZEOF(*buf) * (len + 1)) +  | ||||
| 	        QSE_REX_LEN(code);  | ||||
| 		 | ||||
| 	val = (qse_awk_val_rex_t*) QSE_AWK_ALLOC (run->awk, totsz); | ||||
| 	val = (qse_awk_val_rex_t*) QSE_AWK_ALLOC (rtx->awk, totsz); | ||||
| 	if (val == QSE_NULL)  | ||||
| 	{ | ||||
| 		qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -433,7 +433,7 @@ static void same_mapval (qse_map_t* map, void* dptr, qse_size_t dlen) | ||||
| 	qse_awk_rtx_refdownval_nofree (run, dptr); | ||||
| } | ||||
|  | ||||
| qse_awk_val_t* qse_awk_rtx_makemapval (qse_awk_rtx_t* run) | ||||
| qse_awk_val_t* qse_awk_rtx_makemapval (qse_awk_rtx_t* rtx) | ||||
| { | ||||
| 	qse_awk_val_map_t* val; | ||||
|  | ||||
| @ -461,13 +461,13 @@ qse_awk_val_t* qse_awk_rtx_makemapval (qse_awk_rtx_t* run) | ||||
| 	*/ | ||||
|  | ||||
| 	val = (qse_awk_val_map_t*) QSE_AWK_ALLOC ( | ||||
| 		run->awk,  | ||||
| 		rtx->awk, | ||||
| 		QSE_SIZEOF(qse_awk_val_map_t) + | ||||
| 		QSE_SIZEOF(qse_map_t) + | ||||
| 		QSE_SIZEOF(run)); | ||||
| 		QSE_SIZEOF(rtx)); | ||||
| 	if (val == QSE_NULL)  | ||||
| 	{ | ||||
| 		qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
|  | ||||
| @ -476,14 +476,14 @@ qse_awk_val_t* qse_awk_rtx_makemapval (qse_awk_rtx_t* run) | ||||
| 	val->nstr = 0; | ||||
| 	val->map = (qse_map_t*)(val + 1); | ||||
|  | ||||
| 	val->map = qse_map_init (val->map, run->awk->mmgr, 256, 70); | ||||
| 	val->map = qse_map_init (val->map, rtx->awk->mmgr, 256, 70); | ||||
| 	if (val->map == QSE_NULL) | ||||
| 	{ | ||||
| 		QSE_AWK_FREE (run->awk, val); | ||||
| 		qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		QSE_AWK_FREE (rtx->awk, val); | ||||
| 		qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 		return QSE_NULL; | ||||
| 	} | ||||
| 	*(qse_awk_rtx_t**)QSE_XTN(val->map) = run; | ||||
| 	*(qse_awk_rtx_t**)QSE_XTN(val->map) = rtx; | ||||
|  | ||||
| 	/* the key is copied inline into a pair and is freed when the pair | ||||
| 	 * is destroyed */ | ||||
| @ -500,21 +500,22 @@ qse_awk_val_t* qse_awk_rtx_makemapval (qse_awk_rtx_t* run) | ||||
| 	return (qse_awk_val_t*)val; | ||||
| } | ||||
|  | ||||
| qse_awk_val_t* qse_awk_rtx_makerefval (qse_awk_rtx_t* run, int id, qse_awk_val_t** adr) | ||||
| qse_awk_val_t* qse_awk_rtx_makerefval ( | ||||
| 	qse_awk_rtx_t* rtx, int id, qse_awk_val_t** adr) | ||||
| { | ||||
| 	qse_awk_val_ref_t* val; | ||||
|  | ||||
| 	if (run->fcache_count > 0) | ||||
| 	if (rtx->fcache_count > 0) | ||||
| 	{ | ||||
| 		val = run->fcache[--run->fcache_count]; | ||||
| 		val = rtx->fcache[--rtx->fcache_count]; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		val = (qse_awk_val_ref_t*) QSE_AWK_ALLOC ( | ||||
| 			run->awk, QSE_SIZEOF(qse_awk_val_ref_t)); | ||||
| 			rtx->awk, QSE_SIZEOF(qse_awk_val_ref_t)); | ||||
| 		if (val == QSE_NULL) | ||||
| 		{ | ||||
| 			qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 			qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
| 	} | ||||
| @ -659,7 +660,8 @@ void qse_awk_rtx_refdownval (qse_awk_rtx_t* rtx, qse_awk_val_t* val) | ||||
| #endif | ||||
|  | ||||
| 	QSE_ASSERTX (val->ref > 0,  | ||||
| 		"the reference count of a value should be greater than zero for it to be decremented. check the source code for any bugs"); | ||||
| 		"the reference count of a value should be greater than zero for it" | ||||
| 		" to be decremented. check the source code for any bugs"); | ||||
|  | ||||
| 	val->ref--; | ||||
| 	if (val->ref <= 0)  | ||||
| @ -673,7 +675,8 @@ void qse_awk_rtx_refdownval_nofree (qse_awk_rtx_t* rtx, qse_awk_val_t* val) | ||||
| 	if (IS_STATICVAL(val)) return; | ||||
|  | ||||
| 	QSE_ASSERTX (val->ref > 0, | ||||
| 		"the reference count of a value should be greater than zero for it to be decremented. check the source code for any bugs"); | ||||
| 		"the reference count of a value should be greater than zero for it" | ||||
| 		" to be decremented. check the source code for any bugs"); | ||||
| 	val->ref--; | ||||
| } | ||||
|  | ||||
| @ -715,56 +718,6 @@ qse_bool_t qse_awk_rtx_valtobool (qse_awk_rtx_t* run, qse_awk_val_t* val) | ||||
| 	return QSE_FALSE; | ||||
| } | ||||
|  | ||||
| #if 0 | ||||
| static qse_char_t* str_to_str ( | ||||
| 	qse_awk_rtx_t* run, const qse_char_t* str, qse_size_t str_len, | ||||
| 	int opt, qse_str_t* buf, qse_size_t* len) | ||||
| { | ||||
| 	if (buf == QSE_NULL) | ||||
| 	{ | ||||
| 		qse_char_t* tmp; | ||||
| 		tmp = QSE_AWK_STRXDUP (run->awk, str, str_len); | ||||
| 		if (tmp == QSE_NULL)  | ||||
| 		{ | ||||
| 			qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| 		if (len != QSE_NULL) *len = str_len; | ||||
| 		return tmp; | ||||
| 	} | ||||
| 	else if (opt & QSE_AWK_RTX_VALTOSTR_FIXED) | ||||
| 	{ | ||||
| 		QSE_ASSERT (buf != QSE_NULL && len != QSE_NULL); | ||||
|  | ||||
| 		if (str_len >= *len) | ||||
| 		{ | ||||
| 			qse_awk_rtx_seterrnum (run, QSE_AWK_EINVAL, QSE_NULL); | ||||
| 			*len = str_len + 1; | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| 		*len = qse_strncpy ((qse_char_t*)buf, str, str_len); | ||||
| 		return (qse_char_t*)buf; | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		qse_size_t n; | ||||
|  | ||||
| 		if (opt & QSE_AWK_RTX_VALTOSTR_CLEAR) qse_str_clear (buf); | ||||
| 		n = qse_str_ncat (buf, str, str_len); | ||||
| 		if (n == (qse_size_t)-1) | ||||
| 		{ | ||||
| 			qse_awk_rtx_seterrnum (run, QSE_AWK_ENOMEM, QSE_NULL); | ||||
| 			return QSE_NULL; | ||||
| 		} | ||||
|  | ||||
| 		if (len != QSE_NULL) *len = QSE_STR_LEN(buf); | ||||
| 		return QSE_STR_PTR(buf); | ||||
| 	} | ||||
| } | ||||
| #endif | ||||
|  | ||||
| static qse_char_t* str_to_str ( | ||||
| 	qse_awk_rtx_t* rtx, const qse_char_t* str, qse_size_t str_len, | ||||
| 	qse_awk_rtx_valtostr_out_t* out) | ||||
|  | ||||
		Reference in New Issue
	
	Block a user