enhanced win32 utf8 console hack in sio

This commit is contained in:
2012-02-25 14:52:26 +00:00
parent b0bcf53b6f
commit ada60acf67
30 changed files with 296 additions and 233 deletions

View File

@ -979,7 +979,7 @@ const Awk::char_t* Awk::getErrorString (errnum_t num) const
return dflerrstr (awk, num);
}
const Awk::char_t* Awk::xerrstr (awk_t* a, errnum_t num)
const Awk::char_t* Awk::xerrstr (const awk_t* a, errnum_t num)
{
Awk* awk = *(Awk**)QSE_XTN(a);
return awk->getErrorString (num);

View File

@ -376,7 +376,7 @@ qse_awk_prm_t* qse_awk_getprm (qse_awk_t* awk)
return &awk->prm;
}
int qse_awk_getoption (qse_awk_t* awk)
int qse_awk_getoption (const qse_awk_t* awk)
{
return awk->option;
}
@ -391,7 +391,7 @@ void qse_awk_stopall (qse_awk_t* awk)
awk->stopall = QSE_TRUE;
}
qse_size_t qse_awk_getmaxdepth (qse_awk_t* awk, qse_awk_depth_t type)
qse_size_t qse_awk_getmaxdepth (const qse_awk_t* awk, qse_awk_depth_t type)
{
return (type == QSE_AWK_DEPTH_BLOCK_PARSE)? awk->parse.depth.max.block:
(type == QSE_AWK_DEPTH_BLOCK_RUN)? awk->run.depth.max.block:

View File

@ -154,7 +154,7 @@ const qse_char_t* qse_awk_dflerrstr (qse_awk_t* awk, qse_awk_errnum_t errnum)
errstr[errnum]: QSE_T("unknown error");
}
qse_awk_errstr_t qse_awk_geterrstr (qse_awk_t* awk)
qse_awk_errstr_t qse_awk_geterrstr (const qse_awk_t* awk)
{
return awk->errstr;
}
@ -164,23 +164,23 @@ void qse_awk_seterrstr (qse_awk_t* awk, qse_awk_errstr_t errstr)
awk->errstr = errstr;
}
qse_awk_errnum_t qse_awk_geterrnum (qse_awk_t* awk)
qse_awk_errnum_t qse_awk_geterrnum (const qse_awk_t* awk)
{
return awk->errinf.num;
}
const qse_awk_loc_t* qse_awk_geterrloc (qse_awk_t* awk)
const qse_awk_loc_t* qse_awk_geterrloc (const qse_awk_t* awk)
{
return &awk->errinf.loc;
}
const qse_char_t* qse_awk_geterrmsg (qse_awk_t* awk)
const qse_char_t* qse_awk_geterrmsg (const qse_awk_t* awk)
{
return (awk->errinf.msg[0] == QSE_T('\0'))?
qse_awk_geterrstr(awk)(awk,awk->errinf.num): awk->errinf.msg;
}
void qse_awk_geterrinf (qse_awk_t* awk, qse_awk_errinf_t* errinf)
void qse_awk_geterrinf (const qse_awk_t* awk, qse_awk_errinf_t* errinf)
{
QSE_MEMCPY (errinf, &awk->errinf, QSE_SIZEOF(*errinf));
if (errinf->msg[0] == QSE_T('\0'))
@ -191,7 +191,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,
const qse_awk_t* awk, qse_awk_errnum_t* errnum,
const qse_char_t** errmsg, qse_awk_loc_t* errloc)
{
if (errnum != QSE_NULL) *errnum = awk->errinf.num;
@ -234,23 +234,23 @@ void qse_awk_seterror (
if (errloc != QSE_NULL) awk->errinf.loc = *errloc;
}
qse_awk_errnum_t qse_awk_rtx_geterrnum (qse_awk_rtx_t* rtx)
qse_awk_errnum_t qse_awk_rtx_geterrnum (const qse_awk_rtx_t* rtx)
{
return rtx->errinf.num;
}
const qse_awk_loc_t* qse_awk_rtx_geterrloc (qse_awk_rtx_t* rtx)
const qse_awk_loc_t* qse_awk_rtx_geterrloc (const qse_awk_rtx_t* rtx)
{
return &rtx->errinf.loc;
}
const qse_char_t* qse_awk_rtx_geterrmsg (qse_awk_rtx_t* rtx)
const qse_char_t* qse_awk_rtx_geterrmsg (const qse_awk_rtx_t* rtx)
{
return (rtx->errinf.msg[0] == QSE_T('\0')) ?
qse_awk_geterrstr(rtx->awk)(rtx->awk,rtx->errinf.num): rtx->errinf.msg;
}
void qse_awk_rtx_geterrinf (qse_awk_rtx_t* rtx, qse_awk_errinf_t* errinf)
void qse_awk_rtx_geterrinf (const qse_awk_rtx_t* rtx, qse_awk_errinf_t* errinf)
{
QSE_MEMCPY (errinf, &rtx->errinf, QSE_SIZEOF(*errinf));
if (errinf->msg[0] == QSE_T('\0'))
@ -261,7 +261,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,
const qse_awk_rtx_t* rtx, qse_awk_errnum_t* errnum,
const qse_char_t** errmsg, qse_awk_loc_t* errloc)
{
if (errnum != QSE_NULL) *errnum = rtx->errinf.num;

View File

@ -449,11 +449,13 @@ static qse_ssize_t sf_in_open (
xtn->s.in.u.str.ptr = xtn->s.in.x->u.str.ptr;
xtn->s.in.u.str.end = xtn->s.in.x->u.str.ptr + xtn->s.in.x->u.str.len;
return 1;
default:
/* this should never happen */
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
return -1;
}
/* this should never happen */
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
return -1;
}
else
{
@ -522,6 +524,10 @@ static qse_ssize_t sf_in_close (
case QSE_AWK_PARSESTD_STR:
/* nothing to close */
break;
default:
/* nothing to close */
break;
}
}
else
@ -574,10 +580,13 @@ static qse_ssize_t sf_in_read (
}
return n;
}
default:
/* this should never happen */
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
return -1;
}
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
return -1;
}
else
{
@ -613,10 +622,10 @@ static qse_ssize_t sf_in (
case QSE_AWK_SIO_READ:
return sf_in_read (awk, arg, data, size, xtn);
default:
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
return -1;
}
qse_awk_seterrnum (awk, QSE_AWK_EINTERN, QSE_NULL);
return -1;
}
static qse_ssize_t sf_out (