*** empty log message ***

This commit is contained in:
2007-02-24 14:32:44 +00:00
parent 9d4383cd7b
commit d6307aafe2
29 changed files with 609 additions and 265 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: awk.c,v 1.109 2007-02-23 08:17:48 bacon Exp $
* $Id: awk.c,v 1.110 2007-02-24 14:31:43 bacon Exp $
*
* {License}
*/
@ -48,7 +48,7 @@ ase_awk_t* ase_awk_open (
awk = (ase_awk_t*) malloc (ASE_SIZEOF(ase_awk_t));
#else
awk = (ase_awk_t*) prmfns->mmgr.malloc (
&prmfns->mmgr, ASE_SIZEOF(ase_awk_t));
prmfns->mmgr.custom_data, ASE_SIZEOF(ase_awk_t));
#endif
if (awk == ASE_NULL)
{

View File

@ -1,5 +1,5 @@
/*
* $Id: awk.h,v 1.191 2007-02-23 08:17:49 bacon Exp $
* $Id: awk.h,v 1.192 2007-02-24 14:31:43 bacon Exp $
*
* {License}
*/
@ -22,14 +22,14 @@ typedef struct ase_awk_runios_t ase_awk_runios_t;
typedef struct ase_awk_runcbs_t ase_awk_runcbs_t;
typedef struct ase_awk_runarg_t ase_awk_runarg_t;
typedef ase_real_t (*ase_awk_pow_t) (ase_real_t x, ase_real_t y);
typedef ase_real_t (*ase_awk_pow_t) (void* custom, ase_real_t x, ase_real_t y);
typedef int (*ase_awk_sprintf_t) (
ase_char_t* buf, ase_size_t size, const ase_char_t* fmt, ...);
typedef void (*ase_awk_aprintf_t) (const ase_char_t* fmt, ...);
typedef void (*ase_awk_dprintf_t) (const ase_char_t* fmt, ...);
typedef void (*ase_awk_abort_t) (void* custom_data);
typedef void (*ase_awk_lock_t) (void* custom_data);
void* custom, ase_char_t* buf, ase_size_t size,
const ase_char_t* fmt, ...);
typedef void (*ase_awk_aprintf_t) (void* custom, const ase_char_t* fmt, ...);
typedef void (*ase_awk_dprintf_t) (void* custom, const ase_char_t* fmt, ...);
typedef void (*ase_awk_abort_t) (void* custom);
typedef void (*ase_awk_lock_t) (void* custom);
typedef ase_ssize_t (*ase_awk_io_t) (
int cmd, void* arg, ase_char_t* data, ase_size_t count);
@ -81,7 +81,7 @@ struct ase_awk_prmfns_t
ase_awk_lock_t lock; /* required if multi-threaded */
ase_awk_lock_t unlock; /* required if multi-threaded */
/* user-defined data passed to selected system functions */
/* user-defined data passed to the functions above */
void* custom_data; /* optional */
} misc;
};

View File

@ -1,5 +1,5 @@
/*
* $Id: func.c,v 1.96 2007-02-23 08:17:49 bacon Exp $
* $Id: func.c,v 1.97 2007-02-24 14:31:44 bacon Exp $
*
* {License}
*/
@ -54,6 +54,7 @@ void* ase_awk_addbfn (
if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL)
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' added already"), name_len, name);
ase_awk_seterror (awk, ASE_AWK_EEXIST, 0, awk->errmsg);

View File

@ -1,5 +1,5 @@
/*
* $Id: jni.c,v 1.69 2007-02-23 08:53:35 bacon Exp $
* $Id: jni.c,v 1.70 2007-02-24 14:31:44 bacon Exp $
*
* {License}
*/
@ -96,32 +96,54 @@ struct run_data_t
jmethodID double_value;
};
static void* awk_malloc (ase_mmgr_t* mmgr, ase_size_t n)
static void* awk_malloc (void* custom, ase_size_t n)
{
return malloc (n);
}
static void* awk_realloc (ase_mmgr_t* mmgr, void* ptr, ase_size_t n)
static void* awk_realloc (void* custom, void* ptr, ase_size_t n)
{
return realloc (ptr, n);
}
static void awk_free (ase_mmgr_t* mmgr, void* ptr)
static void awk_free (void* custom, void* ptr)
{
free (ptr);
}
static ase_real_t awk_pow (ase_real_t x, ase_real_t y)
static ase_real_t awk_pow (void* custom, ase_real_t x, ase_real_t y)
{
return pow (x, y);
}
static void awk_abort (void* custom_data)
static void awk_abort (void* custom)
{
abort ();
}
static void awk_dprintf (const ase_char_t* fmt, ...)
static int awk_sprintf (
void* custom, ase_char_t* buf, ase_size_t size,
const ase_char_t* fmt, ...)
{
int n;
va_list ap;
va_start (ap, fmt);
n = ase_vsprintf (buf, size, fmt, ap);
va_end (ap);
return n;
}
static void awk_printf (void* custom, const ase_char_t* fmt, ...)
{
va_list ap;
va_start (ap, fmt);
ase_vfprintf (stdout, fmt, ap);
va_end (ap);
}
static void awk_dprintf (void* custom, const ase_char_t* fmt, ...)
{
va_list ap;
va_start (ap, fmt);
@ -245,8 +267,8 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj)
prmfns.ccls.custom_data = NULL;
prmfns.misc.pow = awk_pow;
prmfns.misc.sprintf = ase_sprintf;
prmfns.misc.aprintf = ase_printf;
prmfns.misc.sprintf = awk_sprintf;
prmfns.misc.aprintf = awk_printf;
prmfns.misc.dprintf = awk_dprintf;
prmfns.misc.abort = awk_abort;
prmfns.misc.custom_data = NULL;

View File

@ -1,5 +1,5 @@
/*
* $Id: misc.c,v 1.51 2007-02-23 08:17:49 bacon Exp $
* $Id: misc.c,v 1.52 2007-02-24 14:31:44 bacon Exp $
*
* {License}
*/
@ -910,12 +910,14 @@ int ase_awk_assertfail (ase_awk_t* awk,
if (desc == ASE_NULL)
{
awk->prmfns.misc.aprintf (
awk->prmfns.misc.custom_data,
ASE_T("ASSERTION FAILURE AT FILE %s LINE %d\n%s\n"),
file, line, expr);
}
else
{
awk->prmfns.misc.aprintf (
awk->prmfns.misc.custom_data,
ASE_T("ASSERTION FAILURE AT FILE %s LINE %d\n%s\n\nDESCRIPTION:\n%s\n"),
file, line, expr, desc);

View File

@ -1,5 +1,5 @@
/*
* $Id: parse.c,v 1.245 2007-02-23 08:17:49 bacon Exp $
* $Id: parse.c,v 1.246 2007-02-24 14:31:44 bacon Exp $
*
* {License}
*/
@ -333,7 +333,8 @@ static struct __bvent __bvtab[] =
} \
else \
{ \
awk->prmfns.misc.sprintf ( \
(awk)->prmfns.misc.sprintf ( \
(awk)->prmfns.misc.custom_data, \
(awk)->errmsg, ASE_COUNTOF((awk)->errmsg), \
msg, \
ASE_STR_LEN(&(awk)->token.name), \
@ -709,6 +710,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
else
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' not a valid function name"),
ASE_STR_LEN(&awk->token.name),
@ -728,6 +730,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL)
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("built-in function '%.*s' redefined"),
name_len, name);
@ -743,6 +746,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
{
/* the function is defined previously */
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("function '%.*s' redefined"),
name_len, name);
@ -763,6 +767,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
if (g != (ase_size_t)-1)
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("global variable '%.*s' redefined"),
name_len, name);
@ -850,6 +855,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
else
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' not a valid parameter name"),
ASE_STR_LEN(&awk->token.name),
@ -876,6 +882,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
ase_awk_tab_clear (&awk->parse.params);
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("conflicting parameter '%.*s' with the function"),
param_len, param);
@ -903,6 +910,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
ase_awk_tab_clear (&awk->parse.params);
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("duplicate parameter '%.*s'"),
param_len, param);
@ -991,6 +999,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk)
else
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' not a valid start of the function body"),
ASE_STR_LEN(&awk->token.name),
@ -1334,6 +1343,7 @@ static ase_awk_t* __add_global (
if (ase_awk_getbfn (awk, name, len) != ASE_NULL)
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("built-in function '%.*s' redefined"),
len, name);
@ -1347,6 +1357,7 @@ static ase_awk_t* __add_global (
&awk->tree.afns, name, len) != ASE_NULL)
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("function '%.*s' redefined"),
len, name);
@ -1361,6 +1372,7 @@ static ase_awk_t* __add_global (
&awk->parse.globals, 0, name, len) != (ase_size_t)-1)
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("duplicate global variable '%.*s'"),
len, name);
@ -1401,6 +1413,7 @@ static ase_awk_t* __collect_globals (ase_awk_t* awk)
else
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' not a valid variable name"),
ASE_STR_LEN(&awk->token.name),
@ -1459,6 +1472,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
else
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("'%.*s' not a valid variable name"),
ASE_STR_LEN(&awk->token.name),
@ -1482,6 +1496,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
if (ase_awk_getbfn (awk, local, local_len) != ASE_NULL)
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("built-in function '%.*s' redefined"),
local_len, local);
@ -1497,6 +1512,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
&awk->tree.afns, local, local_len) != ASE_NULL)
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("function '%.*s' redefined"),
local_len, local);
@ -1513,6 +1529,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
0, local, local_len) != (ase_size_t)-1)
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("parameter '%.*s' redefined"),
local_len, local);
@ -1529,6 +1546,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals)
local, local_len) != (ase_size_t)-1)
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("duplicate local variable '%.*s'"),
local_len, local);
@ -2969,6 +2987,7 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line)
* of the function call */
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("function name '%.*s' without a left parenthesis"),
name_len, name_dup);
@ -3080,6 +3099,7 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line)
}
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("undefined identifier '%.*s'"),
name_len, name_dup);
@ -3223,6 +3243,7 @@ static ase_awk_nde_t* __parse_hashidx (
ASE_AWK_FREE (awk, nde);
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("undefined identifier '%.*s'"), name_len, name);
ase_awk_seterror (awk, ASE_AWK_EUNDEF, line, awk->errmsg);
@ -4610,6 +4631,7 @@ static int __get_token (ase_awk_t* awk)
else
{
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
awk->errmsg, ASE_COUNTOF(awk->errmsg),
ASE_T("invalid character '%c'"), c);
ase_awk_seterror (

View File

@ -1,5 +1,5 @@
/*
* $Id: run.c,v 1.329 2007-02-23 08:17:50 bacon Exp $
* $Id: run.c,v 1.330 2007-02-24 14:31:44 bacon Exp $
*
* {License}
*/
@ -247,6 +247,7 @@ static int __set_global (
if (var != ASE_NULL)
{
run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("map '%.*s' not assignable with a scalar"),
var->id.name_len, var->id.name);
@ -701,7 +702,6 @@ int ase_awk_run (ase_awk_t* awk,
}
}
/* the run loop ended. execute the end callback if it exists */
if (runcbs != ASE_NULL && runcbs->on_end != ASE_NULL)
{
@ -1776,7 +1776,7 @@ static int __run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde)
while (p != ASE_NULL && run->exit_level == EXIT_NONE)
{
/*run->awk->prmfns.dprintf (ASE_T("running a statement\n"));*/
if (__run_statement(run,p) == -1)
if (__run_statement (run, p) == -1)
{
n = -1;
break;
@ -1909,9 +1909,10 @@ static int __run_statement (ase_awk_run_t* run, ase_awk_nde_t* nde)
default:
{
ase_awk_val_t* v;
v = __eval_expression(run,nde);
v = __eval_expression (run, nde);
if (v == ASE_NULL) return -1;
/* destroy the value if not referenced */
ase_awk_refupval (run, v);
ase_awk_refdownval (run, v);
@ -2412,6 +2413,7 @@ static int __run_delete (ase_awk_run_t* run, ase_awk_nde_delete_t* nde)
if (val->type != ASE_AWK_VAL_MAP)
{
run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("'%.*s' not deletable"),
var->id.name_len, var->id.name);
@ -2523,6 +2525,7 @@ static int __run_delete (ase_awk_run_t* run, ase_awk_nde_delete_t* nde)
if (val->type != ASE_AWK_VAL_MAP)
{
run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("'%.*s' not deletable"),
var->id.name_len, var->id.name);
@ -3104,6 +3107,7 @@ static ase_awk_val_t* __do_assignment_scalar (
/* once a variable becomes a map,
* it cannot be changed to a scalar variable */
run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("map '%.*s' not assignable with a scalar"),
var->id.name_len, var->id.name);
@ -3138,6 +3142,7 @@ static ase_awk_val_t* __do_assignment_scalar (
/* once the variable becomes a map,
* it cannot be changed to a scalar variable */
run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("map '%.*s' not assignable with a scalar"),
var->id.name_len, var->id.name);
@ -3158,6 +3163,7 @@ static ase_awk_val_t* __do_assignment_scalar (
/* once the variable becomes a map,
* it cannot be changed to a scalar variable */
run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->errmsg, ASE_COUNTOF(run->errmsg),
ASE_T("map '%.*s' not assignable with a scalar"),
var->id.name_len, var->id.name);
@ -4427,14 +4433,18 @@ static ase_awk_val_t* __eval_binop_exp (
{
/* left - int, right - real */
res = ase_awk_makerealval (run,
run->awk->prmfns.misc.pow((ase_real_t)l1,(ase_real_t)r2));
run->awk->prmfns.misc.pow (
run->awk->prmfns.misc.custom_data,
(ase_real_t)l1,(ase_real_t)r2));
}
else
{
/* left - real, right - real */
ASE_AWK_ASSERT (run->awk, n3 == 3);
res = ase_awk_makerealval (run,
run->awk->prmfns.misc.pow((ase_real_t)r1,(ase_real_t)r2));
run->awk->prmfns.misc.pow(
run->awk->prmfns.misc.custom_data,
(ase_real_t)r1,(ase_real_t)r2));
}
if (res == ASE_NULL)
@ -5250,6 +5260,7 @@ static ase_awk_val_t* __eval_afn (ase_awk_run_t* run, ase_awk_nde_t* nde)
call->what.afn.name.len > ASE_COUNTOF(run->errmsg)-len2)
{
run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->errmsg,
ASE_COUNTOF(run->errmsg),
fmt2,
@ -5259,6 +5270,7 @@ static ase_awk_val_t* __eval_afn (ase_awk_run_t* run, ase_awk_nde_t* nde)
else
{
run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->errmsg,
ASE_COUNTOF(run->errmsg),
fmt,
@ -6483,6 +6495,7 @@ ase_char_t* ase_awk_format (
do
{
n = run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->format.tmp.ptr,
run->format.tmp.len,
#if ASE_SIZEOF_LONG_LONG > 0
@ -6588,6 +6601,7 @@ ase_char_t* ase_awk_format (
do
{
n = run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->format.tmp.ptr,
run->format.tmp.len,
#if ASE_SIZEOF_LONG_LONG > 0
@ -6708,6 +6722,7 @@ ase_char_t* ase_awk_format (
do
{
n = run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->format.tmp.ptr,
run->format.tmp.len,
ASE_STR_BUF(fbu),
@ -6795,6 +6810,7 @@ ase_char_t* ase_awk_format (
do
{
n = run->awk->prmfns.misc.sprintf (
run->awk->prmfns.misc.custom_data,
run->format.tmp.ptr,
run->format.tmp.len,
ASE_STR_BUF(fbu),

View File

@ -1,5 +1,5 @@
/*
* $Id: tree.c,v 1.103 2007-02-23 08:17:51 bacon Exp $
* $Id: tree.c,v 1.104 2007-02-24 14:31:44 bacon Exp $
*
* {License}
*/
@ -261,10 +261,12 @@ static int __print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
ase_char_t tmp[256];
#if (ASE_SIZEOF_LONG_DOUBLE != 0)
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
tmp, ASE_COUNTOF(tmp), ASE_T("%Lf"),
(long double)((ase_awk_nde_real_t*)nde)->val);
#elif (ASE_SIZEOF_DOUBLE != 0)
awk->prmfns.misc.sprintf (
awk->prmfns.misc.custom_data,
tmp, ASE_COUNTOF(tmp), ASE_T("%f"),
(double)((ase_awk_nde_real_t*)nde)->val);
#else

View File

@ -1,5 +1,5 @@
/*
* $Id: val.c,v 1.110 2007-02-23 08:17:51 bacon Exp $
* $Id: val.c,v 1.111 2007-02-24 14:31:44 bacon Exp $
*
* {License}
*/
@ -341,9 +341,13 @@ void ase_awk_refupval (ase_awk_run_t* run, ase_awk_val_t* val)
if (ase_awk_isbuiltinval(val)) return;
/*
run->awk->prmfns.misc.dprintf (ASE_T("ref up [ptr=%p] [count=%d] "), val, (int)val->ref);
run->awk->prmfns.misc.dprintf (
run->awk->prmfns.misc.custom_data,
ASE_T("ref up [ptr=%p] [count=%d] "), val, (int)val->ref);
ase_awk_dprintval (run, val);
run->awk->prmfns.misc.dprintf (ASE_T("\n"));
run->awk->prmfns.misc.dprintf (
run->awk->prmfns.misc.custom_data,
ASE_T("\n"));
*/
val->ref++;
@ -354,9 +358,13 @@ void ase_awk_refdownval (ase_awk_run_t* run, ase_awk_val_t* val)
if (ase_awk_isbuiltinval(val)) return;
/*
run->awk->prmfns.misc.dprintf (ASE_T("ref down [ptr=%p] [count=%d]\n"), val, (int)val->ref);
run->awk->prmfns.misc.dprintf (
run->awk->prmfns.misc.custom_data,
ASE_T("ref down [ptr=%p] [count=%d]\n"), val, (int)val->ref);
ase_awk_dprintval (run, val);
run->awk->prmfns.misc.dprintf (ASE_T("\n"));
run->awk->prmfns.misc.dprintf (
run->awk->prmfns.misc.custom_data,
ASE_T("\n"));
*/
ASE_AWK_ASSERTX (run->awk, val->ref > 0,
@ -465,6 +473,7 @@ ase_char_t* ase_awk_valtostr (
#ifdef _DEBUG
run->awk->prmfns.misc.dprintf (
run->awk->prmfns.misc.custom_data,
ASE_T("ERROR: WRONG VALUE TYPE [%d] in ase_awk_valtostr\n"),
v->type);
#endif
@ -722,6 +731,7 @@ int ase_awk_valtonum (
#ifdef _DEBUG
run->awk->prmfns.misc.dprintf (
run->awk->prmfns.misc.custom_data,
ASE_T("ERROR: WRONG VALUE TYPE [%d] in ase_awk_valtonum\n"),
v->type);
#endif
@ -751,14 +761,15 @@ int ase_awk_strtonum (
}
#define __DPRINTF run->awk->prmfns.misc.dprintf
#define __DCUSTOM run->awk->prmfns.misc.custom_data
static int __print_pair (ase_awk_pair_t* pair, void* arg)
{
ase_awk_run_t* run = (ase_awk_run_t*)arg;
__DPRINTF (ASE_T(" %s=>"), pair->key);
__DPRINTF (__DCUSTOM, ASE_T(" %s=>"), pair->key);
ase_awk_dprintval ((ase_awk_run_t*)arg, pair->val);
__DPRINTF (ASE_T(" "));
__DPRINTF (__DCUSTOM, ASE_T(" "));
return 0;
}
@ -769,21 +780,21 @@ void ase_awk_dprintval (ase_awk_run_t* run, ase_awk_val_t* val)
switch (val->type)
{
case ASE_AWK_VAL_NIL:
__DPRINTF (ASE_T("nil"));
__DPRINTF (__DCUSTOM, ASE_T("nil"));
break;
case ASE_AWK_VAL_INT:
#if ASE_SIZEOF_LONG_LONG > 0
__DPRINTF (ASE_T("%lld"),
__DPRINTF (__DCUSTOM, ASE_T("%lld"),
(long long)((ase_awk_val_int_t*)val)->val);
#elif ASE_SIZEOF___INT64 > 0
__DPRINTF (ASE_T("%I64d"),
__DPRINTF (__DCUSTOM, ASE_T("%I64d"),
(__int64)((ase_awk_val_int_t*)val)->val);
#elif ASE_SIZEOF_LONG > 0
__DPRINTF (ASE_T("%ld"),
__DPRINTF (__DCUSTOM, ASE_T("%ld"),
(long)((ase_awk_val_int_t*)val)->val);
#elif ASE_SIZEOF_INT > 0
__DPRINTF (ASE_T("%d"),
__DPRINTF (__DCUSTOM, ASE_T("%d"),
(int)((ase_awk_val_int_t*)val)->val);
#else
#error unsupported size
@ -791,31 +802,31 @@ void ase_awk_dprintval (ase_awk_run_t* run, ase_awk_val_t* val)
break;
case ASE_AWK_VAL_REAL:
__DPRINTF (ASE_T("%Lf"),
__DPRINTF (__DCUSTOM, ASE_T("%Lf"),
(long double)((ase_awk_val_real_t*)val)->val);
break;
case ASE_AWK_VAL_STR:
__DPRINTF (ASE_T("%s"), ((ase_awk_val_str_t*)val)->buf);
__DPRINTF (__DCUSTOM, ASE_T("%s"), ((ase_awk_val_str_t*)val)->buf);
break;
case ASE_AWK_VAL_REX:
__DPRINTF (ASE_T("REX[%s]"), ((ase_awk_val_rex_t*)val)->buf);
__DPRINTF (__DCUSTOM, ASE_T("REX[%s]"), ((ase_awk_val_rex_t*)val)->buf);
break;
case ASE_AWK_VAL_MAP:
__DPRINTF (ASE_T("MAP["));
__DPRINTF (__DCUSTOM, ASE_T("MAP["));
ase_awk_map_walk (((ase_awk_val_map_t*)val)->map, __print_pair, run);
__DPRINTF (ASE_T("]"));
__DPRINTF (__DCUSTOM, ASE_T("]"));
break;
case ASE_AWK_VAL_REF:
__DPRINTF (ASE_T("REF[id=%d,val="), ((ase_awk_val_ref_t*)val)->id);
__DPRINTF (__DCUSTOM, ASE_T("REF[id=%d,val="), ((ase_awk_val_ref_t*)val)->id);
ase_awk_dprintval (run, *((ase_awk_val_ref_t*)val)->adr);
__DPRINTF (ASE_T("]"));
__DPRINTF (__DCUSTOM, ASE_T("]"));
break;
default:
__DPRINTF (ASE_T("**** INTERNAL ERROR - INVALID VALUE TYPE ****\n"));
__DPRINTF (__DCUSTOM, ASE_T("**** INTERNAL ERROR - INVALID VALUE TYPE ****\n"));
}
}