deprecated QSE_AWK_BASEONE
This commit is contained in:
parent
c3b04c6fc1
commit
70b517578e
@ -232,7 +232,6 @@ static struct
|
|||||||
{ QSE_T("rio"), QSE_AWK_RIO },
|
{ QSE_T("rio"), QSE_AWK_RIO },
|
||||||
{ QSE_T("rwpipe"), QSE_AWK_RWPIPE },
|
{ QSE_T("rwpipe"), QSE_AWK_RWPIPE },
|
||||||
{ QSE_T("newline"), QSE_AWK_NEWLINE },
|
{ QSE_T("newline"), QSE_AWK_NEWLINE },
|
||||||
{ QSE_T("baseone"), QSE_AWK_BASEONE },
|
|
||||||
{ QSE_T("stripspaces"), QSE_AWK_STRIPSPACES },
|
{ QSE_T("stripspaces"), QSE_AWK_STRIPSPACES },
|
||||||
{ QSE_T("nextofile"), QSE_AWK_NEXTOFILE },
|
{ QSE_T("nextofile"), QSE_AWK_NEXTOFILE },
|
||||||
{ QSE_T("crfl"), QSE_AWK_CRLF },
|
{ QSE_T("crfl"), QSE_AWK_CRLF },
|
||||||
|
@ -574,7 +574,6 @@ public:
|
|||||||
/** Can terminate a statement with a new line */
|
/** Can terminate a statement with a new line */
|
||||||
OPT_NEWLINE = QSE_AWK_NEWLINE,
|
OPT_NEWLINE = QSE_AWK_NEWLINE,
|
||||||
|
|
||||||
OPT_BASEONE = QSE_AWK_BASEONE,
|
|
||||||
OPT_STRIPSPACES = QSE_AWK_STRIPSPACES,
|
OPT_STRIPSPACES = QSE_AWK_STRIPSPACES,
|
||||||
|
|
||||||
/** Support the nextofile statement */
|
/** Support the nextofile statement */
|
||||||
|
@ -261,9 +261,6 @@ enum qse_awk_option_t
|
|||||||
/* can terminate a statement with a new line */
|
/* can terminate a statement with a new line */
|
||||||
QSE_AWK_NEWLINE = (1 << 9),
|
QSE_AWK_NEWLINE = (1 << 9),
|
||||||
|
|
||||||
/* use 1 as the start index for string operations and ARGV */
|
|
||||||
QSE_AWK_BASEONE = (1 << 10),
|
|
||||||
|
|
||||||
/* strip off leading and trailing spaces when splitting a record
|
/* strip off leading and trailing spaces when splitting a record
|
||||||
* into fields with a regular expression.
|
* into fields with a regular expression.
|
||||||
*
|
*
|
||||||
@ -292,7 +289,11 @@ enum qse_awk_option_t
|
|||||||
QSE_AWK_MAPTOVAR = (1 << 15),
|
QSE_AWK_MAPTOVAR = (1 << 15),
|
||||||
|
|
||||||
/* allows BEGIN, END, pattern-action blocks */
|
/* allows BEGIN, END, pattern-action blocks */
|
||||||
QSE_AWK_PABLOCK = (1 << 16)
|
QSE_AWK_PABLOCK = (1 << 16),
|
||||||
|
|
||||||
|
/* option aggregtes */
|
||||||
|
QSE_AWK_CLASSIC = QSE_AWK_IMPLICIT | QSE_AWK_RIO |
|
||||||
|
QSE_AWK_NEWLINE | QSE_AWK_PABLOCK
|
||||||
};
|
};
|
||||||
|
|
||||||
/* error code */
|
/* error code */
|
||||||
|
@ -1225,14 +1225,6 @@ int Awk::open ()
|
|||||||
qse_map_setfreeer (functionMap, QSE_MAP_VAL, freeFunctionMapValue);
|
qse_map_setfreeer (functionMap, QSE_MAP_VAL, freeFunctionMapValue);
|
||||||
qse_map_setscale (functionMap, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t));
|
qse_map_setscale (functionMap, QSE_MAP_KEY, QSE_SIZEOF(qse_char_t));
|
||||||
|
|
||||||
int opt =
|
|
||||||
OPT_IMPLICIT |
|
|
||||||
OPT_RIO |
|
|
||||||
OPT_NEWLINE |
|
|
||||||
OPT_BASEONE |
|
|
||||||
OPT_PABLOCK;
|
|
||||||
qse_awk_setoption (awk, opt);
|
|
||||||
|
|
||||||
runCallback = false;
|
runCallback = false;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,7 @@ qse_awk_t* qse_awk_open (qse_mmgr_t* mmgr, qse_size_t xtn, qse_awk_prm_t* prm)
|
|||||||
qse_lda_setcopier (awk->parse.params, QSE_LDA_COPIER_INLINE);
|
qse_lda_setcopier (awk->parse.params, QSE_LDA_COPIER_INLINE);
|
||||||
qse_lda_setscale (awk->parse.params, QSE_SIZEOF(qse_char_t));
|
qse_lda_setscale (awk->parse.params, QSE_SIZEOF(qse_char_t));
|
||||||
|
|
||||||
awk->option = 0;
|
awk->option = QSE_AWK_CLASSIC;
|
||||||
awk->errnum = QSE_AWK_ENOERR;
|
awk->errnum = QSE_AWK_ENOERR;
|
||||||
awk->errlin = 0;
|
awk->errlin = 0;
|
||||||
awk->stopall = QSE_FALSE;
|
awk->stopall = QSE_FALSE;
|
||||||
@ -364,7 +364,6 @@ void qse_awk_setoption (qse_awk_t* awk, int opt)
|
|||||||
awk->option = opt;
|
awk->option = opt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void qse_awk_stopall (qse_awk_t* awk)
|
void qse_awk_stopall (qse_awk_t* awk)
|
||||||
{
|
{
|
||||||
awk->stopall = QSE_TRUE;
|
awk->stopall = QSE_TRUE;
|
||||||
|
@ -459,9 +459,7 @@ static int fnc_index (
|
|||||||
}
|
}
|
||||||
|
|
||||||
ptr = qse_strxnstr (str0, len0, str1, len1);
|
ptr = qse_strxnstr (str0, len0, str1, len1);
|
||||||
idx = (ptr == QSE_NULL)? -1: (qse_long_t)(ptr - str0);
|
idx = (ptr == QSE_NULL)? 0: ((qse_long_t)(ptr-str0) + 1);
|
||||||
|
|
||||||
if (qse_awk_getoption(run->awk) & QSE_AWK_BASEONE) idx = idx + 1;
|
|
||||||
|
|
||||||
if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str0);
|
if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str0);
|
||||||
if (a1->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str1);
|
if (a1->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, str1);
|
||||||
@ -563,7 +561,7 @@ static int fnc_substr (
|
|||||||
if (n == 1) lcount = (qse_long_t)rcount;
|
if (n == 1) lcount = (qse_long_t)rcount;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qse_awk_getoption(run->awk) & QSE_AWK_BASEONE) lindex = lindex - 1;
|
lindex = lindex - 1;
|
||||||
if (lindex >= (qse_long_t)len) lindex = (qse_long_t)len;
|
if (lindex >= (qse_long_t)len) lindex = (qse_long_t)len;
|
||||||
else if (lindex < 0) lindex = 0;
|
else if (lindex < 0) lindex = 0;
|
||||||
|
|
||||||
@ -593,7 +591,7 @@ static int fnc_split (
|
|||||||
qse_awk_val_t* a0, * a1, * a2, * t1, * t2, ** a1_ref;
|
qse_awk_val_t* a0, * a1, * a2, * t1, * t2, ** a1_ref;
|
||||||
qse_char_t* str, * str_free, * p, * tok;
|
qse_char_t* str, * str_free, * p, * tok;
|
||||||
qse_size_t str_len, str_left, tok_len;
|
qse_size_t str_len, str_left, tok_len;
|
||||||
qse_long_t sta, num;
|
qse_long_t num;
|
||||||
qse_char_t key[QSE_SIZEOF(qse_long_t)*8+2];
|
qse_char_t key[QSE_SIZEOF(qse_long_t)*8+2];
|
||||||
qse_size_t key_len;
|
qse_size_t key_len;
|
||||||
qse_char_t* fs_ptr, * fs_free;
|
qse_char_t* fs_ptr, * fs_free;
|
||||||
@ -740,8 +738,7 @@ static int fnc_split (
|
|||||||
qse_awk_rtx_refupval (run, *a1_ref);
|
qse_awk_rtx_refupval (run, *a1_ref);
|
||||||
|
|
||||||
p = str; str_left = str_len;
|
p = str; str_left = str_len;
|
||||||
sta = (qse_awk_getoption(run->awk) & QSE_AWK_BASEONE)? 1: 0;
|
num = 1;
|
||||||
num = sta;
|
|
||||||
|
|
||||||
while (p != QSE_NULL)
|
while (p != QSE_NULL)
|
||||||
{
|
{
|
||||||
@ -830,7 +827,7 @@ static int fnc_split (
|
|||||||
if (fs_free != QSE_NULL) QSE_AWK_FREE (run->awk, fs_free);
|
if (fs_free != QSE_NULL) QSE_AWK_FREE (run->awk, fs_free);
|
||||||
if (fs_rex_free != QSE_NULL) QSE_AWK_FREEREX (run->awk, fs_rex_free);
|
if (fs_rex_free != QSE_NULL) QSE_AWK_FREEREX (run->awk, fs_rex_free);
|
||||||
|
|
||||||
if (sta == 1) num--;
|
num--;
|
||||||
|
|
||||||
t1 = qse_awk_rtx_makeintval (run, num);
|
t1 = qse_awk_rtx_makeintval (run, num);
|
||||||
if (t1 == QSE_NULL)
|
if (t1 == QSE_NULL)
|
||||||
@ -1301,8 +1298,7 @@ static int fnc_match (
|
|||||||
|
|
||||||
if (n == -1) return -1;
|
if (n == -1) return -1;
|
||||||
|
|
||||||
idx = (n == 0)? -1: (qse_long_t)(mat_ptr - str0);
|
idx = (n == 0)? 0: ((qse_long_t)(mat_ptr-str0) + 1);
|
||||||
if (qse_awk_getoption(run->awk) & QSE_AWK_BASEONE) idx = idx + 1;
|
|
||||||
|
|
||||||
a0 = qse_awk_rtx_makeintval (run, idx);
|
a0 = qse_awk_rtx_makeintval (run, idx);
|
||||||
if (a0 == QSE_NULL)
|
if (a0 == QSE_NULL)
|
||||||
|
@ -1005,16 +1005,8 @@ static int build_runarg (
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qse_awk_getoption(run->awk) & QSE_AWK_BASEONE)
|
key_len = qse_awk_longtostr (argc+1,
|
||||||
{
|
10, QSE_NULL, key, QSE_COUNTOF(key));
|
||||||
key_len = qse_awk_longtostr (argc+1,
|
|
||||||
10, QSE_NULL, key, QSE_COUNTOF(key));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
key_len = qse_awk_longtostr (argc,
|
|
||||||
10, QSE_NULL, key, QSE_COUNTOF(key));
|
|
||||||
}
|
|
||||||
QSE_ASSERT (key_len != (qse_size_t)-1);
|
QSE_ASSERT (key_len != (qse_size_t)-1);
|
||||||
|
|
||||||
/* increment reference count of v_tmp in advance as if
|
/* increment reference count of v_tmp in advance as if
|
||||||
|
@ -38,7 +38,7 @@ typedef struct xtn_t
|
|||||||
{
|
{
|
||||||
const qse_char_t*const* files;
|
const qse_char_t*const* files;
|
||||||
const qse_char_t* str;
|
const qse_char_t* str;
|
||||||
} p;
|
} u;
|
||||||
qse_size_t index; /* current file index */
|
qse_size_t index; /* current file index */
|
||||||
qse_sio_t* handle; /* the handle to an open file */
|
qse_sio_t* handle; /* the handle to an open file */
|
||||||
} in;
|
} in;
|
||||||
@ -60,13 +60,13 @@ typedef struct rxtn_t
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
struct {
|
struct {
|
||||||
const qse_char_t** files;
|
const qse_char_t*const* files;
|
||||||
qse_size_t index;
|
qse_size_t index;
|
||||||
} in;
|
} in;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
const qse_char_t** files;
|
const qse_char_t*const* files;
|
||||||
qse_size_t index;
|
qse_size_t index;
|
||||||
} out;
|
} out;
|
||||||
} c; /* console */
|
} c; /* console */
|
||||||
@ -142,9 +142,7 @@ qse_awk_t* qse_awk_opensimple (void)
|
|||||||
QSE_MEMSET (xtn, 0, QSE_SIZEOF(xtn_t));
|
QSE_MEMSET (xtn, 0, QSE_SIZEOF(xtn_t));
|
||||||
|
|
||||||
/* set default options */
|
/* set default options */
|
||||||
qse_awk_setoption (awk,
|
qse_awk_setoption (awk, QSE_AWK_CLASSIC);
|
||||||
QSE_AWK_IMPLICIT | QSE_AWK_RIO | QSE_AWK_NEWLINE |
|
|
||||||
QSE_AWK_BASEONE | QSE_AWK_PABLOCK);
|
|
||||||
|
|
||||||
/* add intrinsic functions */
|
/* add intrinsic functions */
|
||||||
if (add_functions (awk) == -1)
|
if (add_functions (awk) == -1)
|
||||||
@ -168,9 +166,10 @@ static qse_ssize_t sf_in (
|
|||||||
{
|
{
|
||||||
if (xtn->s.in.type == QSE_AWK_SOURCE_FILES)
|
if (xtn->s.in.type == QSE_AWK_SOURCE_FILES)
|
||||||
{
|
{
|
||||||
if (xtn->s.in.p.files[xtn->s.in.index] == QSE_NULL) return 0;
|
if (xtn->s.in.u.files == QSE_NULL) return -1;
|
||||||
|
if (xtn->s.in.u.files[xtn->s.in.index] == QSE_NULL) return 0;
|
||||||
|
|
||||||
if (xtn->s.in.p.files[xtn->s.in.index][0] == QSE_T('\0'))
|
if (xtn->s.in.u.files[xtn->s.in.index][0] == QSE_T('\0'))
|
||||||
{
|
{
|
||||||
xtn->s.in.handle = qse_sio_in;
|
xtn->s.in.handle = qse_sio_in;
|
||||||
}
|
}
|
||||||
@ -179,15 +178,13 @@ static qse_ssize_t sf_in (
|
|||||||
xtn->s.in.handle = qse_sio_open (
|
xtn->s.in.handle = qse_sio_open (
|
||||||
awk->mmgr,
|
awk->mmgr,
|
||||||
0,
|
0,
|
||||||
xtn->s.in.p.files[xtn->s.in.index],
|
xtn->s.in.u.files[xtn->s.in.index],
|
||||||
QSE_SIO_READ
|
QSE_SIO_READ
|
||||||
);
|
);
|
||||||
if (xtn->s.in.handle == QSE_NULL) return -1;
|
if (xtn->s.in.handle == QSE_NULL) return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
//qse_awk_setsource (awk, xtn->s.in.u.files[xtn->s.in.index]);
|
||||||
qse_awk_setsinname ();
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
@ -216,10 +213,10 @@ static qse_ssize_t sf_in (
|
|||||||
sio = xtn->s.in.handle;
|
sio = xtn->s.in.handle;
|
||||||
|
|
||||||
n = qse_sio_getsn (sio, data, size);
|
n = qse_sio_getsn (sio, data, size);
|
||||||
if (n == 0 && xtn->s.in.p.files[++xtn->s.in.index] != QSE_NULL)
|
if (n == 0 && xtn->s.in.u.files[++xtn->s.in.index] != QSE_NULL)
|
||||||
{
|
{
|
||||||
if (sio != qse_sio_in) qse_sio_close (sio);
|
if (sio != qse_sio_in) qse_sio_close (sio);
|
||||||
if (xtn->s.in.p.files[xtn->s.in.index][0] == QSE_T('\0'))
|
if (xtn->s.in.u.files[xtn->s.in.index][0] == QSE_T('\0'))
|
||||||
{
|
{
|
||||||
xtn->s.in.handle = qse_sio_in;
|
xtn->s.in.handle = qse_sio_in;
|
||||||
}
|
}
|
||||||
@ -228,7 +225,7 @@ static qse_ssize_t sf_in (
|
|||||||
xtn->s.in.handle = qse_sio_open (
|
xtn->s.in.handle = qse_sio_open (
|
||||||
awk->mmgr,
|
awk->mmgr,
|
||||||
0,
|
0,
|
||||||
xtn->s.in.p.files[xtn->s.in.index],
|
xtn->s.in.u.files[xtn->s.in.index],
|
||||||
QSE_SIO_READ
|
QSE_SIO_READ
|
||||||
);
|
);
|
||||||
if (xtn->s.in.handle == QSE_NULL) return -1;
|
if (xtn->s.in.handle == QSE_NULL) return -1;
|
||||||
@ -244,9 +241,9 @@ static qse_ssize_t sf_in (
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while (n < size && xtn->s.in.p.str[xtn->s.in.index] != QSE_T('\0'))
|
while (n < size && xtn->s.in.u.str[xtn->s.in.index] != QSE_T('\0'))
|
||||||
{
|
{
|
||||||
data[n++] = xtn->s.in.p.str[xtn->s.in.index++];
|
data[n++] = xtn->s.in.u.str[xtn->s.in.index++];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,11 +315,11 @@ int qse_awk_parsesimple (
|
|||||||
|
|
||||||
if (ist == QSE_AWK_SOURCE_FILES)
|
if (ist == QSE_AWK_SOURCE_FILES)
|
||||||
{
|
{
|
||||||
xtn->s.in.p.files = (const qse_char_t* const*)isp;
|
xtn->s.in.u.files = (const qse_char_t*const*)isp;
|
||||||
}
|
}
|
||||||
else if (ist == QSE_AWK_SOURCE_STRING)
|
else if (ist == QSE_AWK_SOURCE_STRING)
|
||||||
{
|
{
|
||||||
xtn->s.in.p.str = (const qse_char_t*)isp;
|
xtn->s.in.u.str = (const qse_char_t*)isp;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user