touched up code

This commit is contained in:
2009-08-18 06:10:30 +00:00
parent 267a602d4b
commit 0f9d553ff8
35 changed files with 807 additions and 391 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: Awk.cpp 250 2009-08-10 03:29:59Z hyunghwan.chung $
* $Id: Awk.cpp 257 2009-08-17 12:10:30Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -920,14 +920,14 @@ const Awk::char_t* Awk::Run::getErrorMessage () const
return qse_awk_rtx_geterrmsg (this->rtx);
}
void Awk::Run::setError (ErrorNumber code, size_t line, const cstr_t* args)
void Awk::Run::setError (ErrorNumber code, const cstr_t* args, size_t line)
{
QSE_ASSERT (this->rtx != QSE_NULL);
qse_awk_rtx_seterror (this->rtx, (errnum_t)code, line, args);
qse_awk_rtx_seterror (this->rtx, (errnum_t)code, args, line);
}
void Awk::Run::setErrorWithMessage (
ErrorNumber code, size_t line, const char_t* msg)
ErrorNumber code, const char_t* msg, size_t line)
{
QSE_ASSERT (this->rtx != QSE_NULL);
@ -1037,11 +1037,11 @@ const Awk::char_t* Awk::getErrorMessage () const
return this->errinf.msg;
}
void Awk::setError (ErrorNumber code, size_t line, const cstr_t* args)
void Awk::setError (ErrorNumber code, const cstr_t* args, size_t line)
{
if (awk != QSE_NULL)
{
qse_awk_seterror (awk, (errnum_t)code, line, args);
qse_awk_seterror (awk, (errnum_t)code, args, line);
retrieveError ();
}
else
@ -1053,7 +1053,7 @@ void Awk::setError (ErrorNumber code, size_t line, const cstr_t* args)
}
}
void Awk::setErrorWithMessage (ErrorNumber code, size_t line, const char_t* msg)
void Awk::setErrorWithMessage (ErrorNumber code, const char_t* msg, size_t line)
{
if (awk != QSE_NULL)
{
@ -1328,7 +1328,7 @@ int Awk::dispatch_function (Run* run, const cstr_t* name)
pair = qse_map_search (functionMap, name->ptr, name->len);
if (pair == QSE_NULL)
{
run->setError (ERR_FUNNF, 0, name);
run->setError (ERR_FUNNF, name);
return -1;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: StdAwk.cpp 253 2009-08-12 13:39:37Z hyunghwan.chung $
* $Id: StdAwk.cpp 257 2009-08-17 12:10:30Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -467,7 +467,7 @@ int StdAwk::open_console_in (Console& io)
cstr_t arg;
arg.ptr = file;
arg.len = qse_strlen (arg.ptr);
((Run*)io)->setError (ERR_IONMNL, 0, &arg);
((Run*)io)->setError (ERR_IONMNL, &arg);
return -1;
}
@ -516,7 +516,7 @@ int StdAwk::open_console_in (Console& io)
cstr_t arg;
arg.ptr = out.u.cpldup.ptr;
arg.len = qse_strlen (arg.ptr);
((Run*)io)->setError (ERR_IONMNL, 0, &arg);
((Run*)io)->setError (ERR_IONMNL, &arg);
qse_awk_rtx_free (rtx, out.u.cpldup.ptr);
return -1;
}
@ -537,7 +537,7 @@ int StdAwk::open_console_in (Console& io)
cstr_t arg;
arg.ptr = file;
arg.len = qse_strlen (arg.ptr);
((Run*)io)->setError (ERR_OPEN, 0, &arg);
((Run*)io)->setError (ERR_OPEN, &arg);
qse_awk_rtx_free (rtx, out.u.cpldup.ptr);
return -1;
}
@ -599,7 +599,7 @@ int StdAwk::open_console_out (Console& io)
cstr_t arg;
arg.ptr = file;
arg.len = qse_strlen (arg.ptr);
((Run*)io)->setError (ERR_IONMNL, 0, &arg);
((Run*)io)->setError (ERR_IONMNL, &arg);
return -1;
}
@ -617,7 +617,7 @@ int StdAwk::open_console_out (Console& io)
cstr_t arg;
arg.ptr = file;
arg.len = qse_strlen (arg.ptr);
((Run*)io)->setError (ERR_OPEN, 0, &arg);
((Run*)io)->setError (ERR_OPEN, &arg);
return -1;
}
}
@ -803,7 +803,7 @@ int StdAwk::SourceFile::open (Data& io)
qse_cstr_t ea;
ea.ptr = name;
ea.len = qse_strlen(name);
((Awk*)io)->setError (ERR_OPEN, 0, &ea);
((Awk*)io)->setError (ERR_OPEN, &ea);
return -1;
}
@ -862,7 +862,7 @@ int StdAwk::SourceFile::open (Data& io)
qse_cstr_t ea;
ea.ptr = file;
ea.len = qse_strlen(file);
((Awk*)io)->setError (ERR_OPEN, 0, &ea);
((Awk*)io)->setError (ERR_OPEN, &ea);
return -1;
}
}
@ -922,7 +922,7 @@ int StdAwk::SourceString::open (Data& io)
qse_cstr_t ea;
ea.ptr = ioname;
ea.len = qse_strlen(ioname);
((Awk*)io)->setError (ERR_OPEN, 0, &ea);
((Awk*)io)->setError (ERR_OPEN, &ea);
return -1;
}
io.setHandle (sio);

View File

@ -1,5 +1,5 @@
/*
* $Id: err.c 255 2009-08-16 08:08:58Z hyunghwan.chung $
* $Id: err.c 257 2009-08-17 12:10:30Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -193,7 +193,7 @@ void qse_awk_geterrinf (qse_awk_t* awk, qse_awk_errinf_t* errinf)
void qse_awk_geterror (
qse_awk_t* awk, qse_awk_errnum_t* errnum,
qse_size_t* errlin, const qse_char_t** errmsg)
const qse_char_t** errmsg, qse_size_t* errlin)
{
if (errnum != QSE_NULL) *errnum = awk->errinf.num;
if (errlin != QSE_NULL) *errlin = awk->errinf.lin;
@ -208,7 +208,7 @@ void qse_awk_geterror (
void qse_awk_seterrnum (
qse_awk_t* awk, qse_awk_errnum_t errnum, const qse_cstr_t* errarg)
{
qse_awk_seterror (awk, errnum, 0, errarg);
qse_awk_seterror (awk, errnum, errarg, 0);
}
void qse_awk_seterrinf (qse_awk_t* awk, const qse_awk_errinf_t* errinf)
@ -217,8 +217,8 @@ void qse_awk_seterrinf (qse_awk_t* awk, const qse_awk_errinf_t* errinf)
}
void qse_awk_seterror (
qse_awk_t* awk, qse_awk_errnum_t errnum,
qse_size_t errlin, const qse_cstr_t* errarg)
qse_awk_t* awk, qse_awk_errnum_t errnum, const qse_cstr_t* errarg,
qse_size_t errlin)
{
const qse_char_t* errfmt;
@ -262,7 +262,7 @@ void qse_awk_rtx_geterrinf (qse_awk_rtx_t* rtx, qse_awk_errinf_t* errinf)
void qse_awk_rtx_geterror (
qse_awk_rtx_t* rtx, qse_awk_errnum_t* errnum,
qse_size_t* errlin, const qse_char_t** errmsg)
const qse_char_t** errmsg, qse_size_t* errlin)
{
if (errnum != QSE_NULL) *errnum = rtx->errinf.num;
if (errlin != QSE_NULL) *errlin = rtx->errinf.lin;
@ -276,7 +276,7 @@ void qse_awk_rtx_geterror (
void qse_awk_rtx_seterrnum (
qse_awk_rtx_t* rtx, qse_awk_errnum_t errnum, const qse_cstr_t* errarg)
{
qse_awk_rtx_seterror (rtx, errnum, 0, errarg);
qse_awk_rtx_seterror (rtx, errnum, errarg, 0);
}
void qse_awk_rtx_seterrinf (qse_awk_rtx_t* rtx, const qse_awk_errinf_t* errinf)
@ -285,8 +285,8 @@ void qse_awk_rtx_seterrinf (qse_awk_rtx_t* rtx, const qse_awk_errinf_t* errinf)
}
void qse_awk_rtx_seterror (
qse_awk_rtx_t* rtx, qse_awk_errnum_t errnum,
qse_size_t errlin, const qse_cstr_t* errarg)
qse_awk_rtx_t* rtx, qse_awk_errnum_t errnum, const qse_cstr_t* errarg,
qse_size_t errlin)
{
const qse_char_t* errfmt;

View File

@ -1,5 +1,5 @@
/*
* $Id: parse.c 255 2009-08-16 08:08:58Z hyunghwan.chung $
* $Id: parse.c 257 2009-08-17 12:10:30Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -340,7 +340,7 @@ static global_t gtab[] =
do { \
if (qse_str_ccat((token)->name,(c)) == (qse_size_t)-1) \
{ \
qse_awk_seterror (awk, QSE_AWK_ENOMEM, (token)->lin, QSE_NULL); \
qse_awk_seterror (awk, QSE_AWK_ENOMEM, QSE_NULL, (token)->lin); \
return -1; \
} \
} while (0)
@ -349,7 +349,7 @@ static global_t gtab[] =
do { \
if (qse_str_ncat((token)->name,(s),(l)) == (qse_size_t)-1) \
{ \
qse_awk_seterror (awk, QSE_AWK_ENOMEM, (token)->lin, QSE_NULL); \
qse_awk_seterror (awk, QSE_AWK_ENOMEM, QSE_NULL, (token)->lin); \
return -1; \
} \
} while (0)
@ -359,27 +359,23 @@ static global_t gtab[] =
#define CLRERR(awk) qse_awk_seterrnum(awk,QSE_AWK_ENOERR,QSE_NULL)
#define ISNOERR(awk) ((awk)->errinf.num == QSE_AWK_ENOERR)
#define SETERR(awk,code) qse_awk_seterrnum(awk,code,QSE_NULL)
#define SETERRLIN(awk,code,line) qse_awk_seterror(awk,code,line,QSE_NULL);
#define SETERRLIN(awk,code,line) qse_awk_seterror(awk,code,QSE_NULL,line);
#define SETERRTOK(awk,code) \
do { \
qse_cstr_t errarg; \
errarg.len = QSE_STR_LEN((awk)->token.name); \
errarg.ptr = QSE_STR_PTR((awk)->token.name); \
qse_cstr_t __ea; \
__ea.len = QSE_STR_LEN((awk)->token.name); \
__ea.ptr = QSE_STR_PTR((awk)->token.name); \
if (MATCH(awk,TOKEN_EOF)) \
qse_awk_seterror (awk, code, (awk)->ptoken.lin, &errarg); \
qse_awk_seterror (awk, code, &__ea, (awk)->ptoken.lin); \
else \
qse_awk_seterror (awk, code, (awk)->token.lin, &errarg); \
qse_awk_seterror (awk, code, &__ea, (awk)->token.lin); \
} while (0)
#define SETERRARG(awk,code,line,arg) \
qse_awk_seterror ((awk), (code), (line), (arg))
#define SETERRARGL(awk,code,line,arg,leng) \
#define SETERRARGL(awk,code,arg,leng,line) \
do { \
qse_cstr_t errarg; \
errarg.len = (leng); \
errarg.ptr = (arg); \
qse_awk_seterror ((awk), (code), (line), &errarg); \
qse_cstr_t __ea; \
__ea.len = (leng); __ea.ptr = (arg); \
qse_awk_seterror ((awk), (code), &__ea, (line)); \
} while (0)
#define MATCH_TERMINATOR_NORMAL(awk) \
@ -412,7 +408,7 @@ static int get_char (qse_awk_t* awk)
if (n <= -1)
{
if (ISNOERR(awk))
SETERRARGL (awk, QSE_AWK_EREAD, 0, QSE_T("<SIN>"), 5);
SETERRARGL (awk, QSE_AWK_EREAD, QSE_T("<SIN>"), 5, 0);
return -1;
}
@ -493,7 +489,7 @@ static int parse (qse_awk_t* awk)
/* cannot open the source file.
* it doesn't even have to call CLOSE */
if (ISNOERR(awk))
SETERRARGL (awk, QSE_AWK_EOPEN, 0, QSE_T("<SIN>"), 5);
SETERRARGL (awk, QSE_AWK_EOPEN, QSE_T("<SIN>"), 5, 0);
return -1;
}
@ -535,10 +531,11 @@ static int parse (qse_awk_t* awk)
{
/* TODO: set better error no & line */
SETERRARGL (
awk, QSE_AWK_EFUNNF,
*(qse_size_t*)QSE_MAP_VPTR(p),
awk,
QSE_AWK_EFUNNF,
QSE_MAP_KPTR(p),
QSE_MAP_KLEN(p)
QSE_MAP_KLEN(p),
*(qse_size_t*)QSE_MAP_VPTR(p)
);
goto oops;
}
@ -590,7 +587,7 @@ oops:
/* this is to keep the earlier error above
* that might be more critical than this */
if (ISNOERR(awk))
SETERRARGL (awk, QSE_AWK_ECLOSE, 0, QSE_T("<SIN>"), 5);
SETERRARGL (awk, QSE_AWK_ECLOSE, QSE_T("<SIN>"), 5, 0);
ret = -1;
}
}
@ -645,9 +642,9 @@ static int begin_include (qse_awk_t* awk)
SETERRARGL (
awk,
QSE_AWK_EIONMNL,
awk->token.lin,
QSE_STR_PTR(awk->token.name),
qse_strlen(QSE_STR_PTR(awk->token.name))
qse_strlen(QSE_STR_PTR(awk->token.name)),
awk->token.lin
);
return -1;
}
@ -745,7 +742,7 @@ static int end_include (qse_awk_t* awk)
{
/* the failure mentioned above is returned here */
if (ISNOERR(awk))
SETERRARGL (awk, QSE_AWK_ECLOSE, 0, QSE_T("<SIN>"), 5);
SETERRARGL (awk, QSE_AWK_ECLOSE, QSE_T("<SIN>"), 5, 0);
return -1;
}
@ -1025,7 +1022,7 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk)
/* check if it is a builtin function */
if (qse_awk_getfnc (awk, name, name_len) != QSE_NULL)
{
SETERRARGL (awk, QSE_AWK_EFNCRED, awk->token.lin, name, name_len);
SETERRARGL (awk, QSE_AWK_EFNCRED, name, name_len, awk->token.lin);
return QSE_NULL;
}
@ -1033,18 +1030,14 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk)
if (qse_map_search (awk->tree.funs, name, name_len) != QSE_NULL)
{
/* the function is defined previously */
SETERRARGL (
awk, QSE_AWK_EFUNRED, awk->token.lin,
name, name_len);
SETERRARGL (awk, QSE_AWK_EFUNRED, name, name_len, awk->token.lin);
return QSE_NULL;
}
/* check if it conflicts with a named variable */
if (qse_map_search (awk->parse.named, name, name_len) != QSE_NULL)
{
SETERRARGL (
awk, QSE_AWK_EVARRED, awk->token.lin,
name, name_len);
SETERRARGL (awk, QSE_AWK_EVARRED, name, name_len, awk->token.lin);
return QSE_NULL;
}
@ -1052,9 +1045,7 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk)
g = find_global (awk, name, name_len);
if (g != QSE_LDA_NIL)
{
SETERRARGL (
awk, QSE_AWK_EGBLRED, awk->token.lin,
name, name_len);
SETERRARGL (awk, QSE_AWK_EGBLRED, name, name_len, awk->token.lin);
return QSE_NULL;
}
@ -1140,10 +1131,7 @@ static qse_awk_nde_t* parse_function (qse_awk_t* awk)
QSE_AWK_FREE (awk, name_dup);
qse_lda_clear (awk->parse.params);
SETERRARGL (
awk, QSE_AWK_EDUPPAR, awk->token.lin,
param, param_len);
SETERRARGL (awk, QSE_AWK_EDUPPAR, param, param_len, awk->token.lin);
return QSE_NULL;
}
@ -1699,27 +1687,21 @@ static int add_global (
/* check if it is a keyword */
if (classify_ident (awk, name, len) != TOKEN_IDENT)
{
SETERRARGL (
awk, QSE_AWK_EKWRED, awk->token.lin,
name, len);
SETERRARGL (awk, QSE_AWK_EKWRED, name, len, awk->token.lin);
return -1;
}
/* check if it conflict with a builtin function name */
if (qse_awk_getfnc (awk, name, len) != QSE_NULL)
{
SETERRARGL (
awk, QSE_AWK_EFNCRED, awk->token.lin,
name, len);
SETERRARGL (awk, QSE_AWK_EFNCRED, name, len, awk->token.lin);
return -1;
}
/* check if it conflict with a function name */
if (qse_map_search (awk->tree.funs, name, len) != QSE_NULL)
{
SETERRARGL (
awk, QSE_AWK_EFUNRED, line,
name, len);
SETERRARGL (awk, QSE_AWK_EFUNRED, name, len, line);
return -1;
}
@ -1727,16 +1709,14 @@ static int add_global (
* caught in the function call table */
if (qse_map_search (awk->parse.funs, name, len) != QSE_NULL)
{
SETERRARGL (
awk, QSE_AWK_EFUNRED, line,
name, len);
SETERRARGL (awk, QSE_AWK_EFUNRED, name, len, line);
return -1;
}
/* check if it conflicts with other global variable names */
if (find_global (awk, name, len) != QSE_LDA_NIL)
{
SETERRARGL (awk, QSE_AWK_EDUPGBL, line, name, len);
SETERRARGL (awk, QSE_AWK_EDUPGBL, name, len, line);
return -1;
}
@ -1813,7 +1793,7 @@ int qse_awk_delgbl (
QSE_AWK_NUM_STATIC_GBLS, name, len);
if (n == QSE_LDA_NIL)
{
SETERRARGL (awk, QSE_AWK_ENOENT, 0, name, len);
SETERRARGL (awk, QSE_AWK_ENOENT, name, len, 0);
return -1;
}
@ -1918,9 +1898,7 @@ static qse_awk_t* collect_locals (
* function f() { local length; } */
if (qse_awk_getfnc (awk, lcl.ptr, lcl.len) != QSE_NULL)
{
SETERRARGL (
awk, QSE_AWK_EFNCRED, awk->token.lin,
lcl.ptr, lcl.len);
SETERRARGL (awk, QSE_AWK_EFNCRED, lcl.ptr, lcl.len, awk->token.lin);
return QSE_NULL;
}
@ -1933,9 +1911,7 @@ static qse_awk_t* collect_locals (
awk->parse.params, 0, lcl.ptr, lcl.len);
if (n != QSE_LDA_NIL)
{
SETERRARGL (
awk, QSE_AWK_EPARRED, awk->token.lin,
lcl.ptr, lcl.len);
SETERRARGL (awk, QSE_AWK_EPARRED, lcl.ptr, lcl.len, awk->token.lin);
return QSE_NULL;
}
}
@ -1950,10 +1926,7 @@ static qse_awk_t* collect_locals (
awk->tree.cur_fun.ptr,
awk->tree.cur_fun.len) == 0)
{
SETERRARGL (
awk, QSE_AWK_EFUNRED,
awk->token.lin,
lcl.ptr, lcl.len);
SETERRARGL (awk, QSE_AWK_EFUNRED, lcl.ptr, lcl.len, awk->token.lin);
return QSE_NULL;
}
}
@ -1966,9 +1939,7 @@ static qse_awk_t* collect_locals (
lcl.ptr, lcl.len);
if (n != QSE_LDA_NIL)
{
SETERRARGL (
awk, QSE_AWK_EDUPLCL, awk->token.lin,
lcl.ptr, lcl.len);
SETERRARGL (awk, QSE_AWK_EDUPLCL, lcl.ptr, lcl.len, awk->token.lin);
return QSE_NULL;
}
@ -1980,9 +1951,7 @@ static qse_awk_t* collect_locals (
{
/* it is a conflict only if it is one of a
* static global variable */
SETERRARGL (
awk, QSE_AWK_EDUPLCL, awk->token.lin,
lcl.ptr, lcl.len);
SETERRARGL (awk, QSE_AWK_EDUPLCL, lcl.ptr, lcl.len, awk->token.lin);
return QSE_NULL;
}
}
@ -3280,9 +3249,10 @@ static qse_awk_nde_t* parse_primary_nogetline (qse_awk_t* awk, qse_size_t line)
{
SETERRARGL (
awk, QSE_AWK_EEXPRNR,
awk->ptoken.lin,
QSE_STR_PTR(awk->ptoken.name),
QSE_STR_LEN(awk->ptoken.name));
QSE_STR_LEN(awk->ptoken.name),
awk->ptoken.lin
);
}
else SETERRTOK (awk, QSE_AWK_EEXPRNR);
@ -3447,7 +3417,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
if (MATCH(awk,TOKEN_LPAREN))
{
/* a local variable is not a function */
SETERRARGL (awk, QSE_AWK_EFUNNAME, line, name_dup, name_len);
SETERRARGL (awk, QSE_AWK_EFUNNAME, name_dup, name_len, line);
QSE_AWK_FREE (awk, name_dup);
return QSE_NULL;
}
@ -3481,7 +3451,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
if (MATCH(awk,TOKEN_LPAREN))
{
/* a parameter is not a function */
SETERRARGL (awk, QSE_AWK_EFUNNAME, line, name_dup, name_len);
SETERRARGL (awk, QSE_AWK_EFUNNAME, name_dup, name_len, line);
QSE_AWK_FREE (awk, name_dup);
return QSE_NULL;
}
@ -3515,7 +3485,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
if (MATCH(awk,TOKEN_LPAREN))
{
/* a global variable is not a function */
SETERRARGL (awk, QSE_AWK_EFUNNAME, line, name_dup, name_len);
SETERRARGL (awk, QSE_AWK_EFUNNAME, name_dup, name_len, line);
QSE_AWK_FREE (awk, name_dup);
return QSE_NULL;
}
@ -3551,7 +3521,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
name_dup, name_len) != QSE_NULL)
{
/* a function call conflicts with a named variable */
SETERRARGL (awk, QSE_AWK_EVARRED, line, name_dup, name_len);
SETERRARGL (awk, QSE_AWK_EVARRED, name_dup, name_len, line);
QSE_AWK_FREE (awk, name_dup);
return QSE_NULL;
}
@ -3583,7 +3553,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
/* check if it is a builtin function */
if (qse_awk_getfnc (awk, name_dup, name_len) != QSE_NULL)
{
SETERRARGL (awk, QSE_AWK_EFNCRED, line, name_dup, name_len);
SETERRARGL (awk, QSE_AWK_EFNCRED, name_dup, name_len, line);
goto exit_func;
}
@ -3598,7 +3568,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
if (iscur || qse_map_search (awk->tree.funs, name_dup, name_len) != QSE_NULL)
{
/* the function is defined previously */
SETERRARGL (awk, QSE_AWK_EFUNRED, line, name_dup, name_len);
SETERRARGL (awk, QSE_AWK_EFUNRED, name_dup, name_len, line);
goto exit_func;
}
@ -3606,7 +3576,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
name_dup, name_len) != QSE_NULL)
{
/* is it one of the function calls found so far? */
SETERRARGL (awk, QSE_AWK_EFUNRED, line, name_dup, name_len);
SETERRARGL (awk, QSE_AWK_EFUNRED, name_dup, name_len, line);
goto exit_func;
}
@ -3631,7 +3601,7 @@ static qse_awk_nde_t* parse_primary_ident (qse_awk_t* awk, qse_size_t line)
}
/* undefined variable */
SETERRARGL (awk, QSE_AWK_EUNDEF, line, name_dup, name_len);
SETERRARGL (awk, QSE_AWK_EUNDEF, name_dup, name_len, line);
exit_func:
QSE_AWK_FREE (awk, name_dup);
@ -3764,7 +3734,7 @@ static qse_awk_nde_t* parse_hashidx (
/* check if it is a builtin function */
if (qse_awk_getfnc (awk, name, name_len) != QSE_NULL)
{
SETERRARGL (awk, QSE_AWK_EFNCRED, line, name, name_len);
SETERRARGL (awk, QSE_AWK_EFNCRED, name, name_len, line);
goto exit_func;
}
@ -3779,7 +3749,7 @@ static qse_awk_nde_t* parse_hashidx (
if (iscur || qse_map_search (awk->tree.funs, name, name_len) != QSE_NULL)
{
/* the function is defined previously */
SETERRARGL (awk, QSE_AWK_EFUNRED, line, name, name_len);
SETERRARGL (awk, QSE_AWK_EFUNRED, name, name_len, line);
goto exit_func;
}
@ -3787,7 +3757,7 @@ static qse_awk_nde_t* parse_hashidx (
awk->parse.funs, name, name_len) != QSE_NULL)
{
/* is it one of the function calls found so far? */
SETERRARGL (awk, QSE_AWK_EFUNRED, line, name, name_len);
SETERRARGL (awk, QSE_AWK_EFUNRED, name, name_len, line);
goto exit_func;
}
@ -3803,7 +3773,7 @@ static qse_awk_nde_t* parse_hashidx (
}
/* undefined variable */
SETERRARGL (awk, QSE_AWK_EUNDEF, line, name, name_len);
SETERRARGL (awk, QSE_AWK_EUNDEF, name, name_len, line);
exit_func:
@ -4857,7 +4827,7 @@ static int get_number (qse_awk_t* awk, qse_awk_token_t* token)
if (c == QSE_T('8') || c == QSE_T('9'))
{
qse_char_t cc = (qse_char_t)c;
SETERRARGL (awk, QSE_AWK_ELXDIG, awk->token.lin, &cc, 1);
SETERRARGL (awk, QSE_AWK_ELXDIG, &cc, 1, awk->token.lin);
return -1;
}
@ -5388,20 +5358,11 @@ retry:
if (get_number (awk, token) <= -1) return -1;
}
else /*if (QSE_AWK_ISSPACE (awk, c) || c == QSE_CHAR_EOF)*/
else
{
SET_TOKEN_TYPE (awk, token, TOKEN_PERIOD);
ADD_TOKEN_CHAR (awk, token, QSE_T('.'));
}
/*
else
{
qse_awk_seterror (
awk, QSE_AWK_ELXCHR, token->lin,
QSE_T("floating point not followed by any valid digits"));
return -1;
}
*/
}
else if (c == QSE_T('_') || QSE_AWK_ISALPHA (awk, c))
{
@ -5435,19 +5396,11 @@ retry:
{
/* not handled yet */
if (c == QSE_T('\0'))
{
SETERRARGL (
awk, QSE_AWK_ELXCHR, token->lin,
QSE_T("<NUL>"), 5
);
}
SETERRARGL (awk, QSE_AWK_ELXCHR, QSE_T("<NUL>"), 5, token->lin);
else
{
qse_char_t cc = (qse_char_t)c;
SETERRARGL (
awk, QSE_AWK_ELXCHR, token->lin,
&cc, 1
);
SETERRARGL (awk, QSE_AWK_ELXCHR, &cc, 1, token->lin);
}
return -1;
}
@ -5612,7 +5565,7 @@ static int deparse (qse_awk_t* awk)
if (op <= -1)
{
if (ISNOERR(awk))
SETERRARGL (awk, QSE_AWK_EOPEN, 0, QSE_T("<SOUT>"), 6);
SETERRARGL (awk, QSE_AWK_EOPEN, QSE_T("<SOUT>"), 6, 0);
return -1;
}
@ -5822,7 +5775,7 @@ exit_deparse:
if (n == 0)
{
if (ISNOERR(awk))
SETERRARGL (awk, QSE_AWK_ECLOSE, 0, QSE_T("<SOUT>"), 6);
SETERRARGL (awk, QSE_AWK_ECLOSE, QSE_T("<SOUT>"), 6, 0);
n = -1;
}
}
@ -5919,7 +5872,7 @@ static int flush_out (qse_awk_t* awk)
if (n <= 0)
{
if (ISNOERR(awk))
SETERRARGL (awk, QSE_AWK_EWRITE, 0, QSE_T("<SOUT>"), 6);
SETERRARGL (awk, QSE_AWK_EWRITE, QSE_T("<SOUT>"), 6, 0);
return -1;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: run.c 256 2009-08-16 13:44:20Z hyunghwan.chung $
* $Id: run.c 257 2009-08-17 12:10:30Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -294,7 +294,8 @@ static int set_global (
qse_awk_rtx_seterror (
run,
QSE_AWK_EMAPTOSCALAR,
var->line, xstr_to_cstr(&var->id.name)
xstr_to_cstr(&var->id.name),
var->line
);
}
else
@ -1710,8 +1711,7 @@ static int run_block (qse_awk_rtx_t* run, qse_awk_nde_blk_t* nde)
if (run->depth.max.block > 0 &&
run->depth.cur.block >= run->depth.max.block)
{
qse_awk_rtx_seterror (
run, QSE_AWK_EBLKNST, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EBLKNST, QSE_NULL, nde->line);
return -1;;
}
@ -2240,9 +2240,8 @@ static int run_foreach (qse_awk_rtx_t* rtx, qse_awk_nde_foreach_t* nde)
if (rv->type != QSE_AWK_VAL_MAP)
{
qse_awk_rtx_refdownval (rtx, rv);
qse_awk_rtx_seterror (
rtx, QSE_AWK_ENOTMAPIN, test->right->line, QSE_NULL);
rtx, QSE_AWK_ENOTMAPIN, QSE_NULL, test->right->line);
return -1;
}
map = ((qse_awk_val_map_t*)rv)->map;
@ -2292,7 +2291,7 @@ static int run_return (qse_awk_rtx_t* run, qse_awk_nde_return_t* nde)
qse_awk_rtx_seterror (
run, QSE_AWK_EMAPNOTALLOWED,
nde->line, QSE_NULL);
QSE_NULL, nde->line);
return -1;
}
}
@ -2339,13 +2338,13 @@ static int run_next (qse_awk_rtx_t* run, qse_awk_nde_next_t* nde)
if (run->active_block == (qse_awk_nde_blk_t*)run->awk->tree.begin)
{
qse_awk_rtx_seterror (
run, QSE_AWK_ERNEXTBEG, nde->line, QSE_NULL);
run, QSE_AWK_ERNEXTBEG, QSE_NULL, nde->line);
return -1;
}
else if (run->active_block == (qse_awk_nde_blk_t*)run->awk->tree.end)
{
qse_awk_rtx_seterror (
run, QSE_AWK_ERNEXTEND, nde->line, QSE_NULL);
run, QSE_AWK_ERNEXTEND, QSE_NULL, nde->line);
return -1;
}
@ -2361,13 +2360,13 @@ static int run_nextinfile (qse_awk_rtx_t* run, qse_awk_nde_nextfile_t* nde)
if (run->active_block == (qse_awk_nde_blk_t*)run->awk->tree.begin)
{
qse_awk_rtx_seterror (
run, QSE_AWK_ERNEXTFBEG, nde->line, QSE_NULL);
run, QSE_AWK_ERNEXTFBEG, QSE_NULL, nde->line);
return -1;
}
else if (run->active_block == (qse_awk_nde_blk_t*)run->awk->tree.end)
{
qse_awk_rtx_seterror (
run, QSE_AWK_ERNEXTFEND, nde->line, QSE_NULL);
run, QSE_AWK_ERNEXTFEND, QSE_NULL, nde->line);
return -1;
}
@ -2536,7 +2535,7 @@ static int run_delete (qse_awk_rtx_t* run, qse_awk_nde_delete_t* nde)
qse_awk_rtx_refdownval (run, tmp);
qse_awk_rtx_seterror (
run, QSE_AWK_ENOMEM, var->line, QSE_NULL);
run, QSE_AWK_ENOMEM, QSE_NULL, var->line);
return -1;
}
@ -2556,7 +2555,7 @@ static int run_delete (qse_awk_rtx_t* run, qse_awk_nde_delete_t* nde)
{
qse_awk_rtx_seterror (
run, QSE_AWK_ENOTDEL,
var->line, xstr_to_cstr(&var->id.name));
xstr_to_cstr(&var->id.name), var->line);
return -1;
}
@ -2643,7 +2642,7 @@ static int run_delete (qse_awk_rtx_t* run, qse_awk_nde_delete_t* nde)
{
qse_awk_rtx_seterror (
run, QSE_AWK_ENOTDEL,
var->line, xstr_to_cstr(&var->id.name));
xstr_to_cstr(&var->id.name), var->line);
return -1;
}
@ -2670,7 +2669,7 @@ static int run_delete (qse_awk_rtx_t* run, qse_awk_nde_delete_t* nde)
"the delete statement cannot be called with other nodes than the variables such as a named variable, a named indexed variable, etc");
qse_awk_rtx_seterror (
run, QSE_AWK_ERDELETE, var->line, QSE_NULL);
run, QSE_AWK_ERDELETE, QSE_NULL, var->line);
return -1;
}
@ -2725,7 +2724,7 @@ static int run_reset (qse_awk_rtx_t* run, qse_awk_nde_reset_t* nde)
"the reset statement can only be called with plain variables");
qse_awk_rtx_seterror (
run, QSE_AWK_ERRESET, var->line, QSE_NULL);
run, QSE_AWK_ERRESET, QSE_NULL, var->line);
return -1;
}
@ -2776,7 +2775,7 @@ static int run_print (qse_awk_rtx_t* run, qse_awk_nde_print_t* nde)
/* the destination name is empty */
QSE_AWK_FREE (run->awk, out);
qse_awk_rtx_seterror (
run, QSE_AWK_EIONMEM, nde->line, QSE_NULL);
run, QSE_AWK_EIONMEM, QSE_NULL, nde->line);
return -1;
}
@ -2786,18 +2785,16 @@ static int run_print (qse_awk_rtx_t* run, qse_awk_nde_print_t* nde)
{
if (out[--len] == QSE_T('\0'))
{
qse_cstr_t errarg;
qse_cstr_t ea;
errarg.ptr = out;
ea.ptr = out;
/* provide length up to one character before
* the first null not to contains a null
* in an error message */
errarg.len = qse_strlen(out);
ea.len = qse_strlen(out);
qse_awk_rtx_seterror (
run, QSE_AWK_EIONMNL,
nde->line, &errarg
);
run, QSE_AWK_EIONMNL, &ea, nde->line);
/* if so, it skips writing */
QSE_AWK_FREE (run->awk, out);
@ -2950,7 +2947,7 @@ static int run_printf (qse_awk_rtx_t* run, qse_awk_nde_print_t* nde)
/* the output destination name is empty. */
QSE_AWK_FREE (run->awk, out);
qse_awk_rtx_seterror (
run, QSE_AWK_EIONMEM, nde->line, QSE_NULL);
run, QSE_AWK_EIONMEM, QSE_NULL, nde->line);
return -1;
}
@ -2958,18 +2955,16 @@ static int run_printf (qse_awk_rtx_t* run, qse_awk_nde_print_t* nde)
{
if (out[--len] == QSE_T('\0'))
{
qse_cstr_t errarg;
qse_cstr_t ea;
errarg.ptr = out;
ea.ptr = out;
/* provide length up to one character before
* the first null not to contains a null
* in an error message */
errarg.len = qse_strlen(out);
ea.len = qse_strlen(out);
qse_awk_rtx_seterror (
run, QSE_AWK_EIONMNL,
nde->line, &errarg
);
run, QSE_AWK_EIONMNL, &ea, nde->line);
/* the output destination name contains a null
* character. */
@ -3120,7 +3115,7 @@ static qse_awk_val_t* eval_expression (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
* whose message contains a formatting
* character. otherwise, the following way of
* setting the error information may not work */
qse_awk_rtx_seterror (run, errnum, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, errnum, QSE_NULL, nde->line);
return QSE_NULL;
}
}
@ -3198,7 +3193,7 @@ static qse_awk_val_t* eval_group (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
/* eval_binop_in evaluates the QSE_AWK_NDE_GRP specially.
* so this function should never be reached. */
QSE_ASSERT (!"should never happen - NDE_GRP only for in");
qse_awk_rtx_seterror (run, QSE_AWK_EINTERN, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EINTERN, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -3326,7 +3321,7 @@ static qse_awk_val_t* do_assignment (
return ret;
exit_on_error:
qse_awk_rtx_seterror (run, errnum, var->line, QSE_NULL);
qse_awk_rtx_seterror (run, errnum, QSE_NULL, var->line);
return QSE_NULL;
}
@ -3355,15 +3350,16 @@ static qse_awk_val_t* do_assignment_scalar (
/* once a variable becomes a map,
* it cannot be changed to a scalar variable */
qse_awk_rtx_seterror (
run, QSE_AWK_EMAPTOSCALAR,
var->line, xstr_to_cstr(&var->id.name));
run, QSE_AWK_EMAPTOSCALAR,
xstr_to_cstr(&var->id.name), var->line);
return QSE_NULL;
}
if (qse_map_upsert (run->named,
var->id.name.ptr, var->id.name.len, val, 0) == QSE_NULL)
{
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, var->line, QSE_NULL);
qse_awk_rtx_seterror (
run, QSE_AWK_ENOMEM, QSE_NULL, var->line);
return QSE_NULL;
}
@ -3387,7 +3383,7 @@ static qse_awk_val_t* do_assignment_scalar (
* it cannot be changed to a scalar variable */
qse_awk_rtx_seterror (
run, QSE_AWK_EMAPTOSCALAR,
var->line, xstr_to_cstr(&var->id.name));
xstr_to_cstr(&var->id.name), var->line);
return QSE_NULL;
}
@ -3404,7 +3400,7 @@ static qse_awk_val_t* do_assignment_scalar (
* it cannot be changed to a scalar variable */
qse_awk_rtx_seterror (
run, QSE_AWK_EMAPTOSCALAR,
var->line, xstr_to_cstr(&var->id.name));
xstr_to_cstr(&var->id.name), var->line);
return QSE_NULL;
}
@ -3477,7 +3473,8 @@ static qse_awk_val_t* do_assignment_map (
qse_awk_rtx_refupval (run, tmp);
qse_awk_rtx_refdownval (run, tmp);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, var->line, QSE_NULL);
qse_awk_rtx_seterror (
run, QSE_AWK_ENOMEM, QSE_NULL, var->line);
return QSE_NULL;
}
@ -3514,7 +3511,7 @@ static qse_awk_val_t* do_assignment_map (
else if (map->type != QSE_AWK_VAL_MAP)
{
/* variable assigned is not a map */
qse_awk_rtx_seterror (run, QSE_AWK_ENOTIDX, var->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOTIDX, QSE_NULL, var->line);
return QSE_NULL;
}
@ -3530,7 +3527,7 @@ static qse_awk_val_t* do_assignment_map (
if (qse_map_upsert (map->map, str, len, val, 0) == QSE_NULL)
{
if (str != idxbuf) QSE_AWK_FREE (run->awk, str);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, var->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, var->line);
return QSE_NULL;
}
@ -3558,13 +3555,13 @@ static qse_awk_val_t* do_assignment_pos (
if (n == -1)
{
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, pos->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, QSE_NULL, pos->line);
return QSE_NULL;
}
if (n == 1) lv = (qse_long_t)rv;
if (!IS_VALID_POSIDX(lv))
{
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, pos->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, QSE_NULL, pos->line);
return QSE_NULL;
}
@ -3810,7 +3807,7 @@ static qse_awk_val_t* eval_binop_in (
{
/* the compiler should have handled this case */
QSE_ASSERT (!"should never happen - it needs a plain variable");
qse_awk_rtx_seterror (run, QSE_AWK_EINTERN, right->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EINTERN, QSE_NULL, right->line);
return QSE_NULL;
}
@ -3856,7 +3853,7 @@ static qse_awk_val_t* eval_binop_in (
if (str != idxbuf) QSE_AWK_FREE (run->awk, str);
qse_awk_rtx_refdownval (run, rv);
qse_awk_rtx_seterror (run, QSE_AWK_ENOTMAPNILIN, right->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOTMAPNILIN, QSE_NULL, right->line);
return QSE_NULL;
}
@ -4786,7 +4783,7 @@ static qse_awk_val_t* eval_binop_match0 (
((qse_awk_val_str_t*)right)->len, &errnum);
if (rex_code == QSE_NULL)
{
qse_awk_rtx_seterror (run, errnum, rline, QSE_NULL);
qse_awk_rtx_seterror (run, errnum, QSE_NULL, rline);
return QSE_NULL;
}
}
@ -4803,7 +4800,7 @@ static qse_awk_val_t* eval_binop_match0 (
if (rex_code == QSE_NULL)
{
QSE_AWK_FREE (run->awk, out.u.cpldup.ptr);
qse_awk_rtx_seterror (run, errnum, rline, QSE_NULL);
qse_awk_rtx_seterror (run, errnum, QSE_NULL, rline);
return QSE_NULL;
}
@ -4825,7 +4822,7 @@ static qse_awk_val_t* eval_binop_match0 (
if (right->type != QSE_AWK_VAL_REX)
QSE_AWK_FREE (run->awk, rex_code);
qse_awk_rtx_seterror (run, errnum, lline, QSE_NULL);
qse_awk_rtx_seterror (run, errnum, QSE_NULL, lline);
return QSE_NULL;
}
@ -4864,7 +4861,7 @@ static qse_awk_val_t* eval_binop_match0 (
if (right->type != QSE_AWK_VAL_REX)
QSE_AWK_FREE (run->awk, rex_code);
qse_awk_rtx_seterror (run, errnum, lline, QSE_NULL);
qse_awk_rtx_seterror (run, errnum, QSE_NULL, lline);
return QSE_NULL;
}
@ -4973,7 +4970,7 @@ static qse_awk_val_t* eval_incpre (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
/*exp->left->type > QSE_AWK_NDE_ARGIDX) XXX */
exp->left->type > QSE_AWK_NDE_POS)
{
qse_awk_rtx_seterror (run, QSE_AWK_EOPERAND, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EOPERAND, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -5105,7 +5102,7 @@ static qse_awk_val_t* eval_incpre (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
{
QSE_ASSERT (!"should never happen - invalid opcode");
qse_awk_rtx_refdownval (run, left);
qse_awk_rtx_seterror (run, QSE_AWK_EINTERN, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EINTERN, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -5134,7 +5131,7 @@ static qse_awk_val_t* eval_incpst (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
/*exp->left->type > QSE_AWK_NDE_ARGIDX) XXX */
exp->left->type > QSE_AWK_NDE_POS)
{
qse_awk_rtx_seterror (run, QSE_AWK_EOPERAND, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EOPERAND, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -5358,7 +5355,7 @@ static qse_awk_val_t* eval_incpst (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
{
QSE_ASSERT (!"should never happen - invalid opcode");
qse_awk_rtx_refdownval (run, left);
qse_awk_rtx_seterror (run, QSE_AWK_EINTERN, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EINTERN, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -5402,13 +5399,13 @@ static qse_awk_val_t* eval_fnc (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
/* intrinsic function */
if (call->nargs < call->what.fnc.arg.min)
{
qse_awk_rtx_seterror (run, QSE_AWK_EARGTF, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EARGTF, QSE_NULL, nde->line);
return QSE_NULL;
}
if (call->nargs > call->what.fnc.arg.max)
{
qse_awk_rtx_seterror (run, QSE_AWK_EARGTM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EARGTM, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -5431,7 +5428,7 @@ static qse_awk_val_t* eval_fun_ex (
{
qse_awk_rtx_seterror (
run, QSE_AWK_EFUNNF,
nde->line, xstr_to_cstr(&call->what.fun.name));
xstr_to_cstr(&call->what.fun.name), nde->line);
return QSE_NULL;
}
@ -5443,7 +5440,7 @@ static qse_awk_val_t* eval_fun_ex (
/* TODO: is this correct? what if i want to
* allow arbitarary numbers of arguments? */
qse_awk_rtx_seterror (
run, QSE_AWK_EARGTM, nde->line, QSE_NULL);
run, QSE_AWK_EARGTM, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -5549,14 +5546,14 @@ static qse_awk_val_t* __eval_call (
#endif
if (__raw_push(run,(void*)run->stack_base) == -1)
{
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return QSE_NULL;
}
if (__raw_push(run,(void*)saved_stack_top) == -1)
{
__raw_pop (run);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -5565,7 +5562,7 @@ static qse_awk_val_t* __eval_call (
{
__raw_pop (run);
__raw_pop (run);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -5575,7 +5572,7 @@ static qse_awk_val_t* __eval_call (
__raw_pop (run);
__raw_pop (run);
__raw_pop (run);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -5599,7 +5596,7 @@ static qse_awk_val_t* __eval_call (
if (__raw_push(run,qse_awk_val_nil) == -1)
{
UNWIND_RTX_STACK (run, nargs);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -5649,8 +5646,8 @@ static qse_awk_val_t* __eval_call (
* fix it */
qse_awk_rtx_seterror (
run, QSE_AWK_EFNCIMPL,
nde->line,
xstr_to_cstr(&call->what.fnc.oname)
xstr_to_cstr(&call->what.fnc.oname),
nde->line
);
}
else
@ -5756,7 +5753,7 @@ static qse_size_t push_arg_from_vals (
qse_awk_rtx_refdownval (rtx, pafv->args[nargs]);
UNWIND_RTX_STACK_ARG (rtx, nargs);
qse_awk_rtx_seterror (rtx, QSE_AWK_ENOMEM, call->line, QSE_NULL);
qse_awk_rtx_seterror (rtx, QSE_AWK_ENOMEM, QSE_NULL, call->line);
return (qse_size_t)-1;
}
@ -5827,7 +5824,7 @@ static qse_size_t push_arg_from_nde (
qse_awk_rtx_refdownval (rtx, v);
UNWIND_RTX_STACK_ARG (rtx, nargs);
qse_awk_rtx_seterror (rtx, QSE_AWK_ENOMEM, call->line, QSE_NULL);
qse_awk_rtx_seterror (rtx, QSE_AWK_ENOMEM, QSE_NULL, call->line);
return (qse_size_t)-1;
}
@ -5872,7 +5869,7 @@ static int get_reference (
tgt->id.name.len, qse_awk_val_nil, 0);
if (pair == QSE_NULL)
{
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return -1;
}
}
@ -5912,7 +5909,7 @@ static int get_reference (
tgt->id.name.len, qse_awk_val_nil, 0);
if (pair == QSE_NULL)
{
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return -1;
}
}
@ -5965,13 +5962,13 @@ static int get_reference (
if (n == -1)
{
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, QSE_NULL, nde->line);
return -1;
}
if (n == 1) lv = (qse_long_t)rv;
if (!IS_VALID_POSIDX(lv))
{
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, QSE_NULL, nde->line);
return -1;
}
@ -5979,7 +5976,7 @@ static int get_reference (
return 0;
}
qse_awk_rtx_seterror (run, QSE_AWK_ENOTREF, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOTREF, QSE_NULL, nde->line);
return -1;
}
@ -6010,7 +6007,7 @@ static qse_awk_val_t** get_reference_indexed (
}
else if ((*val)->type != QSE_AWK_VAL_MAP)
{
qse_awk_rtx_seterror (run, QSE_AWK_ENOTMAP, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOTMAP, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -6029,7 +6026,7 @@ static qse_awk_val_t** get_reference_indexed (
if (pair == QSE_NULL)
{
if (str != idxbuf) QSE_AWK_FREE (run->awk, str);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -6156,7 +6153,7 @@ static qse_awk_val_t* eval_indexed (
}
else if ((*val)->type != QSE_AWK_VAL_MAP)
{
qse_awk_rtx_seterror (run, QSE_AWK_ENOTMAP, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOTMAP, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -6185,7 +6182,7 @@ static qse_awk_val_t* eval_namedidx (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
tgt->id.name.ptr, tgt->id.name.len, qse_awk_val_nil, 0);
if (pair == QSE_NULL)
{
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -6229,14 +6226,14 @@ static qse_awk_val_t* eval_pos (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
qse_awk_rtx_refdownval (run, v);
if (n == -1)
{
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, QSE_NULL, nde->line);
return QSE_NULL;
}
if (n == 1) lv = (qse_long_t)rv;
if (lv < 0)
{
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_EPOSIDX, QSE_NULL, nde->line);
return QSE_NULL;
}
if (lv == 0) v = run->inrec.d0;
@ -6320,7 +6317,7 @@ static qse_awk_val_t* eval_getline (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
if (qse_str_init (&buf, MMGR(run), DEF_BUF_CAPA) == QSE_NULL)
{
if (in != QSE_NULL) QSE_AWK_FREE (run->awk, in);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -6618,7 +6615,7 @@ static qse_char_t* idxnde_to_str (
if (qse_str_init (&idxstr, MMGR(run), DEF_BUF_CAPA) == QSE_NULL)
{
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return QSE_NULL;
}
@ -6641,7 +6638,7 @@ static qse_char_t* idxnde_to_str (
qse_awk_rtx_refdownval (run, idx);
qse_str_fini (&idxstr);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, nde->line, QSE_NULL);
qse_awk_rtx_seterror (run, QSE_AWK_ENOMEM, QSE_NULL, nde->line);
return QSE_NULL;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: Sed.cpp 235 2009-07-15 10:43:31Z hyunghwan.chung $
* $Id: Sed.cpp 257 2009-08-17 12:10:30Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -101,10 +101,10 @@ Sed::errnum_t Sed::getErrorNumber () const
return (sed == QSE_NULL)? QSE_SED_ENOERR: qse_sed_geterrnum (sed);
}
void Sed::setError (errnum_t err, size_t lin, const cstr_t* args)
void Sed::setError (errnum_t err, const cstr_t* args, size_t lin)
{
QSE_ASSERT (sed != QSE_NULL);
qse_sed_seterror (sed, err, lin, args);
qse_sed_seterror (sed, err, args, lin);
}
Sed::size_t Sed::getConsoleLine ()

View File

@ -1,5 +1,5 @@
/*
* $Id: err.c 207 2009-06-22 13:01:28Z hyunghwan.chung $
* $Id: err.c 257 2009-08-17 12:10:30Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -97,16 +97,15 @@ void qse_sed_geterror (
}
}
void qse_sed_seterrnum (qse_sed_t* sed, qse_sed_errnum_t errnum)
void qse_sed_seterrnum (
qse_sed_t* sed, qse_sed_errnum_t errnum, const qse_cstr_t* errarg)
{
sed->errnum = errnum;
sed->errlin = 0;
sed->errmsg[0] = QSE_T('\0');
qse_sed_seterror (sed, errnum, errarg, 0);
}
void qse_sed_seterrmsg (
qse_sed_t* sed, qse_sed_errnum_t errnum,
qse_size_t errlin, const qse_char_t* errmsg)
const qse_char_t* errmsg, qse_size_t errlin)
{
sed->errnum = errnum;
sed->errlin = errlin;
@ -115,7 +114,7 @@ void qse_sed_seterrmsg (
void qse_sed_seterror (
qse_sed_t* sed, qse_sed_errnum_t errnum,
qse_size_t errlin, const qse_cstr_t* errarg)
const qse_cstr_t* errarg, qse_size_t errlin)
{
const qse_char_t* errfmt;

View File

@ -1,5 +1,5 @@
/*
* $Id: sed.c 207 2009-06-22 13:01:28Z hyunghwan.chung $
* $Id: sed.c 257 2009-08-17 12:10:30Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -30,13 +30,13 @@ static qse_sed_t* qse_sed_init (qse_sed_t* sed, qse_mmgr_t* mmgr);
static void qse_sed_fini (qse_sed_t* sed);
#define SETERR0(sed,num,line) \
do { qse_sed_seterror (sed, num, line, QSE_NULL); } while (0)
do { qse_sed_seterror (sed, num, QSE_NULL, line); } while (0)
#define SETERR1(sed,num,line,argp,argl) \
do { \
qse_cstr_t __qse__err__arg__; \
__qse__err__arg__.ptr = argp; __qse__err__arg__.len = argl; \
qse_sed_seterror (sed, num, line, &__qse__err__arg__); \
qse_cstr_t __ea__; \
__ea__.ptr = argp; __ea__.len = argl; \
qse_sed_seterror (sed, num, &__ea__, line); \
} while (0)
qse_sed_t* qse_sed_open (qse_mmgr_t* mmgr, qse_size_t xtn)