From 5caaf4e4d9eb8a111587783b8bf148490ef73d1f Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Fri, 30 Jun 2006 16:46:34 +0000 Subject: [PATCH] *** empty log message *** --- ase/awk/awk.dsp | 8 ++--- ase/awk/run.c | 66 +++++++++++++++++++++++++++++--------- ase/awk/val.c | 4 +-- ase/awk/val.h | 3 +- ase/test/awk/t13.awk | 7 ++-- ase/test/awk/xptestawk.dsp | 4 +-- 6 files changed, 65 insertions(+), 27 deletions(-) diff --git a/ase/awk/awk.dsp b/ase/awk/awk.dsp index 11d2eff0..2ddb6ff6 100644 --- a/ase/awk/awk.dsp +++ b/ase/awk/awk.dsp @@ -57,7 +57,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo +# ADD LIB32 /nologo /out:"..\..\release\xpawk.lib" !ELSEIF "$(CFG)" == "xpawk - Win32 Debug" @@ -87,7 +87,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LIB32=link.exe -lib # ADD BASE LIB32 /nologo -# ADD LIB32 /nologo +# ADD LIB32 /nologo /out:"..\..\debug\xpawk.lib" !ELSEIF "$(CFG)" == "xpawk - Win32 Debug DLL" @@ -120,7 +120,7 @@ BSC32=bscmake.exe LINK32=link.exe # ADD BASE LINK32 /nologo /subsystem:console /dll /debug /machine:I386 /def:".\awk.def" /pdbtype:sept # SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 /nologo /subsystem:console /dll /debug /machine:I386 /def:".\awk.def" /pdbtype:sept +# ADD LINK32 /nologo /subsystem:console /dll /debug /machine:I386 /def:".\awk.def" /out:"..\..\debug\xpawk.dll" /pdbtype:sept # SUBTRACT LINK32 /pdb:none !ELSEIF "$(CFG)" == "xpawk - Win32 Release DLL" @@ -154,7 +154,7 @@ BSC32=bscmake.exe LINK32=link.exe # ADD BASE LINK32 /nologo /version:0.1 /subsystem:console /dll /machine:I386 /def:".\awk.def" # SUBTRACT BASE LINK32 /pdb:none -# ADD LINK32 /nologo /version:0.1 /subsystem:console /dll /machine:I386 /def:".\awk.def" +# ADD LINK32 /nologo /version:0.1 /subsystem:console /dll /machine:I386 /def:".\awk.def" /out:"..\..\release\xpawk.dll" # SUBTRACT LINK32 /pdb:none !ENDIF diff --git a/ase/awk/run.c b/ase/awk/run.c index f0a43fe0..0ea08322 100644 --- a/ase/awk/run.c +++ b/ase/awk/run.c @@ -1,5 +1,5 @@ /* - * $Id: run.c,v 1.117 2006-06-30 11:31:50 bacon Exp $ + * $Id: run.c,v 1.118 2006-06-30 16:46:34 bacon Exp $ */ #include @@ -1104,31 +1104,67 @@ static int __run_delete (xp_awk_run_t* run, xp_awk_nde_delete_t* nde) var->type == XP_AWK_NDE_LOCALIDX || var->type == XP_AWK_NDE_ARGIDX); +xp_printf (XP_T("hello....... map...\n")); if (var->type == XP_AWK_NDE_NAMED) { xp_awk_pair_t* pair; pair = xp_awk_map_get (&run->named, var->id.name); - if (pair != XP_NULL) + if (pair == XP_NULL) { - if (pair == XP_NULL) + xp_awk_val_t* tmp; + + /* value not set for the named variable. + * create a map and assign it to the variable */ + + tmp = xp_awk_makemapval (run); + if (tmp == XP_NULL) PANIC_I (run, XP_AWK_ENOMEM); + + if (xp_awk_map_put (&run->named, var->id.name, tmp) == XP_NULL) { - /* value not set */ - // TODO: create a map here... + xp_awk_refupval (tmp); + xp_awk_refdownval (run, tmp); + PANIC_I (run, XP_AWK_ENOMEM); + } + + xp_awk_refupval (tmp); + } + else + { + xp_awk_val_t* val = (xp_awk_val_t*)pair->val; + + xp_assert (val != XP_NULL); + if (val->type == XP_AWK_VAL_MAP) + { +xp_printf (XP_T("clearing map...\n")); + xp_awk_map_clear (((xp_awk_val_map_t*)val)->map); + /* should not ismply clear it... */ } else { - xp_awk_val_t* val = (xp_awk_val_t*)pair->val; + PANIC_I (run, XP_AWK_ENOTDELETABLE); + } + } + } + else if (var->type == XP_AWK_NDE_GLOBAL) + { + xp_awk_val_t* val; - xp_assert (val != XP_NULL); - if (val->type == XP_AWK_VAL_MAP) - { - xp_awk_map_clear (((xp_awk_val_map_t*)val)->map); - } - else - { - PANIC_I (run, XP_AWK_ENOTDELETABLE); - } + val = STACK_GLOBAL (run,var->id.idxa); + if (val == XP_NULL) + { + /* TODO: */ + } + else + { + if (val->type == XP_AWK_VAL_MAP) + { +xp_printf (XP_TEXT("clearning....\n")); + xp_awk_map_clear (((xp_awk_val_map_t*)val)->map); + } + else + { + PANIC_I (run, XP_AWK_ENOTDELETABLE); } } } diff --git a/ase/awk/val.c b/ase/awk/val.c index 4db920c3..28812b62 100644 --- a/ase/awk/val.c +++ b/ase/awk/val.c @@ -1,5 +1,5 @@ /* - * $Id: val.c,v 1.33 2006-06-28 08:56:59 bacon Exp $ + * $Id: val.c,v 1.34 2006-06-30 16:46:34 bacon Exp $ */ #include @@ -385,7 +385,7 @@ xp_char_t* xp_awk_valtostr (xp_awk_val_t* v, int* errnum, xp_str_t* buf) if (buf == XP_NULL) { - tmp = xp_malloc (len + 1 * xp_sizeof(xp_char_t)); + tmp = xp_malloc ((len + 1) * xp_sizeof(xp_char_t)); if (tmp == XP_NULL) { *errnum = XP_AWK_ENOMEM; diff --git a/ase/awk/val.h b/ase/awk/val.h index c4418f14..48807b4e 100644 --- a/ase/awk/val.h +++ b/ase/awk/val.h @@ -1,5 +1,5 @@ /* - * $Id: val.h,v 1.25 2006-06-26 15:09:28 bacon Exp $ + * $Id: val.h,v 1.26 2006-06-30 16:46:34 bacon Exp $ */ #ifndef _XP_AWK_VAL_H_ @@ -105,6 +105,7 @@ xp_awk_val_t* xp_awk_makerexval (const xp_char_t* str, xp_size_t len); xp_awk_val_t* xp_awk_makemapval (xp_awk_run_t* run); xp_bool_t xp_awk_isbuiltinval (xp_awk_val_t* val); + void xp_awk_freeval (xp_awk_run_t* run, xp_awk_val_t* val, xp_bool_t cache); void xp_awk_refupval (xp_awk_val_t* val); void xp_awk_refdownval (xp_awk_run_t* run, xp_awk_val_t* val); diff --git a/ase/test/awk/t13.awk b/ase/test/awk/t13.awk index d8f2a55c..222e6e1e 100644 --- a/ase/test/awk/t13.awk +++ b/ase/test/awk/t13.awk @@ -1,8 +1,9 @@ +//global a; BEGIN { - a = 20; - /*a[1] = 20; - a[2] = 30;*/ + //a = 20; + a[1] = 20; + a[2] = 30; delete a; } diff --git a/ase/test/awk/xptestawk.dsp b/ase/test/awk/xptestawk.dsp index df8fb12c..0946d46f 100644 --- a/ase/test/awk/xptestawk.dsp +++ b/ase/test/awk/xptestawk.dsp @@ -50,7 +50,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 xpawk.lib /nologo /subsystem:console /machine:I386 /out:"Release/awk.exe" /libpath:"..\..\awk\release" +# ADD LINK32 xpawk.lib /nologo /subsystem:console /machine:I386 /out:"..\..\..\release\awk.exe" /libpath:"..\..\awk\release" !ELSEIF "$(CFG)" == "xptestawk - Win32 Debug" @@ -74,7 +74,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 xpawk.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"Debug/awk.exe" /pdbtype:sept /libpath:"..\..\awk\debug" +# ADD LINK32 xpawk.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"..\..\..\debug\awk.exe" /pdbtype:sept /libpath:"..\..\awk\debug" !ENDIF