added qse_awk_valtolong() and qse_awk_valtoreal() for convenience
This commit is contained in:
parent
b67f0ccd42
commit
5464fecddc
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: awk.h 516 2011-07-23 09:03:48Z hyunghwan.chung $
|
||||
* $Id: awk.h 518 2011-07-24 14:24:13Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -578,7 +578,8 @@ typedef qse_ssize_t (*qse_awk_rio_fun_t) (
|
||||
);
|
||||
|
||||
/**
|
||||
* The qse_awk_prm_t type defines primitive functions
|
||||
* The qse_awk_prm_t type defines primitive functions required to perform
|
||||
* a set of primitive operations.
|
||||
*/
|
||||
struct qse_awk_prm_t
|
||||
{
|
||||
@ -586,8 +587,8 @@ struct qse_awk_prm_t
|
||||
|
||||
struct
|
||||
{
|
||||
qse_awk_math2_t pow;
|
||||
qse_awk_math2_t mod;
|
||||
qse_awk_math2_t pow; /**< floating-point power function */
|
||||
qse_awk_math2_t mod; /**< floating-point remainder function */
|
||||
qse_awk_math1_t sin;
|
||||
qse_awk_math1_t cos;
|
||||
qse_awk_math1_t tan;
|
||||
@ -2214,6 +2215,18 @@ int qse_awk_rtx_valtonum (
|
||||
qse_real_t* r
|
||||
);
|
||||
|
||||
int qse_awk_rtx_valtolong (
|
||||
qse_awk_rtx_t* rtx,
|
||||
const qse_awk_val_t* val,
|
||||
qse_long_t* l
|
||||
);
|
||||
|
||||
int qse_awk_rtx_valtoreal (
|
||||
qse_awk_rtx_t* rtx,
|
||||
const qse_awk_val_t* val,
|
||||
qse_real_t* r
|
||||
);
|
||||
|
||||
/**
|
||||
* The qse_awk_rtx_strtonum() function converts a string to a number.
|
||||
* A numeric string in the valid decimal, hexadecimal(0x), binary(0b),
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: Awk.cpp 516 2011-07-23 09:03:48Z hyunghwan.chung $
|
||||
* $Id: Awk.cpp 518 2011-07-24 14:24:13Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -381,14 +381,12 @@ int Awk::Value::getInt (long_t* v) const
|
||||
val->type != QSE_AWK_VAL_NIL &&
|
||||
val->type != QSE_AWK_VAL_MAP)
|
||||
{
|
||||
real_t rv;
|
||||
int n = qse_awk_rtx_valtonum (run->rtx, val, &lv, &rv);
|
||||
int n = qse_awk_rtx_valtolong (run->rtx, val, &lv);
|
||||
if (n <= -1)
|
||||
{
|
||||
run->awk->retrieveError (run);
|
||||
return -1;
|
||||
}
|
||||
if (n >= 1) lv = (long_t)rv;
|
||||
}
|
||||
|
||||
*v = lv;
|
||||
@ -405,14 +403,12 @@ int Awk::Value::getReal (real_t* v) const
|
||||
val->type != QSE_AWK_VAL_NIL &&
|
||||
val->type != QSE_AWK_VAL_MAP)
|
||||
{
|
||||
long_t lv;
|
||||
int n = qse_awk_rtx_valtonum (run->rtx, val, &lv, &rv);
|
||||
int n = qse_awk_rtx_valtoreal (run->rtx, val, &rv);
|
||||
if (n <= -1)
|
||||
{
|
||||
run->awk->retrieveError (run);
|
||||
return -1;
|
||||
}
|
||||
if (n == 0) rv = (real_t)lv;
|
||||
}
|
||||
|
||||
*v = rv;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: fnc.c 474 2011-05-23 16:52:37Z hyunghwan.chung $
|
||||
* $Id: fnc.c 518 2011-07-24 14:24:13Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -434,13 +434,11 @@ static int fnc_index (qse_awk_rtx_t* rtx, const qse_cstr_t* fnm)
|
||||
if (nargs >= 3)
|
||||
{
|
||||
qse_awk_val_t* a2;
|
||||
qse_real_t rv;
|
||||
int n;
|
||||
|
||||
a2 = qse_awk_rtx_getarg (rtx, 2);
|
||||
n = qse_awk_rtx_valtonum (rtx, a2, &start, &rv);
|
||||
n = qse_awk_rtx_valtolong (rtx, a2, &start);
|
||||
if (n <= -1) return -1;
|
||||
if (n >= 1) start = (qse_long_t)rv;
|
||||
}
|
||||
|
||||
if (a0->type == QSE_AWK_VAL_STR)
|
||||
@ -534,7 +532,6 @@ static int fnc_substr (qse_awk_rtx_t* rtx, const qse_cstr_t* fnm)
|
||||
qse_char_t* str;
|
||||
qse_size_t len;
|
||||
qse_long_t lindex, lcount;
|
||||
qse_real_t rindex, rcount;
|
||||
int n;
|
||||
|
||||
nargs = qse_awk_rtx_getnargs (rtx);
|
||||
@ -555,25 +552,23 @@ static int fnc_substr (qse_awk_rtx_t* rtx, const qse_cstr_t* fnm)
|
||||
if (str == QSE_NULL) return -1;
|
||||
}
|
||||
|
||||
n = qse_awk_rtx_valtonum (rtx, a1, &lindex, &rindex);
|
||||
n = qse_awk_rtx_valtolong (rtx, a1, &lindex);
|
||||
if (n <= -1)
|
||||
{
|
||||
if (a0->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (rtx->awk, str);
|
||||
return -1;
|
||||
}
|
||||
if (n == 1) lindex = (qse_long_t)rindex;
|
||||
|
||||
if (a2 == QSE_NULL) lcount = (qse_long_t)len;
|
||||
else
|
||||
{
|
||||
n = qse_awk_rtx_valtonum (rtx, a2, &lcount, &rcount);
|
||||
n = qse_awk_rtx_valtolong (rtx, a2, &lcount);
|
||||
if (n <= -1)
|
||||
{
|
||||
if (a0->type != QSE_AWK_VAL_STR)
|
||||
QSE_AWK_FREE (rtx->awk, str);
|
||||
return -1;
|
||||
}
|
||||
if (n == 1) lcount = (qse_long_t)rcount;
|
||||
}
|
||||
|
||||
lindex = lindex - 1;
|
||||
@ -1217,12 +1212,10 @@ static int fnc_match (qse_awk_rtx_t* rtx, const qse_cstr_t* fnm)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
qse_real_t rv;
|
||||
/* if the 3rd parameter is not an array,
|
||||
* it is treated as a match start index */
|
||||
n = qse_awk_rtx_valtonum (rtx, a2, &start, &rv);
|
||||
n = qse_awk_rtx_valtolong (rtx, a2, &start);
|
||||
if (n <= -1) return -1;
|
||||
if (n >= 1) start = (qse_long_t)rv;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1401,7 +1394,6 @@ static int fnc_math_1 (
|
||||
{
|
||||
qse_size_t nargs;
|
||||
qse_awk_val_t* a0;
|
||||
qse_long_t lv;
|
||||
qse_real_t rv;
|
||||
qse_awk_val_t* r;
|
||||
int n;
|
||||
@ -1411,9 +1403,8 @@ static int fnc_math_1 (
|
||||
|
||||
a0 = qse_awk_rtx_getarg (rtx, 0);
|
||||
|
||||
n = qse_awk_rtx_valtonum (rtx, a0, &lv, &rv);
|
||||
n = qse_awk_rtx_valtoreal (rtx, a0, &rv);
|
||||
if (n <= -1) return -1;
|
||||
if (n == 0) rv = (qse_real_t)lv;
|
||||
|
||||
r = qse_awk_rtx_makerealval (rtx, f (rtx->awk, rv));
|
||||
if (r == QSE_NULL) return -1;
|
||||
@ -1427,7 +1418,6 @@ static int fnc_math_2 (
|
||||
{
|
||||
qse_size_t nargs;
|
||||
qse_awk_val_t* a0, * a1;
|
||||
qse_long_t lv0, lv1;
|
||||
qse_real_t rv0, rv1;
|
||||
qse_awk_val_t* r;
|
||||
int n;
|
||||
@ -1438,13 +1428,11 @@ static int fnc_math_2 (
|
||||
a0 = qse_awk_rtx_getarg (rtx, 0);
|
||||
a1 = qse_awk_rtx_getarg (rtx, 1);
|
||||
|
||||
n = qse_awk_rtx_valtonum (rtx, a0, &lv0, &rv0);
|
||||
n = qse_awk_rtx_valtoreal (rtx, a0, &rv0);
|
||||
if (n <= -1) return -1;
|
||||
if (n == 0) rv0 = (qse_real_t)lv0;
|
||||
|
||||
n = qse_awk_rtx_valtonum (rtx, a1, &lv1, &rv1);
|
||||
n = qse_awk_rtx_valtoreal (rtx, a1, &rv1);
|
||||
if (n <= -1) return -1;
|
||||
if (n == 0) rv1 = (qse_real_t)lv1;
|
||||
|
||||
r = qse_awk_rtx_makerealval (rtx, f (rtx->awk, rv0, rv1));
|
||||
if (r == QSE_NULL) return -1;
|
||||
@ -1491,7 +1479,6 @@ static int fnc_int (qse_awk_rtx_t* run, const qse_cstr_t* fnm)
|
||||
qse_size_t nargs;
|
||||
qse_awk_val_t* a0;
|
||||
qse_long_t lv;
|
||||
qse_real_t rv;
|
||||
qse_awk_val_t* r;
|
||||
int n;
|
||||
|
||||
@ -1500,9 +1487,8 @@ static int fnc_int (qse_awk_rtx_t* run, const qse_cstr_t* fnm)
|
||||
|
||||
a0 = qse_awk_rtx_getarg (run, 0);
|
||||
|
||||
n = qse_awk_rtx_valtonum (run, a0, &lv, &rv);
|
||||
n = qse_awk_rtx_valtolong (run, a0, &lv);
|
||||
if (n <= -1) return -1;
|
||||
if (n == 1) lv = (qse_long_t)rv;
|
||||
|
||||
r = qse_awk_rtx_makeintval (run, lv);
|
||||
if (r == QSE_NULL) return -1;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: parse.c 517 2011-07-23 16:17:15Z hyunghwan.chung $
|
||||
* $Id: parse.c 518 2011-07-24 14:24:13Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -4057,11 +4057,10 @@ static qse_awk_nde_t* parse_unary (
|
||||
folded.r = !((qse_awk_nde_real_t*)left)->val;
|
||||
break;
|
||||
|
||||
/*
|
||||
case QSE_AWK_UNROP_BNOT:
|
||||
folded.r = ~((qse_awk_nde_real_t*)left)->val;
|
||||
folded.l = ~((qse_long_t)((qse_awk_nde_real_t*)left)->val);
|
||||
fold = QSE_AWK_NDE_INT;
|
||||
break;
|
||||
*/
|
||||
|
||||
default:
|
||||
fold = -1;
|
||||
@ -4072,26 +4071,72 @@ static qse_awk_nde_t* parse_unary (
|
||||
switch (fold)
|
||||
{
|
||||
case QSE_AWK_NDE_INT:
|
||||
QSE_ASSERT (left->type == fold);
|
||||
((qse_awk_nde_int_t*)left)->val = folded.l;
|
||||
if (((qse_awk_nde_int_t*)left)->str)
|
||||
if (left->type == fold)
|
||||
{
|
||||
QSE_AWK_FREE (awk, ((qse_awk_nde_int_t*)left)->str);
|
||||
((qse_awk_nde_int_t*)left)->str = QSE_NULL;
|
||||
((qse_awk_nde_int_t*)left)->len = 0;
|
||||
((qse_awk_nde_int_t*)left)->val = folded.l;
|
||||
if (((qse_awk_nde_int_t*)left)->str)
|
||||
{
|
||||
QSE_AWK_FREE (awk, ((qse_awk_nde_int_t*)left)->str);
|
||||
((qse_awk_nde_int_t*)left)->str = QSE_NULL;
|
||||
((qse_awk_nde_int_t*)left)->len = 0;
|
||||
}
|
||||
return left;
|
||||
}
|
||||
else
|
||||
{
|
||||
qse_awk_nde_int_t* tmp;
|
||||
|
||||
QSE_ASSERT (left->type == QSE_AWK_NDE_REAL);
|
||||
qse_awk_clrpt (awk, left);
|
||||
|
||||
tmp = (qse_awk_nde_int_t*) QSE_AWK_ALLOC (
|
||||
awk, QSE_SIZEOF(qse_awk_nde_int_t));
|
||||
if (tmp == QSE_NULL)
|
||||
{
|
||||
SETERR_LOC (awk, QSE_AWK_ENOMEM, xloc);
|
||||
return QSE_NULL;
|
||||
}
|
||||
QSE_MEMSET (tmp, 0, QSE_SIZEOF(qse_awk_nde_int_t));
|
||||
tmp->type = QSE_AWK_NDE_INT;
|
||||
tmp->loc = *xloc;
|
||||
tmp->val = folded.l;
|
||||
|
||||
return (qse_awk_nde_t*)tmp;
|
||||
}
|
||||
return left;
|
||||
|
||||
case QSE_AWK_NDE_REAL:
|
||||
QSE_ASSERT (left->type == fold);
|
||||
((qse_awk_nde_real_t*)left)->val = folded.r;
|
||||
if (((qse_awk_nde_real_t*)left)->str)
|
||||
if (left->type == fold)
|
||||
{
|
||||
QSE_AWK_FREE (awk, ((qse_awk_nde_real_t*)left)->str);
|
||||
((qse_awk_nde_real_t*)left)->str = QSE_NULL;
|
||||
((qse_awk_nde_real_t*)left)->len = 0;
|
||||
((qse_awk_nde_real_t*)left)->val = folded.r;
|
||||
if (((qse_awk_nde_real_t*)left)->str)
|
||||
{
|
||||
QSE_AWK_FREE (awk, ((qse_awk_nde_real_t*)left)->str);
|
||||
((qse_awk_nde_real_t*)left)->str = QSE_NULL;
|
||||
((qse_awk_nde_real_t*)left)->len = 0;
|
||||
}
|
||||
return left;
|
||||
}
|
||||
else
|
||||
{
|
||||
qse_awk_nde_real_t* tmp;
|
||||
|
||||
QSE_ASSERT (left->type == QSE_AWK_NDE_INT);
|
||||
qse_awk_clrpt (awk, left);
|
||||
|
||||
tmp = (qse_awk_nde_real_t*) QSE_AWK_ALLOC (
|
||||
awk, QSE_SIZEOF(qse_awk_nde_real_t));
|
||||
if (tmp == QSE_NULL)
|
||||
{
|
||||
SETERR_LOC (awk, QSE_AWK_ENOMEM, xloc);
|
||||
return QSE_NULL;
|
||||
}
|
||||
QSE_MEMSET (tmp, 0, QSE_SIZEOF(qse_awk_nde_real_t));
|
||||
tmp->type = QSE_AWK_NDE_REAL;
|
||||
tmp->loc = *xloc;
|
||||
tmp->val = folded.r;
|
||||
|
||||
return (qse_awk_nde_t*)tmp;
|
||||
}
|
||||
return left;
|
||||
|
||||
default:
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: run.c 517 2011-07-23 16:17:15Z hyunghwan.chung $
|
||||
* $Id: run.c 518 2011-07-24 14:24:13Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -368,11 +368,9 @@ static int set_global (
|
||||
{
|
||||
int n;
|
||||
qse_long_t lv;
|
||||
qse_real_t rv;
|
||||
|
||||
n = qse_awk_rtx_valtonum (rtx, val, &lv, &rv);
|
||||
if (n == -1) return -1;
|
||||
if (n == 1) lv = (qse_long_t)rv;
|
||||
n = qse_awk_rtx_valtolong (rtx, val, &lv);
|
||||
if (n <= -1) return -1;
|
||||
|
||||
rtx->gbl.fnr = lv;
|
||||
break;
|
||||
@ -444,11 +442,9 @@ static int set_global (
|
||||
{
|
||||
int n;
|
||||
qse_long_t lv;
|
||||
qse_real_t rv;
|
||||
|
||||
n = qse_awk_rtx_valtonum (rtx, val, &lv, &rv);
|
||||
n = qse_awk_rtx_valtolong (rtx, val, &lv);
|
||||
if (n <= -1) return -1;
|
||||
if (n == 1) lv = (qse_long_t)rv;
|
||||
|
||||
if (lv < (qse_long_t)rtx->inrec.nflds)
|
||||
{
|
||||
@ -469,11 +465,9 @@ static int set_global (
|
||||
{
|
||||
int n;
|
||||
qse_long_t lv;
|
||||
qse_real_t rv;
|
||||
|
||||
n = qse_awk_rtx_valtonum (rtx, val, &lv, &rv);
|
||||
n = qse_awk_rtx_valtolong (rtx, val, &lv);
|
||||
if (n <= -1) return -1;
|
||||
if (n == 1) lv = (qse_long_t)rv;
|
||||
|
||||
rtx->gbl.nr = lv;
|
||||
break;
|
||||
@ -3607,7 +3601,6 @@ static qse_awk_val_t* do_assignment_pos (
|
||||
{
|
||||
qse_awk_val_t* v;
|
||||
qse_long_t lv;
|
||||
qse_real_t rv;
|
||||
qse_xstr_t str;
|
||||
int n;
|
||||
|
||||
@ -3615,15 +3608,15 @@ static qse_awk_val_t* do_assignment_pos (
|
||||
if (v == QSE_NULL) return QSE_NULL;
|
||||
|
||||
qse_awk_rtx_refupval (run, v);
|
||||
n = qse_awk_rtx_valtonum (run, v, &lv, &rv);
|
||||
n = qse_awk_rtx_valtolong (run, v, &lv);
|
||||
qse_awk_rtx_refdownval (run, v);
|
||||
|
||||
if (n == -1)
|
||||
if (n <= -1)
|
||||
{
|
||||
SETERR_LOC (run, QSE_AWK_EPOSIDX, &pos->loc);
|
||||
return QSE_NULL;
|
||||
}
|
||||
if (n == 1) lv = (qse_long_t)rv;
|
||||
|
||||
if (!IS_VALID_POSIDX(lv))
|
||||
{
|
||||
SETERR_LOC (run, QSE_AWK_EPOSIDX, &pos->loc);
|
||||
@ -3925,80 +3918,46 @@ static qse_awk_val_t* eval_binop_in (
|
||||
static qse_awk_val_t* eval_binop_bor (
|
||||
qse_awk_rtx_t* rtx, qse_awk_val_t* left, qse_awk_val_t* right)
|
||||
{
|
||||
int n1, n2, n3;
|
||||
qse_long_t l1, l2;
|
||||
qse_real_t r1, r2;
|
||||
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (qse_awk_rtx_valtolong (rtx, left, &l1) <= -1 ||
|
||||
qse_awk_rtx_valtolong (rtx, right, &l2) <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
n3 = n1 + (n2 << 1);
|
||||
QSE_ASSERT (n3 >= 0 && n3 <= 3);
|
||||
|
||||
return qse_awk_rtx_makeintval (rtx,
|
||||
(n3 == 0)? ((qse_long_t)l1 | (qse_long_t)l2):
|
||||
(n3 == 1)? ((qse_long_t)r1 | (qse_long_t)l2):
|
||||
(n3 == 2)? ((qse_long_t)l1 | (qse_long_t)r2):
|
||||
((qse_long_t)r1 | (qse_long_t)r2));
|
||||
|
||||
return qse_awk_rtx_makeintval (rtx, l1 | l2);
|
||||
}
|
||||
|
||||
static qse_awk_val_t* eval_binop_bxor (
|
||||
qse_awk_rtx_t* rtx, qse_awk_val_t* left, qse_awk_val_t* right)
|
||||
{
|
||||
int n1, n2, n3;
|
||||
qse_long_t l1, l2;
|
||||
qse_real_t r1, r2;
|
||||
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (qse_awk_rtx_valtolong (rtx, left, &l1) <= -1 ||
|
||||
qse_awk_rtx_valtolong (rtx, right, &l2) <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
n3 = n1 + (n2 << 1);
|
||||
QSE_ASSERT (n3 >= 0 && n3 <= 3);
|
||||
|
||||
return qse_awk_rtx_makeintval (rtx,
|
||||
(n3 == 0)? ((qse_long_t)l1 ^ (qse_long_t)l2):
|
||||
(n3 == 1)? ((qse_long_t)r1 ^ (qse_long_t)l2):
|
||||
(n3 == 2)? ((qse_long_t)l1 ^ (qse_long_t)r2):
|
||||
((qse_long_t)r1 ^ (qse_long_t)r2));
|
||||
return qse_awk_rtx_makeintval (rtx, l1 ^ l2);
|
||||
}
|
||||
|
||||
static qse_awk_val_t* eval_binop_band (
|
||||
qse_awk_rtx_t* rtx, qse_awk_val_t* left, qse_awk_val_t* right)
|
||||
{
|
||||
int n1, n2, n3;
|
||||
qse_long_t l1, l2;
|
||||
qse_real_t r1, r2;
|
||||
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (qse_awk_rtx_valtolong (rtx, left, &l1) <= -1 ||
|
||||
qse_awk_rtx_valtolong (rtx, right, &l2) <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
n3 = n1 + (n2 << 1);
|
||||
QSE_ASSERT (n3 >= 0 && n3 <= 3);
|
||||
|
||||
return qse_awk_rtx_makeintval (rtx,
|
||||
(n3 == 0)? ((qse_long_t)l1 & (qse_long_t)l2):
|
||||
(n3 == 1)? ((qse_long_t)r1 & (qse_long_t)l2):
|
||||
(n3 == 2)? ((qse_long_t)l1 & (qse_long_t)r2):
|
||||
((qse_long_t)r1 & (qse_long_t)r2));
|
||||
return qse_awk_rtx_makeintval (rtx, l1 & l2);
|
||||
}
|
||||
|
||||
static int __cmp_nil_nil (
|
||||
@ -4376,58 +4335,31 @@ static qse_awk_val_t* eval_binop_le (
|
||||
static qse_awk_val_t* eval_binop_lshift (
|
||||
qse_awk_rtx_t* rtx, qse_awk_val_t* left, qse_awk_val_t* right)
|
||||
{
|
||||
int n1, n2, n3;
|
||||
qse_long_t l1, l2;
|
||||
qse_real_t r1, r2;
|
||||
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (qse_awk_rtx_valtolong (rtx, left, &l1) <= -1 ||
|
||||
qse_awk_rtx_valtolong (rtx, right, &l2) <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
n3 = n1 + (n2 << 1);
|
||||
if (n3 == 0)
|
||||
{
|
||||
return qse_awk_rtx_makeintval (rtx, (qse_long_t)l1<<(qse_long_t)l2);
|
||||
}
|
||||
else
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
}
|
||||
return qse_awk_rtx_makeintval (rtx, l1 << l2);
|
||||
}
|
||||
|
||||
static qse_awk_val_t* eval_binop_rshift (
|
||||
qse_awk_rtx_t* rtx, qse_awk_val_t* left, qse_awk_val_t* right)
|
||||
{
|
||||
int n1, n2, n3;
|
||||
qse_long_t l1, l2;
|
||||
qse_real_t r1, r2;
|
||||
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (qse_awk_rtx_valtolong (rtx, left, &l1) <= -1 ||
|
||||
qse_awk_rtx_valtolong (rtx, right, &l2) <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
n3 = n1 + (n2 << 1);
|
||||
if (n3 == 0)
|
||||
{
|
||||
return qse_awk_rtx_makeintval (
|
||||
rtx, (qse_long_t)l1>>(qse_long_t)l2);
|
||||
}
|
||||
else
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
}
|
||||
return qse_awk_rtx_makeintval (rtx, l1 >> l2);
|
||||
}
|
||||
|
||||
static qse_awk_val_t* eval_binop_plus (
|
||||
@ -4440,7 +4372,7 @@ static qse_awk_val_t* eval_binop_plus (
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (n1 <= -1 || n2 <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
@ -4471,7 +4403,7 @@ static qse_awk_val_t* eval_binop_minus (
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (n1 <= -1 || n2 <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
@ -4495,7 +4427,7 @@ static qse_awk_val_t* eval_binop_mul (
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (n1 <= -1 || n2 <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
@ -4520,7 +4452,7 @@ static qse_awk_val_t* eval_binop_div (
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (n1 <= -1 || n2 <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
@ -4578,7 +4510,7 @@ static qse_awk_val_t* eval_binop_idiv (
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (n1 <= -1 || n2 <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
@ -4631,7 +4563,7 @@ static qse_awk_val_t* eval_binop_mod (
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (n1 <= -1 || n2 <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
@ -4690,7 +4622,7 @@ static qse_awk_val_t* eval_binop_exp (
|
||||
n1 = qse_awk_rtx_valtonum (rtx, left, &l1, &r1);
|
||||
n2 = qse_awk_rtx_valtonum (rtx, right, &l2, &r2);
|
||||
|
||||
if (n1 == -1 || n2 == -1)
|
||||
if (n1 <= -1 || n2 <= -1)
|
||||
{
|
||||
SETERR_COD (rtx, QSE_AWK_EOPERAND);
|
||||
return QSE_NULL;
|
||||
@ -5001,7 +4933,7 @@ static qse_awk_val_t* eval_unary (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||
{
|
||||
case QSE_AWK_UNROP_MINUS:
|
||||
n = qse_awk_rtx_valtonum (run, left, &l, &r);
|
||||
if (n == -1) goto exit_func;
|
||||
if (n <= -1) goto exit_func;
|
||||
|
||||
res = (n == 0)? qse_awk_rtx_makeintval (run, -l):
|
||||
qse_awk_rtx_makerealval (run, -r);
|
||||
@ -5016,7 +4948,7 @@ static qse_awk_val_t* eval_unary (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||
else
|
||||
{
|
||||
n = qse_awk_rtx_valtonum (run, left, &l, &r);
|
||||
if (n == -1) goto exit_func;
|
||||
if (n <= -1) goto exit_func;
|
||||
|
||||
res = (n == 0)? qse_awk_rtx_makeintval (run, !l):
|
||||
qse_awk_rtx_makerealval (run, !r);
|
||||
@ -5024,16 +4956,15 @@ static qse_awk_val_t* eval_unary (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||
break;
|
||||
|
||||
case QSE_AWK_UNROP_BNOT:
|
||||
n = qse_awk_rtx_valtonum (run, left, &l, &r);
|
||||
if (n == -1) goto exit_func;
|
||||
n = qse_awk_rtx_valtolong (run, left, &l);
|
||||
if (n <= -1) goto exit_func;
|
||||
|
||||
if (n == 1) l = (qse_long_t)r;
|
||||
res = qse_awk_rtx_makeintval (run, ~l);
|
||||
break;
|
||||
|
||||
case QSE_AWK_UNROP_PLUS:
|
||||
n = qse_awk_rtx_valtonum (run, left, &l, &r);
|
||||
if (n == -1) goto exit_func;
|
||||
if (n <= -1) goto exit_func;
|
||||
|
||||
res = (n == 0)? qse_awk_rtx_makeintval (run, l):
|
||||
qse_awk_rtx_makerealval (run, r);
|
||||
@ -5102,7 +5033,7 @@ static qse_awk_val_t* eval_incpre (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||
int n;
|
||||
|
||||
n = qse_awk_rtx_valtonum (run, left, &v1, &v2);
|
||||
if (n == -1)
|
||||
if (n <= -1)
|
||||
{
|
||||
qse_awk_rtx_refdownval (run, left);
|
||||
ADJERR_LOC (run, &nde->loc);
|
||||
@ -5275,7 +5206,7 @@ static qse_awk_val_t* eval_incpst (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||
int n;
|
||||
|
||||
n = qse_awk_rtx_valtonum (run, left, &v1, &v2);
|
||||
if (n == -1)
|
||||
if (n <= -1)
|
||||
{
|
||||
qse_awk_rtx_refdownval (run, left);
|
||||
ADJERR_LOC (run, &nde->loc);
|
||||
@ -6012,7 +5943,6 @@ static int get_reference (
|
||||
{
|
||||
int n;
|
||||
qse_long_t lv;
|
||||
qse_real_t rv;
|
||||
qse_awk_val_t* v;
|
||||
|
||||
/* the position number is returned for the positional
|
||||
@ -6021,15 +5951,15 @@ static int get_reference (
|
||||
if (v == QSE_NULL) return -1;
|
||||
|
||||
qse_awk_rtx_refupval (run, v);
|
||||
n = qse_awk_rtx_valtonum (run, v, &lv, &rv);
|
||||
n = qse_awk_rtx_valtolong (run, v, &lv);
|
||||
qse_awk_rtx_refdownval (run, v);
|
||||
|
||||
if (n == -1)
|
||||
if (n <= -1)
|
||||
{
|
||||
SETERR_LOC (run, QSE_AWK_EPOSIDX, &nde->loc);
|
||||
return -1;
|
||||
}
|
||||
if (n == 1) lv = (qse_long_t)rv;
|
||||
|
||||
if (!IS_VALID_POSIDX(lv))
|
||||
{
|
||||
SETERR_LOC (run, QSE_AWK_EPOSIDX, &nde->loc);
|
||||
@ -6281,21 +6211,19 @@ static qse_awk_val_t* eval_pos (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||
qse_awk_nde_pos_t* pos = (qse_awk_nde_pos_t*)nde;
|
||||
qse_awk_val_t* v;
|
||||
qse_long_t lv;
|
||||
qse_real_t rv;
|
||||
int n;
|
||||
|
||||
v = eval_expression (run, pos->val);
|
||||
if (v == QSE_NULL) return QSE_NULL;
|
||||
|
||||
qse_awk_rtx_refupval (run, v);
|
||||
n = qse_awk_rtx_valtonum (run, v, &lv, &rv);
|
||||
n = qse_awk_rtx_valtolong (run, v, &lv);
|
||||
qse_awk_rtx_refdownval (run, v);
|
||||
if (n == -1)
|
||||
if (n <= -1)
|
||||
{
|
||||
SETERR_LOC (run, QSE_AWK_EPOSIDX, &nde->loc);
|
||||
return QSE_NULL;
|
||||
}
|
||||
if (n == 1) lv = (qse_long_t)rv;
|
||||
|
||||
if (lv < 0)
|
||||
{
|
||||
@ -6734,36 +6662,37 @@ qse_char_t* qse_awk_rtx_format (
|
||||
qse_size_t stack_arg_idx = 1;
|
||||
qse_awk_val_t* val;
|
||||
|
||||
#define OUT_CHAR(c) \
|
||||
do { \
|
||||
if (qse_str_ccat (out, (c)) == -1) \
|
||||
{ \
|
||||
SETERR_COD (rtx, QSE_AWK_ENOMEM); \
|
||||
return QSE_NULL; \
|
||||
} \
|
||||
} while (0)
|
||||
#define OUT_CHAR(c) QSE_BLOCK( \
|
||||
if (qse_str_ccat (out, (c)) == -1) \
|
||||
{ \
|
||||
SETERR_COD (rtx, QSE_AWK_ENOMEM); \
|
||||
return QSE_NULL; \
|
||||
} \
|
||||
)
|
||||
|
||||
#define FMT_CHAR(c) \
|
||||
do { \
|
||||
if (qse_str_ccat (fbu, (c)) == -1) \
|
||||
{ \
|
||||
SETERR_COD (rtx, QSE_AWK_ENOMEM); \
|
||||
return QSE_NULL; \
|
||||
} \
|
||||
} while (0)
|
||||
#define FMT_CHAR(c) QSE_BLOCK( \
|
||||
if (qse_str_ccat (fbu, (c)) == -1) \
|
||||
{ \
|
||||
SETERR_COD (rtx, QSE_AWK_ENOMEM); \
|
||||
return QSE_NULL; \
|
||||
} \
|
||||
)
|
||||
|
||||
#define GROW(buf) \
|
||||
do { \
|
||||
if ((buf)->ptr != QSE_NULL) \
|
||||
{ \
|
||||
QSE_AWK_FREE (rtx->awk, (buf)->ptr); \
|
||||
(buf)->ptr = QSE_NULL; \
|
||||
} \
|
||||
(buf)->len += (buf)->inc; \
|
||||
(buf)->ptr = (qse_char_t*)QSE_AWK_ALLOC ( \
|
||||
rtx->awk, (buf)->len * QSE_SIZEOF(qse_char_t)); \
|
||||
if ((buf)->ptr == QSE_NULL) (buf)->len = 0; \
|
||||
} while (0)
|
||||
#define GROW(buf) QSE_BLOCK( \
|
||||
if ((buf)->ptr != QSE_NULL) \
|
||||
{ \
|
||||
QSE_AWK_FREE (rtx->awk, (buf)->ptr); \
|
||||
(buf)->ptr = QSE_NULL; \
|
||||
} \
|
||||
(buf)->len += (buf)->inc; \
|
||||
(buf)->ptr = (qse_char_t*)QSE_AWK_ALLOC ( \
|
||||
rtx->awk, (buf)->len * QSE_SIZEOF(qse_char_t)); \
|
||||
if ((buf)->ptr == QSE_NULL) \
|
||||
{ \
|
||||
SETERR_COD (rtx, QSE_AWK_ENOMEM); \
|
||||
(buf)->len = 0; \
|
||||
} \
|
||||
)
|
||||
|
||||
QSE_ASSERTX (rtx->format.tmp.ptr != QSE_NULL,
|
||||
"run->format.tmp.ptr should have been assigned a pointer to a block of memory before this function has been called");
|
||||
@ -6808,7 +6737,6 @@ qse_char_t* qse_awk_rtx_format (
|
||||
if (i < fmt_len && fmt[i] == QSE_T('*'))
|
||||
{
|
||||
qse_awk_val_t* v;
|
||||
qse_real_t r;
|
||||
qse_char_t* p;
|
||||
int n;
|
||||
|
||||
@ -6840,11 +6768,9 @@ qse_char_t* qse_awk_rtx_format (
|
||||
}
|
||||
|
||||
qse_awk_rtx_refupval (rtx, v);
|
||||
n = qse_awk_rtx_valtonum (rtx, v, &width, &r);
|
||||
n = qse_awk_rtx_valtolong (rtx, v, &width);
|
||||
qse_awk_rtx_refdownval (rtx, v);
|
||||
|
||||
if (n == -1) return QSE_NULL;
|
||||
if (n == 1) width = (qse_long_t)r;
|
||||
if (n <= -1) return QSE_NULL;
|
||||
|
||||
do
|
||||
{
|
||||
@ -6904,7 +6830,6 @@ qse_char_t* qse_awk_rtx_format (
|
||||
if (i < fmt_len && fmt[i] == QSE_T('*'))
|
||||
{
|
||||
qse_awk_val_t* v;
|
||||
qse_real_t r;
|
||||
qse_char_t* p;
|
||||
int n;
|
||||
|
||||
@ -6936,28 +6861,18 @@ qse_char_t* qse_awk_rtx_format (
|
||||
}
|
||||
|
||||
qse_awk_rtx_refupval (rtx, v);
|
||||
n = qse_awk_rtx_valtonum (rtx, v, &prec, &r);
|
||||
n = qse_awk_rtx_valtolong (rtx, v, &prec);
|
||||
qse_awk_rtx_refdownval (rtx, v);
|
||||
|
||||
if (n == -1) return QSE_NULL;
|
||||
if (n == 1) prec = (qse_long_t)r;
|
||||
if (n <= -1) return QSE_NULL;
|
||||
|
||||
do
|
||||
{
|
||||
n = rtx->awk->prm.sprintf (
|
||||
n = qse_awk_sprintlong (
|
||||
rtx->awk,
|
||||
rtx->format.tmp.ptr,
|
||||
rtx->format.tmp.len,
|
||||
#if QSE_SIZEOF_LONG_LONG > 0
|
||||
QSE_T("%lld"), (long long)prec
|
||||
#elif QSE_SIZEOF___INT64 > 0
|
||||
QSE_T("%I64d"), (__int64)prec
|
||||
#elif QSE_SIZEOF_LONG > 0
|
||||
QSE_T("%ld"), (long)prec
|
||||
#elif QSE_SIZEOF_INT > 0
|
||||
QSE_T("%d"), (int)prec
|
||||
#endif
|
||||
);
|
||||
prec
|
||||
);
|
||||
if (n == -1)
|
||||
{
|
||||
GROW (&rtx->format.tmp);
|
||||
@ -6966,7 +6881,6 @@ qse_char_t* qse_awk_rtx_format (
|
||||
SETERR_COD (rtx, QSE_AWK_ENOMEM);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -7007,7 +6921,6 @@ qse_char_t* qse_awk_rtx_format (
|
||||
{
|
||||
qse_awk_val_t* v;
|
||||
qse_long_t l;
|
||||
qse_real_t r;
|
||||
qse_char_t* p;
|
||||
int n;
|
||||
|
||||
@ -7057,11 +6970,9 @@ qse_char_t* qse_awk_rtx_format (
|
||||
}
|
||||
|
||||
qse_awk_rtx_refupval (rtx, v);
|
||||
n = qse_awk_rtx_valtonum (rtx, v, &l, &r);
|
||||
n = qse_awk_rtx_valtolong (rtx, v, &l);
|
||||
qse_awk_rtx_refdownval (rtx, v);
|
||||
|
||||
if (n == -1) return QSE_NULL;
|
||||
if (n == 1) l = (qse_long_t)r;
|
||||
if (n <= -1) return QSE_NULL;
|
||||
|
||||
do
|
||||
{
|
||||
@ -7079,7 +6990,7 @@ qse_char_t* qse_awk_rtx_format (
|
||||
#elif QSE_SIZEOF_INT > 0
|
||||
(int)l
|
||||
#endif
|
||||
);
|
||||
);
|
||||
|
||||
if (n == -1)
|
||||
{
|
||||
@ -7109,7 +7020,6 @@ qse_char_t* qse_awk_rtx_format (
|
||||
fmt[i] == QSE_T('f'))
|
||||
{
|
||||
qse_awk_val_t* v;
|
||||
qse_long_t l;
|
||||
qse_real_t r;
|
||||
qse_char_t* p;
|
||||
int n;
|
||||
@ -7145,11 +7055,9 @@ qse_char_t* qse_awk_rtx_format (
|
||||
}
|
||||
|
||||
qse_awk_rtx_refupval (rtx, v);
|
||||
n = qse_awk_rtx_valtonum (rtx, v, &l, &r);
|
||||
n = qse_awk_rtx_valtoreal (rtx, v, &r);
|
||||
qse_awk_rtx_refdownval (rtx, v);
|
||||
|
||||
if (n == -1) return QSE_NULL;
|
||||
if (n == 0) r = (qse_real_t)l;
|
||||
if (n <= -1) return QSE_NULL;
|
||||
|
||||
do
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: std.c 516 2011-07-23 09:03:48Z hyunghwan.chung $
|
||||
* $Id: std.c 518 2011-07-24 14:24:13Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -1394,7 +1394,6 @@ static int fnc_srand (qse_awk_rtx_t* run, const qse_cstr_t* fnm)
|
||||
qse_size_t nargs;
|
||||
qse_awk_val_t* a0;
|
||||
qse_long_t lv;
|
||||
qse_real_t rv;
|
||||
qse_awk_val_t* r;
|
||||
int n;
|
||||
unsigned int prev;
|
||||
@ -1409,22 +1408,19 @@ static int fnc_srand (qse_awk_rtx_t* run, const qse_cstr_t* fnm)
|
||||
if (nargs == 1)
|
||||
{
|
||||
a0 = qse_awk_rtx_getarg (run, 0);
|
||||
|
||||
n = qse_awk_rtx_valtonum (run, a0, &lv, &rv);
|
||||
n = qse_awk_rtx_valtolong (run, a0, &lv);
|
||||
if (n <= -1) return -1;
|
||||
if (n >= 1) lv = (qse_long_t)rv;
|
||||
|
||||
rxtn->seed = lv;
|
||||
}
|
||||
else
|
||||
{
|
||||
qse_ntime_t now;
|
||||
|
||||
if (qse_gettime(&now) <= -1) rxtn->seed >>= 1;
|
||||
else rxtn->seed = (unsigned int)now;
|
||||
}
|
||||
|
||||
srand (rxtn->seed);
|
||||
srand (rxtn->seed);
|
||||
|
||||
r = qse_awk_rtx_makeintval (run, prev);
|
||||
if (r == QSE_NULL) return -1;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: val.c 484 2011-05-25 15:32:10Z hyunghwan.chung $
|
||||
* $Id: val.c 518 2011-07-24 14:24:13Z hyunghwan.chung $
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
@ -1173,6 +1173,35 @@ int qse_awk_rtx_valtonum (
|
||||
return -1; /* error */
|
||||
}
|
||||
|
||||
int qse_awk_rtx_valtolong (
|
||||
qse_awk_rtx_t* rtx, const qse_awk_val_t* v, qse_long_t* l)
|
||||
{
|
||||
int n;
|
||||
qse_real_t r;
|
||||
|
||||
n = qse_awk_rtx_valtonum (rtx, v, l, &r);
|
||||
if (n == 1)
|
||||
{
|
||||
*l = (qse_long_t)r;
|
||||
n = 0;
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
int qse_awk_rtx_valtoreal (
|
||||
qse_awk_rtx_t* rtx, const qse_awk_val_t* v, qse_real_t* r)
|
||||
{
|
||||
int n;
|
||||
qse_long_t l;
|
||||
|
||||
n = qse_awk_rtx_valtonum (rtx, v, &l, r);
|
||||
if (n == 0) *r = (qse_real_t)l;
|
||||
else if (n == 1) n = 0;
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
int qse_awk_rtx_strtonum (
|
||||
qse_awk_rtx_t* rtx, int strict,
|
||||
const qse_char_t* ptr, qse_size_t len,
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: htrd.c 341 2008-08-20 10:58:19Z baconevi $
|
||||
* $Id$
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
|
@ -1,5 +1,21 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
|
||||
QSE is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation, either version 3 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
QSE is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with QSE. If not, see <htrd://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <qse/net/htre.h>
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $Id: http.c 341 2008-08-20 10:58:19Z baconevi $
|
||||
* $Id$
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
|
@ -1,3 +1,23 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
Copyright 2006-2011 Chung, Hyung-Hwan.
|
||||
This file is part of QSE.
|
||||
|
||||
QSE is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as
|
||||
published by the Free Software Foundation, either version 3 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
QSE is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with QSE. If not, see <htrd://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "httpd.h"
|
||||
#include "../cmn/mem.h"
|
||||
#include <qse/cmn/str.h>
|
||||
|
Loading…
Reference in New Issue
Block a user