This commit is contained in:
hyung-hwan 2008-08-19 05:21:48 +00:00
parent 63014b5fc8
commit 3cbefaa12c
37 changed files with 465 additions and 544 deletions

View File

@ -1,5 +1,5 @@
/* /*
* $Id: awk.c 329 2008-08-16 14:08:53Z baconevi $ * $Id: awk.c 332 2008-08-18 11:21:48Z baconevi $
*/ */
#include <ase/awk/awk.h> #include <ase/awk/awk.h>
@ -25,16 +25,15 @@
#pragma warning (disable: 4296) #pragma warning (disable: 4296)
#endif #endif
#if defined(__linux) && defined(_DEBUG)
#include <mcheck.h>
#endif
#if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG) #if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG)
#define _CRTDBG_MAP_ALLOC #define _CRTDBG_MAP_ALLOC
#include <crtdbg.h> #include <crtdbg.h>
#endif #endif
struct srcio_t #define SRCIO_FILE 1
#define SRCIO_STR 2
typedef struct srcio_data_t
{ {
int type; /* file or string */ int type; /* file or string */
@ -45,20 +44,14 @@ struct srcio_t
ase_char_t* ptr; ase_char_t* ptr;
ase_char_t* cur; ase_char_t* cur;
} str; } str;
struct { struct
int count; {
const ase_char_t* name[128]; ase_sll_t* sll;
ase_sll_node_t* cur;
FILE* handle; FILE* handle;
} file; } file;
} data; } data;
}; } srcio_data_t;
#if defined(_WIN32)
struct mmgr_data_t
{
HANDLE heap;
};
#endif
static void local_dprintf (const ase_char_t* fmt, ...) static void local_dprintf (const ase_char_t* fmt, ...)
{ {
@ -80,7 +73,7 @@ static void custom_awk_dprintf (void* custom, const ase_char_t* fmt, ...)
static void* custom_awk_malloc (void* custom, ase_size_t n) static void* custom_awk_malloc (void* custom, ase_size_t n)
{ {
#ifdef _WIN32 #ifdef _WIN32
return HeapAlloc (((struct mmgr_data_t*)custom)->heap, 0, n); return HeapAlloc ((HANDLE)custom, 0, n);
#else #else
return malloc (n); return malloc (n);
#endif #endif
@ -90,10 +83,9 @@ static void* custom_awk_realloc (void* custom, void* ptr, ase_size_t n)
{ {
#ifdef _WIN32 #ifdef _WIN32
/* HeapReAlloc behaves differently from realloc */ /* HeapReAlloc behaves differently from realloc */
if (ptr == NULL) return (ptr == NULL)?
return HeapAlloc (((struct mmgr_data_t*)custom)->heap, 0, n); HeapAlloc ((HANDLE)custom, 0, n):
else HeapReAlloc ((HANDLE)custom, 0, ptr, n);
return HeapReAlloc (((struct mmgr_data_t*)custom)->heap, 0, ptr, n);
#else #else
return realloc (ptr, n); return realloc (ptr, n);
#endif #endif
@ -102,7 +94,7 @@ static void* custom_awk_realloc (void* custom, void* ptr, ase_size_t n)
static void custom_awk_free (void* custom, void* ptr) static void custom_awk_free (void* custom, void* ptr)
{ {
#ifdef _WIN32 #ifdef _WIN32
HeapFree (((struct mmgr_data_t*)custom)->heap, 0, ptr); HeapFree ((HANDLE)custom, 0, ptr);
#else #else
free (ptr); free (ptr);
#endif #endif
@ -132,7 +124,7 @@ static int custom_awk_sprintf (
static ase_ssize_t awk_srcio_in ( static ase_ssize_t awk_srcio_in (
int cmd, void* arg, ase_char_t* data, ase_size_t size) int cmd, void* arg, ase_char_t* data, ase_size_t size)
{ {
struct srcio_t* srcio = (struct srcio_t*)arg; struct srcio_data_t* srcio = (struct srcio_data_t*)arg;
ase_cint_t c; ase_cint_t c;
#if 0 #if 0
@ -180,7 +172,7 @@ static ase_ssize_t awk_srcio_in (
static ase_ssize_t awk_srcio_out ( static ase_ssize_t awk_srcio_out (
int cmd, void* arg, ase_char_t* data, ase_size_t size) int cmd, void* arg, ase_char_t* data, ase_size_t size)
{ {
/*struct srcio_t* srcio = (struct srcio_t*)arg;*/ /*struct srcio_data_t* srcio = (struct srcio_data_t*)arg;*/
if (cmd == ASE_AWK_IO_OPEN) return 1; if (cmd == ASE_AWK_IO_OPEN) return 1;
else if (cmd == ASE_AWK_IO_CLOSE) else if (cmd == ASE_AWK_IO_CLOSE)
@ -797,7 +789,7 @@ static void on_run_return (
local_dprintf (ASE_T("[END NAMED VARIABLES]\n")); local_dprintf (ASE_T("[END NAMED VARIABLES]\n"));
} }
static void on_run_end (ase_awk_run_t* run, int errnum, void* custom_data) static void on_run_end (ase_awk_run_t* run, int errnum, void* data)
{ {
if (errnum != ASE_AWK_ENOERR) if (errnum != ASE_AWK_ENOERR)
{ {
@ -857,13 +849,13 @@ static int run_awk (ase_awk_t* awk,
runios.pipe = awk_extio_pipe; runios.pipe = awk_extio_pipe;
runios.file = awk_extio_file; runios.file = awk_extio_file;
runios.console = awk_extio_console; runios.console = awk_extio_console;
runios.custom_data = ASE_NULL; runios.data = ASE_NULL;
runcbs.on_start = on_run_start; runcbs.on_start = on_run_start;
runcbs.on_statement = on_run_statement; runcbs.on_statement = on_run_statement;
runcbs.on_return = on_run_return; runcbs.on_return = on_run_return;
runcbs.on_end = on_run_end; runcbs.on_end = on_run_end;
runcbs.custom_data = ASE_NULL; runcbs.data = ASE_NULL;
if (ase_awk_run (awk, mfn, &runios, &runcbs, runarg, ASE_NULL) == -1) if (ase_awk_run (awk, mfn, &runios, &runcbs, runarg, ASE_NULL) == -1)
{ {
@ -879,27 +871,6 @@ static int run_awk (ase_awk_t* awk,
return 0; return 0;
} }
#if defined(_WIN32) && defined(TEST_THREAD)
typedef struct thr_arg_t thr_arg_t;
struct thr_arg_t
{
ase_awk_t* awk;
const ase_char_t* mfn;
ase_awk_runarg_t* runarg;
};
static unsigned int __stdcall run_awk_thr (void* arg)
{
int n;
thr_arg_t* x = (thr_arg_t*)arg;
n = run_awk (x->awk, x->mfn, x->runarg);
_endthreadex (n);
return 0;
}
#endif
static int bfn_sleep ( static int bfn_sleep (
ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl) ase_awk_run_t* run, const ase_char_t* fnm, ase_size_t fnl)
{ {
@ -1057,14 +1028,9 @@ static void handle_args (argc, argv)
} }
#endif #endif
static int dump_sf (ase_sll_t* sll, ase_sll_node_t* n, void* arg) static int handle_args (int argc, ase_char_t* argv[], srcio_data_t* siod);
{
ase_printf (ASE_T("%s\n"), n->dptr);
return ASE_SLL_WALK_FORWARD;
}
static int handle_args (int argc, ase_char_t* argv[], ase_sll_t* sf)
{ {
ase_sll_t* sf;
ase_cint_t c; ase_cint_t c;
static ase_opt_lng_t lng[] = static ase_opt_lng_t lng[] =
{ {
@ -1090,7 +1056,6 @@ static int handle_args (int argc, ase_char_t* argv[], ase_sll_t* sf)
{ ASE_T(":assign"), ASE_T('v') }, { ASE_T(":assign"), ASE_T('v') },
{ ASE_T("help"), ASE_T('h') } { ASE_T("help"), ASE_T('h') }
}; };
static ase_opt_t opt = static ase_opt_t opt =
@ -1117,24 +1082,21 @@ static int handle_args (int argc, ase_char_t* argv[], ase_sll_t* sf)
ase_size_t sz = ase_strlen(opt.arg) + 1; ase_size_t sz = ase_strlen(opt.arg) + 1;
sz *= ASE_SIZEOF(*opt.arg); sz *= ASE_SIZEOF(*opt.arg);
if (ase_sll_getsize(sf) % 2) if (sf == NULL)
{ {
wprintf (L"APPEND %S\n", opt.arg); sf = ase_sll_open (ASE_NULL, 0, ASE_NULL);
if (sf == ASE_NULL)
{
out_of_memory ();
return -1;
}
}
if (ase_sll_pushtail(sf, opt.arg, sz) == ASE_NULL) if (ase_sll_pushtail(sf, opt.arg, sz) == ASE_NULL)
{ {
out_of_memory (); out_of_memory ();
return -1; return -1;
} }
}
else
{
wprintf (L"PREPEND %S\n", opt.arg);
if (ase_sll_pushhead(sf, opt.arg, sz) == ASE_NULL)
{
out_of_memory ();
return -1;
}
}
break; break;
} }
@ -1171,33 +1133,28 @@ wprintf (L"PREPEND %S\n", opt.arg);
} }
} }
ase_printf (ASE_T("[%d]\n"), (int)ase_sll_getsize(sf));
ase_sll_walk (sf, dump_sf, ASE_NULL);
#if 0 if (ase_sll_getsize(sf) == 0)
if (srcio->input_file == ASE_NULL)
{ {
/* the first is the source code... */ if (opt.ind >= argc)
{
/* no source code specified */
return -1;
}
siod->type = SRCIO_STR;
siod->data.str.ptr = opt.arg[opt.ind++];
siod->data.str.cur = NULL;
} }
else else
{ {
/* the remainings are data file names */ /* read source code from the file */
siod->type = SRCIO_FILE;
siod->data.file.sll = sf;
siod->data.file.cur = NULL;
} }
#endif
/* remaining args are input(console) file names */
while (opt.ind < argc)
{
ase_printf (ASE_T("RA => [%s]\n"), argv[opt.ind++]);
}
/*
if (opt.ind < argc)
{
ase_printf (ASE_T("Error: redundant argument - %s\n"), argv[opt.ind]);
print_usage (argv[0]);
return -1;
}
*/
return 0; return 0;
} }
@ -1209,120 +1166,114 @@ typedef struct extension_t
} }
extension_t; extension_t;
static void* fuser (void* org, void* space) static void init_extension (ase_awk_t* awk)
{ {
extension_t* ext = (extension_t*)space; extension_t* ext = ase_awk_getextension(awk);
/* remember the memory manager into the extension */
ext->mmgr = *(ase_mmgr_t*)org; ext->mmgr = *ase_awk_getmmgr(awk);
return &ext->mmgr; ase_awk_setmmgr (awk, &ext->mmgr);
ase_awk_setccls (awk, ASE_GETCCLS());
ext->prmfns.pow = custom_awk_pow;
ext->prmfns.sprintf = custom_awk_sprintf;
ext->prmfns.dprintf = custom_awk_dprintf;
ext->prmfns.data = ASE_NULL;
ase_awk_setprmfns (awk, &ext->prmfns);
} }
static ase_awk_t* open_awk (void) static ase_awk_t* open_awk (void)
{ {
ase_awk_t* awk; ase_awk_t* awk;
ase_mmgr_t mmgr; ase_mmgr_t mmgr;
extension_t* extension;
memset (&mmgr, 0, ASE_SIZEOF(mmgr)); memset (&mmgr, 0, ASE_SIZEOF(mmgr));
mmgr.malloc = custom_awk_malloc; mmgr.malloc = custom_awk_malloc;
mmgr.realloc = custom_awk_realloc; mmgr.realloc = custom_awk_realloc;
mmgr.free = custom_awk_free; mmgr.free = custom_awk_free;
#ifdef _WIN32 #ifdef _WIN32
mmgr_data.heap = HeapCreate (0, 1000000, 1000000); mmgr.data = (void*)HeapCreate (0, 1000000, 1000000); /* TODO: get size from xxxx */
if (mmgr_data.heap == NULL) if (mmgr.data == NULL)
{ {
ase_printf (ASE_T("Error: cannot create an awk heap\n")); ase_printf (ASE_T("Error: cannot create an awk heap\n"));
return -1; return ASE_NULL;
} }
mmgr.custom_data = &mmgr_data;
#else #else
mmgr.custom_data = ASE_NULL; mmgr.data = ASE_NULL;
#endif #endif
awk = ase_awk_open (&mmgr, ASE_SIZEOF(extension_t), fuser); awk = ase_awk_open (&mmgr, ASE_SIZEOF(extension_t), init_extension);
if (awk == ASE_NULL) if (awk == ASE_NULL)
{ {
#ifdef _WIN32 #ifdef _WIN32
HeapDestroy (mmgr_data.heap); HeapDestroy ((HANDLE)mmgr.data);
#endif #endif
ase_printf (ASE_T("ERROR: cannot open awk\n")); ase_printf (ASE_T("ERROR: cannot open awk\n"));
return ASE_NULL; return ASE_NULL;
} }
ase_awk_setccls (awk, ASE_GETCCLS()); ase_awk_setoption (awk,
ASE_AWK_IMPLICIT | ASE_AWK_EXTIO | ASE_AWK_NEWLINE |
ASE_AWK_BASEONE | ASE_AWK_PABLOCK);
extension = (extension_t*) ase_awk_getextension (awk); /* TODO: get depth from command line */
extension->prmfns.pow = custom_awk_pow; ase_awk_setmaxdepth (
extension->prmfns.sprintf = custom_awk_sprintf; awk, ASE_AWK_DEPTH_BLOCK_PARSE | ASE_AWK_DEPTH_EXPR_PARSE, 50);
extension->prmfns.dprintf = custom_awk_dprintf; ase_awk_setmaxdepth (
extension->prmfns.custom_data = ASE_NULL; awk, ASE_AWK_DEPTH_BLOCK_RUN | ASE_AWK_DEPTH_EXPR_RUN, 500);
ase_awk_setprmfns (awk, &extension->prmfns);
ase_awk_setoption (awk, ASE_AWK_IMPLICIT | ASE_AWK_EXTIO | ASE_AWK_NEWLINE | ASE_AWK_BASEONE | ASE_AWK_PABLOCK); /*
ase_awk_seterrstr (awk, ASE_AWK_EGBLRED,
ASE_T("\uC804\uC5ED\uBCC0\uC218 \'%.*s\'\uAC00 \uC7AC\uC815\uC758 \uB418\uC5C8\uC2B5\uB2C8\uB2E4"));
ase_awk_seterrstr (awk, ASE_AWK_EAFNRED,
ASE_T("\uD568\uC218 \'%.*s\'\uAC00 \uC7AC\uC815\uC758 \uB418\uC5C8\uC2B5\uB2C8\uB2E4"));
*/
/*ase_awk_setkeyword (awk, ASE_T("func"), 4, ASE_T("FX"), 2);*/
if (ase_awk_addfunc (awk,
ASE_T("sleep"), 5, 0,
1, 1, ASE_NULL, bfn_sleep) == ASE_NULL)
{
ase_awk_close (awk);
#ifdef _WIN32
HeapDestroy ((HANDLE)mmgr.data);
#endif
ase_printf (ASE_T("ERROR: cannot add function 'sleep'\n"));
return ASE_NULL;
}
return awk; return awk;
} }
static int dump (ase_sll_t* sll, ase_sll_node_t* node, void* arg) static void close_awk (ase_awk_t* awk)
{ {
ase_printf (ASE_T("[%d]\n"), *(int*)node->dptr); extension_t* ext = ase_awk_getextension(awk);
return ASE_SLL_WALK_FORWARD;
#ifdef _WIN32
HANDLE heap = (HANDLE)ext->mmgr->data;
#endif
ase_awk_close (awk);
#ifdef _WIN32
HeapDestroy (heap);
#endif
} }
static int awk_main (int argc, ase_char_t* argv[]) static int awk_main (int argc, ase_char_t* argv[])
{ {
ase_awk_t* awk; ase_awk_t* awk;
ase_mmgr_t mmgr; srcio_data_t siod;
extension_t* extension;
ase_awk_srcios_t srcios; ase_awk_srcios_t srcios;
struct srcio_t srcio = { NULL, NULL };
int i, file_count = 0; int i, file_count = 0;
#ifdef _WIN32
struct mmgr_data_t mmgr_data;
#endif
const ase_char_t* mfn = ASE_NULL; const ase_char_t* mfn = ASE_NULL;
int mode = 0; int mode = 0;
int runarg_count = 0; int runarg_count = 0;
ase_awk_runarg_t runarg[128]; ase_awk_runarg_t runarg[128];
int deparse = 0; int deparse = 0;
ase_sll_t* sf; i = handle_args (argc, argv, &siod);
sf = ase_sll_open (ASE_MMGR_GET());
if (sf == ASE_NULL)
{
out_of_memory ();
return -1;
}
{
// TODO: destroy sf....
int i;
ase_sll_setcopier (sf, ASE_SLL_COPIER_INLINE);
for (i = 0; i < 20; i++)
{
/*
if (ASE_SLL_SIZE(sf) > 5)
ase_sll_insert (sf, sf->head->next->next, &i, sizeof(i));
else
ase_sll_insert (sf, ASE_SLL_HEAD(sf), &i, sizeof(i));
*/
ase_sll_insert (sf, ASE_NULL, &i, sizeof(i));
}
ase_sll_delete (sf, ASE_SLL_TAIL(sf));
ase_sll_delete (sf, ASE_SLL_TAIL(sf));
ase_sll_delete (sf, ASE_SLL_HEAD(sf));
ase_printf (ASE_T("size = %d\n"), ASE_SLL_SIZE(sf));
ase_sll_walk (sf, dump, ASE_NULL);
ase_sll_clear (sf);
ase_printf (ASE_T("size = %d\n"), ASE_SLL_SIZE(sf));
ase_sll_close (sf);
return 0;
}
i = handle_args (argc, argv, sf);
if (i == -1) if (i == -1)
{ {
print_usage (argv[0]); print_usage (argv[0]);
@ -1334,47 +1285,14 @@ return 0;
runarg[runarg_count].ptr = NULL; runarg[runarg_count].ptr = NULL;
runarg[runarg_count].len = 0; runarg[runarg_count].len = 0;
#if 0
if (mode != 0 || srcio.input_file == NULL)
{
print_usage (argv[0]);
return -1;
}
#endif
awk = open_awk (); awk = open_awk ();
if (awk == ASE_NULL) return -1; if (awk == ASE_NULL) return -1;
app_awk = awk; app_awk = awk;
if (ase_awk_addfunc (awk,
ASE_T("sleep"), 5, 0,
1, 1, ASE_NULL, bfn_sleep) == ASE_NULL)
{
ase_awk_close (awk);
#ifdef _WIN32
HeapDestroy (mmgr_data.heap);
#endif
return -1;
}
/*
ase_awk_seterrstr (awk, ASE_AWK_EGBLRED, ASE_T("\uC804\uC5ED\uBCC0\uC218 \'%.*s\'\uAC00 \uC7AC\uC815\uC758 \uB418\uC5C8\uC2B5\uB2C8\uB2E4"));
ase_awk_seterrstr (awk, ASE_AWK_EAFNRED, ASE_T("\uD568\uC218 \'%.*s\'\uAC00 \uC7AC\uC815\uC758 \uB418\uC5C8\uC2B5\uB2C8\uB2E4"));
*/
srcios.in = awk_srcio_in; srcios.in = awk_srcio_in;
srcios.out = deparse? awk_srcio_out: NULL; srcios.out = deparse? awk_srcio_out: NULL;
srcios.custom_data = &srcio; srcios.data = &siod;
ase_awk_setmaxdepth (
awk, ASE_AWK_DEPTH_BLOCK_PARSE | ASE_AWK_DEPTH_EXPR_PARSE, 50);
ase_awk_setmaxdepth (
awk, ASE_AWK_DEPTH_BLOCK_RUN | ASE_AWK_DEPTH_EXPR_RUN, 500);
/*ase_awk_setkeyword (awk, ASE_T("func"), 4, ASE_T("FX"), 2);*/
if (ase_awk_parse (awk, &srcios) == -1) if (ase_awk_parse (awk, &srcios) == -1)
{ {
@ -1383,59 +1301,26 @@ return 0;
ase_awk_geterrnum(awk), ase_awk_geterrnum(awk),
(unsigned int)ase_awk_geterrlin(awk), (unsigned int)ase_awk_geterrlin(awk),
ase_awk_geterrmsg(awk)); ase_awk_geterrmsg(awk));
ase_awk_close (awk); close_awk (awk);
#ifdef _WIN32
HeapDestroy (mmgr_data.heap);
#endif
return -1; return -1;
} }
// TODO: close siod....
#ifdef _WIN32 #ifdef _WIN32
SetConsoleCtrlHandler (stop_run, TRUE); SetConsoleCtrlHandler (stop_run, TRUE);
#else #else
signal (SIGINT, stop_run); signal (SIGINT, stop_run);
#endif #endif
#if defined(_WIN32) && defined(TEST_THREAD)
{
unsigned int tid;
HANDLE thr[5];
thr_arg_t arg;
int y;
arg.awk = awk;
arg.mfn = mfn;
arg.runarg = runarg;
for (y = 0; y < ASE_COUNTOF(thr); y++)
{
thr[y] = (HANDLE)_beginthreadex (NULL, 0, run_awk_thr, &arg, 0, &tid);
if (thr[y] == (HANDLE)0)
{
ase_printf (ASE_T("ERROR: cannot create a thread %d\n"), y);
}
}
for (y = 0; y < ASE_COUNTOF(thr); y++)
{
if (thr[y]) WaitForSingleObject (thr[y], INFINITE);
}
}
#else
if (run_awk (awk, mfn, runarg) == -1) if (run_awk (awk, mfn, runarg) == -1)
{ {
ase_awk_close (awk); close_awk (awk);
#ifdef _WIN32
HeapDestroy (mmgr_data.heap);
#endif
return -1; return -1;
} }
#endif
ase_awk_close (awk); close_awk (awk);
#ifdef _WIN32
HeapDestroy (mmgr_data.heap);
#endif
return 0; return 0;
} }
@ -1443,18 +1328,12 @@ int ase_main (int argc, ase_achar_t* argv[])
{ {
int n; int n;
#if defined(__linux) && defined(_DEBUG)
mtrace ();
#endif
#if defined(_WIN32) && defined(_DEBUG) && defined(_MSC_VER) #if defined(_WIN32) && defined(_DEBUG) && defined(_MSC_VER)
_CrtSetDbgFlag (_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF); _CrtSetDbgFlag (_CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF);
#endif #endif
n = ase_runmain (argc, argv, awk_main); n = ase_runmain (argc, argv, awk_main);
#if defined(__linux) && defined(_DEBUG)
muntrace ();
#endif
#if defined(_WIN32) && defined(_DEBUG) #if defined(_WIN32) && defined(_DEBUG)
/*#if defined(_MSC_VER) /*#if defined(_MSC_VER)
_CrtDumpMemoryLeaks (); _CrtDumpMemoryLeaks ();

View File

@ -306,9 +306,9 @@ int lsp_main (int argc, ase_char_t* argv[])
return -1; return -1;
} }
prmfns.mmgr.custom_data = &prmfns_data; prmfns.mmgr.data = &prmfns_data;
#else #else
prmfns.mmgr.custom_data = ASE_NULL; prmfns.mmgr.data = ASE_NULL;
#endif #endif
prmfns.ccls.is_upper = custom_lsp_isupper; prmfns.ccls.is_upper = custom_lsp_isupper;
@ -324,11 +324,11 @@ int lsp_main (int argc, ase_char_t* argv[])
prmfns.ccls.is_punct = custom_lsp_ispunct; prmfns.ccls.is_punct = custom_lsp_ispunct;
prmfns.ccls.to_upper = custom_lsp_toupper; prmfns.ccls.to_upper = custom_lsp_toupper;
prmfns.ccls.to_lower = custom_lsp_tolower; prmfns.ccls.to_lower = custom_lsp_tolower;
prmfns.ccls.custom_data = ASE_NULL; prmfns.ccls.data = ASE_NULL;
prmfns.misc.sprintf = custom_lsp_sprintf; prmfns.misc.sprintf = custom_lsp_sprintf;
prmfns.misc.dprintf = custom_lsp_dprintf; prmfns.misc.dprintf = custom_lsp_dprintf;
prmfns.misc.custom_data = ASE_NULL; prmfns.misc.data = ASE_NULL;
lsp = ase_lsp_open (&prmfns, opt_memsize, opt_meminc); lsp = ase_lsp_open (&prmfns, opt_memsize, opt_meminc);
if (lsp == ASE_NULL) if (lsp == ASE_NULL)

View File

@ -171,7 +171,7 @@ int tgp_main (int argc, ase_char_t* argv[])
if (handle_args (argc, argv) == -1) return -1; if (handle_args (argc, argv) == -1) return -1;
tgp = ase_tgp_open (ASE_GETMMGR()); tgp = ase_tgp_open (ASE_MMGR_GETDFL());
if (tgp == ASE_NULL) if (tgp == ASE_NULL)
{ {
ase_fprintf (ASE_STDERR, ase_fprintf (ASE_STDERR,

View File

@ -1,5 +1,5 @@
/* /*
* $Id: awk.h 313 2008-08-03 14:06:43Z baconevi $ * $Id: awk.h 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -25,11 +25,11 @@ typedef struct ase_awk_runcbs_t ase_awk_runcbs_t;
typedef struct ase_awk_runarg_t ase_awk_runarg_t; typedef struct ase_awk_runarg_t ase_awk_runarg_t;
typedef struct ase_awk_rexfns_t ase_awk_rexfns_t; typedef struct ase_awk_rexfns_t ase_awk_rexfns_t;
typedef ase_real_t (*ase_awk_pow_t) (void* custom, ase_real_t x, ase_real_t y); typedef ase_real_t (*ase_awk_pow_t) (void* data, ase_real_t x, ase_real_t y);
typedef int (*ase_awk_sprintf_t) ( typedef int (*ase_awk_sprintf_t) (
void* custom, ase_char_t* buf, ase_size_t size, void* data, ase_char_t* buf, ase_size_t size,
const ase_char_t* fmt, ...); const ase_char_t* fmt, ...);
typedef void (*ase_awk_dprintf_t) (void* custom, const ase_char_t* fmt, ...); typedef void (*ase_awk_dprintf_t) (void* data, const ase_char_t* fmt, ...);
typedef ase_ssize_t (*ase_awk_io_t) ( typedef ase_ssize_t (*ase_awk_io_t) (
int cmd, void* arg, ase_char_t* data, ase_size_t count); int cmd, void* arg, ase_char_t* data, ase_size_t count);
@ -40,7 +40,7 @@ struct ase_awk_extio_t
int type; /* [IN] console, file, coproc, pipe */ int type; /* [IN] console, file, coproc, pipe */
int mode; /* [IN] read, write, etc */ int mode; /* [IN] read, write, etc */
ase_char_t* name; /* [IN] */ ase_char_t* name; /* [IN] */
void* custom_data; /* [IN] */ void* data; /* [IN] */
void* handle; /* [OUT] */ void* handle; /* [OUT] */
/* input */ /* input */
@ -70,14 +70,14 @@ struct ase_awk_prmfns_t
ase_awk_dprintf_t dprintf; /* required in the debug mode */ ase_awk_dprintf_t dprintf; /* required in the debug mode */
/* user-defined data passed to the functions above */ /* user-defined data passed to the functions above */
void* custom_data; /* optional */ void* data; /* optional */
}; };
struct ase_awk_srcios_t struct ase_awk_srcios_t
{ {
ase_awk_io_t in; ase_awk_io_t in;
ase_awk_io_t out; ase_awk_io_t out;
void* custom_data; void* data;
}; };
struct ase_awk_runios_t struct ase_awk_runios_t
@ -86,24 +86,24 @@ struct ase_awk_runios_t
ase_awk_io_t coproc; ase_awk_io_t coproc;
ase_awk_io_t file; ase_awk_io_t file;
ase_awk_io_t console; ase_awk_io_t console;
void* custom_data; void* data;
}; };
struct ase_awk_runcbs_t struct ase_awk_runcbs_t
{ {
void (*on_start) ( void (*on_start) (
ase_awk_run_t* run, void* custom_data); ase_awk_run_t* run, void* data);
void (*on_statement) ( void (*on_statement) (
ase_awk_run_t* run, ase_size_t line, void* custom_data); ase_awk_run_t* run, ase_size_t line, void* data);
void (*on_return) ( void (*on_return) (
ase_awk_run_t* run, ase_awk_val_t* ret, void* custom_data); ase_awk_run_t* run, ase_awk_val_t* ret, void* data);
void (*on_end) ( void (*on_end) (
ase_awk_run_t* run, int errnum, void* custom_data); ase_awk_run_t* run, int errnum, void* data);
void* custom_data; void* data;
}; };
struct ase_awk_runarg_t struct ase_awk_runarg_t
@ -562,50 +562,42 @@ struct ase_awk_val_ref_t
extern "C" { extern "C" {
#endif #endif
/** @brief represents the nil value */ /** represents the nil value */
extern ase_awk_val_t* ase_awk_val_nil; extern ase_awk_val_t* ase_awk_val_nil;
/** @brief represents an empty string */ /** represents an empty string */
extern ase_awk_val_t* ase_awk_val_zls; extern ase_awk_val_t* ase_awk_val_zls;
/** @brief represents a numeric value -1 */ /** represents a numeric value -1 */
extern ase_awk_val_t* ase_awk_val_negone; extern ase_awk_val_t* ase_awk_val_negone;
/** @brief represents a numeric value 0 */ /** represents a numeric value 0 */
extern ase_awk_val_t* ase_awk_val_zero; extern ase_awk_val_t* ase_awk_val_zero;
/** @brief represents a numeric value 1 */ /** represents a numeric value 1 */
extern ase_awk_val_t* ase_awk_val_one; extern ase_awk_val_t* ase_awk_val_one;
/* /*
* create an ase_awk_t instance * NAME: create an ase_awk_t instance
* *
* The ase_awk_open() function is used to create a new ase_awk_t instance. * DESCRIPTION:
* The instance created can be passed to other ase_awk_xxx() functions and * The ase_awk_open() function creates a new ase_awk_t instance.
* is valid until it is successfully destroyed using the ase_ase_close() * The instance created can be passed to other ase_awk_xxx() functions and
* function. * is valid until it is successfully destroyed using the ase_ase_close()
* function.
* *
* The mmgr_fuser() function is called if mmgr_fuser is not ASE_NULL. * RETURNS:
* It is passed two parameters; the memory manager pointer as passed * the pointer to an ase_awk_t instance on success.
* into the ase_awk_open() function and the pointer to the extension * ASE_NULL on failure.
* area allocated. It should return the pointer to the location of the
* memory manager fused into the extension area.
*
* RETURNS the pointer to an ase_awk_t instance on success, ASE_NULL on failure
*/ */
ase_awk_t* ase_awk_open ( ase_awk_t* ase_awk_open (
/* memory manager */ ase_mmgr_t* mmgr /* memory manager */,
ase_mmgr_t* mmgr, ase_size_t extension /* size of extension area in bytes */,
/* size of extension area to allocate in bytes */ void (*initializer) (ase_awk_t*) /* extension area initializer */
ase_size_t extension,
/* memory manager fuser */
ase_fuser_t mmgr_fuser
); );
ase_awk_t* ase_awk_openstd (void);
/* /*
* destroy an ase_awk_instance * destroy an ase_awk_t instance
* *
* An ase_awk_t instance should be destroyed using the ase_awk_close() function * An ase_awk_t instance should be destroyed using the ase_awk_close() function
* when finished being used. The instance passed is not valid any more once * when finished being used. The instance passed is not valid any more once
@ -784,7 +776,7 @@ int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios);
int ase_awk_run ( int ase_awk_run (
ase_awk_t* awk, const ase_char_t* main, ase_awk_t* awk, const ase_char_t* main,
ase_awk_runios_t* runios, ase_awk_runcbs_t* runcbs, ase_awk_runios_t* runios, ase_awk_runcbs_t* runcbs,
ase_awk_runarg_t* runarg, void* custom_data); ase_awk_runarg_t* runarg, void* data);
void ase_awk_stop (ase_awk_run_t* run); void ase_awk_stop (ase_awk_run_t* run);
void ase_awk_stopall (ase_awk_t* awk); void ase_awk_stopall (ase_awk_t* awk);

View File

@ -11,7 +11,7 @@
#include <ase/macros.h> #include <ase/macros.h>
/* /*
* Singly Linked List * Doubly Linked List
*/ */
typedef struct ase_dll_t ase_dll_t; typedef struct ase_dll_t ase_dll_t;
typedef struct ase_dll_node_t ase_dll_node_t; typedef struct ase_dll_node_t ase_dll_node_t;
@ -69,21 +69,31 @@ extern "C" {
#endif #endif
/* /*
* NAME creates a new singly linked list * NAME: creates a doubly linked list with extension area
* RETURNS a pointer to a newly created singly linked list *
* DESCRIPTION:
* The ase_dll_open() function creates an empty doubly linked list.
* If the memory manager mmgr is ASE_NULL, the function gets the default
* memory manager with ASE_MMGR_GETMMGR() and uses it if it is not ASE_NULL.
* The extension area is allocated when the positive extension size extension
* is specified. It calls the extension initialization function initializer
* after initializing the main area. The extension initializer is passed
* the pointer to the doubly linked list created.
*
* RETURNS:
* the pointer to a newly created doubly linked list on success.
* ASE_NULL on failure.
*
* WARNING:
* In the debug build, it fails the assertion if ASE_MMGR_SETMMGR() returns
* ASE_NULL when ASE_NULL is passed as the first parameter. In the release
* build, it returns ASE_NULL if such a thing happens.
*/ */
ase_dll_t* ase_dll_open (
ase_mmgr_t* mmgr /* memory manager */
);
/* ase_dll_t* ase_dll_open (
* NAME creates a new singly linked list with extension
* RETURNS a pointer to a newly created singly linked list
*/
ase_dll_t* ase_dll_openx (
ase_mmgr_t* mmgr /* memory manager */ , ase_mmgr_t* mmgr /* memory manager */ ,
ase_size_t extension /* size of extension in bytes */, ase_size_t extension /* size of extension area in bytes */,
ase_fuser_t fuser void (*initializer) (ase_dll_t*) /* extension initializer */
); );
/* /*
@ -143,6 +153,15 @@ void* ase_dll_getextension (
ase_dll_t* dll /* a singly linked list */ ase_dll_t* dll /* a singly linked list */
); );
/*
* NAME: get the pointer to the memory manager in use
*/
ase_mmgr_t* ase_dll_getmmgr (
ase_dll_t* dll /* a singly linked list */
);
void ase_dll_setmmgr (ase_dll_t* dll, ase_mmgr_t* mmgr);
/* /*
* NAME Gets the number of elements held in a singly linked list * NAME Gets the number of elements held in a singly linked list
* RETURN the number of elements the list holds * RETURN the number of elements the list holds

View File

@ -1,5 +1,5 @@
/* /*
* $Id: mem.h 331 2008-08-17 14:51:40Z baconevi $ * $Id: mem.h 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -11,22 +11,31 @@
#include <ase/macros.h> #include <ase/macros.h>
/* gets a pointer to the default memory manager */ /* gets a pointer to the default memory manager */
#define ASE_MMGR_GETDFLMMGR() (ase_mmgr) #define ASE_MMGR_GETDFL() (ase_mmgr)
/* sets a pointer to the default memory manager */ /* sets a pointer to the default memory manager */
#define ASE_MMGR_SETDFLMMGR(m) ((ase_mmgr)=(m)) #define ASE_MMGR_SETDFL(m) ((ase_mmgr)=(m))
/* allocate a memory block */ /* allocate a memory block */
#define ASE_MMGR_ALLOC(mmgr,size) \ #define ASE_MMGR_ALLOC(mmgr,size) \
(mmgr)->malloc((mmgr)->custom_data,size) (mmgr)->malloc((mmgr)->data,size)
/* reallocate a memory block */ /* reallocate a memory block */
#define ASE_MMGR_REALLOC(mmgr,ptr,size) \ #define ASE_MMGR_REALLOC(mmgr,ptr,size) \
(mmgr)->realloc((mmgr)->custom_data,ptr,size) (mmgr)->realloc((mmgr)->data,ptr,size)
/* free a memory block */ /* free a memory block */
#define ASE_MMGR_FREE(mmgr,ptr) \ #define ASE_MMGR_FREE(mmgr,ptr) \
(mmgr)->free((mmgr)->custom_data,ptr) (mmgr)->free((mmgr)->data,ptr)
/* define alias for ASE_MMGR_ALLOC */
#define ASE_MALLOC(mmgr,size) ASE_MMGR_ALLOC(mmgr,size)
/* define alias for ASE_MMGR_REALLOC */
#define ASE_REALLOC(mmgr,ptr,size) ASE_MMGR_REALLOC(mmgr,ptr,size)
/* define alias for ASE_MMGR_FREE */
#define ASE_FREE(mmgr,ptr) ASE_MMGR_FREE(mmgr,ptr)
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {

View File

@ -68,57 +68,49 @@ extern "C" {
#endif #endif
/* /*
* NAME: creates a singly linked list * NAME: creates a singly linked list with extension area
* *
* DESCRIPTION: * DESCRIPTION:
* The ase_sll_open() functions creates an empty singly linked list with * The ase_sll_open() function creates an empty singly linked list.
* the default memory manager. * If the memory manager mmgr is ASE_NULL, the function gets the default
* memory manager with ASE_MMGR_GETMMGR() and uses it if it is not ASE_NULL.
* The extension area is allocated when the positive extension size extension
* is specified. It calls the extension initialization function initializer
* after initializing the main area. The extension initializer is passed
* the pointer to the singly linked list created.
* *
* RETURNS: a pointer to a newly created singly linked list * RETURNS:
* the pointer to a newly created singly linked list on success.
* ASE_NULL on failure.
*
* WARNING:
* In the debug build, it fails the assertion if ASE_MMGR_SETMMGR() returns
* ASE_NULL when ASE_NULL is passed as the first parameter. In the release
* build, it returns ASE_NULL if such a thing happens.
*/ */
ase_sll_t* ase_sll_open (void);
/* ase_sll_t* ase_sll_open (
* NAME: create a singly linked list with a custom memory manager
*/
ase_sll_t* ase_sll_openm (
ase_mmgr_t* mmgr /* memory manager */
);
/*
* NAME: create a singly linked list securing extension area
*/
ase_sll_t* ase_sll_openx (
ase_size_t extension /* size of extension in bytes */,
ase_fuser_t initializer /* extension initializer */
);
/*
* NAME creates a new singly linked list with extension
* RETURNS a pointer to a newly created singly linked list
*/
ase_sll_t* ase_sll_openmx (
ase_mmgr_t* mmgr /* memory manager */ , ase_mmgr_t* mmgr /* memory manager */ ,
ase_size_t extension /* size of extension in bytes */, ase_size_t extension /* size of extension area in bytes */,
ase_fuser_t initializer /* extension initializer */ void (*initializer) (ase_sll_t*) /* extension initializer */
); );
/* /*
* NAME destroys a singly linked list * NAME: destroys a singly linked list
*/ */
void ase_sll_close ( void ase_sll_close (
ase_sll_t* sll /* a singly linked list */ ase_sll_t* sll /* a singly linked list */
); );
/* /*
* NAME deletes all elements of a singly linked list * NAME: deletes all elements of a singly linked list
*/ */
void ase_sll_clear ( void ase_sll_clear (
ase_sll_t* sll /* a singly linked list */ ase_sll_t* sll /* a singly linked list */
); );
/* /*
* NAME specifies how to clone an element * NAME: specifies how to clone an element
* *
* DESCRIPTION * DESCRIPTION
* A special copier ASE_SLL_COPIER_INLINE is provided. This copier enables * A special copier ASE_SLL_COPIER_INLINE is provided. This copier enables
@ -138,7 +130,7 @@ ase_sll_copier_t ase_sll_getcopier (
); );
/* /*
* NAME specifies how to destroy an element * NAME: specifies how to destroy an element
* *
* DESCRIPTION * DESCRIPTION
* The freeer is called when a node containing the element is destroyed. * The freeer is called when a node containing the element is destroyed.
@ -153,39 +145,48 @@ ase_sll_freeer_t ase_sll_getfreeer (
); );
/* /*
* NAME Gets the pointer to the extension area * NAME: Gets the pointer to the extension area
* RETURN the pointer to the extension area * RETURN:: the pointer to the extension area
*/ */
void* ase_sll_getextension ( void* ase_sll_getextension (
ase_sll_t* sll /* a singly linked list */ ase_sll_t* sll /* a singly linked list */
); );
/* /*
* NAME Gets the number of elements held in a singly linked list * NAME: get the pointer to the memory manager in use
* RETURN the number of elements the list holds */
ase_mmgr_t* ase_sll_getmmgr (
ase_sll_t* sll /* a singly linked list */
);
void ase_sll_setmmgr (ase_sll_t* sll, ase_mmgr_t* mmgr);
/*
* NAME: Gets the number of elements held in a singly linked list
* RETURN: the number of elements the list holds
*/ */
ase_size_t ase_sll_getsize ( ase_size_t ase_sll_getsize (
ase_sll_t* sll /* a singly linked list */ ase_sll_t* sll /* a singly linked list */
); );
/* /*
* NAME Gets the head(first) node * NAME: Gets the head(first) node
* RETURN the tail node of a singly linked list * RETURN: the tail node of a singly linked list
*/ */
ase_sll_node_t* ase_sll_gethead ( ase_sll_node_t* ase_sll_gethead (
ase_sll_t* sll /* a singly linked list */ ase_sll_t* sll /* a singly linked list */
); );
/* /*
* NAME Gets the tail(last) node * NAME: Gets the tail(last) node
* RETURN the tail node of a singly linked list * RETURN: the tail node of a singly linked list
*/ */
ase_sll_node_t* ase_sll_gettail ( ase_sll_node_t* ase_sll_gettail (
ase_sll_t* sll /* a singly linked list */ ase_sll_t* sll /* a singly linked list */
); );
/* /*
* NAME Inserts data before a positional node given * NAME: Inserts data before a positional node given
* *
* DESCRIPTION * DESCRIPTION
* There is performance penalty unless the positional node is neither * There is performance penalty unless the positional node is neither
@ -226,9 +227,9 @@ void ase_sll_poptail (
); );
/* /*
* NAME Traverses s singly linked list * NAME: Traverses s singly linked list
* *
* DESCRIPTION * DESCRIPTION:
* A singly linked list allows uni-directional in-order traversal. * A singly linked list allows uni-directional in-order traversal.
* The ase_sll_walk() function traverses a singly linkked list from its * The ase_sll_walk() function traverses a singly linkked list from its
* head node down to its tail node as long as the walker function returns * head node down to its tail node as long as the walker function returns

View File

@ -18,11 +18,11 @@ typedef ase_ssize_t (*ase_lsp_io_t) (
int cmd, void* arg, ase_char_t* data, ase_size_t count); int cmd, void* arg, ase_char_t* data, ase_size_t count);
typedef ase_real_t (*ase_lsp_pow_t) ( typedef ase_real_t (*ase_lsp_pow_t) (
void* custom, ase_real_t x, ase_real_t y); void* data, ase_real_t x, ase_real_t y);
typedef int (*ase_lsp_sprintf_t) ( typedef int (*ase_lsp_sprintf_t) (
void* custom, ase_char_t* buf, ase_size_t size, void* data, ase_char_t* buf, ase_size_t size,
const ase_char_t* fmt, ...); const ase_char_t* fmt, ...);
typedef void (*ase_lsp_dprintf_t) (void* custom, const ase_char_t* fmt, ...); typedef void (*ase_lsp_dprintf_t) (void* data, const ase_char_t* fmt, ...);
struct ase_lsp_prmfns_t struct ase_lsp_prmfns_t
{ {
@ -34,7 +34,7 @@ struct ase_lsp_prmfns_t
{ {
ase_lsp_sprintf_t sprintf; ase_lsp_sprintf_t sprintf;
ase_lsp_dprintf_t dprintf; ase_lsp_dprintf_t dprintf;
void* custom_data; void* data;
} misc; } misc;
}; };

View File

@ -1,5 +1,5 @@
/* /*
* $Id: macros.h 229 2008-06-26 10:46:39Z baconevi $ * $Id: macros.h 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -130,37 +130,19 @@
(ase_assert_failed (ASE_T(#expr), ASE_T(desc), ASE_T(__FILE__), __LINE__), 0)) (ase_assert_failed (ASE_T(#expr), ASE_T(desc), ASE_T(__FILE__), __LINE__), 0))
#endif #endif
#if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG) #define ASE_ISUPPER(ccls,c) (ccls)->is_upper((ccls)->data,c)
#include <stdlib.h> #define ASE_ISLOWER(ccls,c) (ccls)->is_lower((ccls)->data,c)
#define _CRTDBG_MAP_ALLOC #define ASE_ISALPHA(ccls,c) (ccls)->is_alpha((ccls)->data,c)
#include <crtdbg.h> #define ASE_ISDIGIT(ccls,c) (ccls)->is_digit((ccls)->data,c)
#define ASE_ISXDIGIT(ccls,c) (ccls)->is_xdigit((ccls)->data,c)
#define ASE_MALLOC(mmgr,size) malloc (size) #define ASE_ISALNUM(ccls,c) (ccls)->is_alnum((ccls)->data,c)
#define ASE_REALLOC(mmgr,ptr,size) realloc (ptr, size) #define ASE_ISSPACE(ccls,c) (ccls)->is_space((ccls)->data,c)
#define ASE_FREE(mmgr,ptr) free (ptr) #define ASE_ISPRINT(ccls,c) (ccls)->is_print((ccls)->data,c)
#else #define ASE_ISGRAPH(ccls,c) (ccls)->is_graph((ccls)->data,c)
#define ASE_ISCNTRL(ccls,c) (ccls)->is_cntrl((ccls)->data,c)
#define ASE_MALLOC(mmgr,size) \ #define ASE_ISPUNCT(ccls,c) (ccls)->is_punct((ccls)->data,c)
(mmgr)->malloc((mmgr)->custom_data, size) #define ASE_TOUPPER(ccls,c) (ccls)->to_upper((ccls)->data,c)
#define ASE_REALLOC(mmgr,ptr,size) \ #define ASE_TOLOWER(ccls,c) (ccls)->to_lower((ccls)->data,c)
(mmgr)->realloc((mmgr)->custom_data, ptr, size)
#define ASE_FREE(mmgr,ptr) \
(mmgr)->free((mmgr)->custom_data, ptr)
#endif
#define ASE_ISUPPER(ccls,c) (ccls)->is_upper((ccls)->custom_data,c)
#define ASE_ISLOWER(ccls,c) (ccls)->is_lower((ccls)->custom_data,c)
#define ASE_ISALPHA(ccls,c) (ccls)->is_alpha((ccls)->custom_data,c)
#define ASE_ISDIGIT(ccls,c) (ccls)->is_digit((ccls)->custom_data,c)
#define ASE_ISXDIGIT(ccls,c) (ccls)->is_xdigit((ccls)->custom_data,c)
#define ASE_ISALNUM(ccls,c) (ccls)->is_alnum((ccls)->custom_data,c)
#define ASE_ISSPACE(ccls,c) (ccls)->is_space((ccls)->custom_data,c)
#define ASE_ISPRINT(ccls,c) (ccls)->is_print((ccls)->custom_data,c)
#define ASE_ISGRAPH(ccls,c) (ccls)->is_graph((ccls)->custom_data,c)
#define ASE_ISCNTRL(ccls,c) (ccls)->is_cntrl((ccls)->custom_data,c)
#define ASE_ISPUNCT(ccls,c) (ccls)->is_punct((ccls)->custom_data,c)
#define ASE_TOUPPER(ccls,c) (ccls)->to_upper((ccls)->custom_data,c)
#define ASE_TOLOWER(ccls,c) (ccls)->to_lower((ccls)->custom_data,c)
#ifdef __cplusplus #ifdef __cplusplus
#define ASE_BEGIN_NAMESPACE(x) namespace x { #define ASE_BEGIN_NAMESPACE(x) namespace x {

View File

@ -1,5 +1,5 @@
/* /*
* $Id: types.h 281 2008-07-21 14:11:04Z baconevi $ * $Id: types.h 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -347,7 +347,7 @@ struct ase_mmgr_t
ase_malloc_t malloc; ase_malloc_t malloc;
ase_realloc_t realloc; ase_realloc_t realloc;
ase_free_t free; ase_free_t free;
void* custom_data; void* data;
}; };
struct ase_ccls_t struct ase_ccls_t
@ -365,7 +365,7 @@ struct ase_ccls_t
ase_isccls_t is_punct; ase_isccls_t is_punct;
ase_toccls_t to_upper; ase_toccls_t to_upper;
ase_toccls_t to_lower; ase_toccls_t to_lower;
void* custom_data; void* data;
}; };
#endif #endif

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.cpp 279 2008-07-21 05:27:34Z baconevi $ * $Id: Awk.cpp 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -7,7 +7,7 @@
#include <ase/awk/Awk.hpp> #include <ase/awk/Awk.hpp>
#include <ase/cmn/str.h> #include <ase/cmn/str.h>
#include <ase/cmn/mem.h> #include "../cmn/mem.h"
///////////////////////////////// /////////////////////////////////
ASE_BEGIN_NAMESPACE(ASE) ASE_BEGIN_NAMESPACE(ASE)
@ -1032,7 +1032,7 @@ Awk::Awk (): awk (ASE_NULL), functionMap (ASE_NULL),
mmgr.malloc = allocMem; mmgr.malloc = allocMem;
mmgr.realloc = reallocMem; mmgr.realloc = reallocMem;
mmgr.free = freeMem; mmgr.free = freeMem;
mmgr.custom_data = this; mmgr.data = this;
ccls.is_upper = isUpper; ccls.is_upper = isUpper;
ccls.is_lower = isLower; ccls.is_lower = isLower;
@ -1047,12 +1047,12 @@ Awk::Awk (): awk (ASE_NULL), functionMap (ASE_NULL),
ccls.is_punct = isPunct; ccls.is_punct = isPunct;
ccls.to_upper = toUpper; ccls.to_upper = toUpper;
ccls.to_lower = toLower; ccls.to_lower = toLower;
ccls.custom_data = this; ccls.data = this;
prmfns.pow = pow; prmfns.pow = pow;
prmfns.sprintf = sprintf; prmfns.sprintf = sprintf;
prmfns.dprintf = dprintf; prmfns.dprintf = dprintf;
prmfns.custom_data = this; prmfns.data = this;
} }
Awk::~Awk () Awk::~Awk ()
@ -1289,7 +1289,7 @@ int Awk::parse ()
srcios.in = sourceReader; srcios.in = sourceReader;
srcios.out = sourceWriter; srcios.out = sourceWriter;
srcios.custom_data = this; srcios.data = this;
int n = ase_awk_parse (awk, &srcios); int n = ase_awk_parse (awk, &srcios);
if (n == -1) retrieveError (); if (n == -1) retrieveError ();
@ -1312,9 +1312,9 @@ int Awk::run (const char_t* main, const char_t** args, size_t nargs)
runios.coproc = ASE_NULL; runios.coproc = ASE_NULL;
runios.file = fileHandler; runios.file = fileHandler;
runios.console = consoleHandler; runios.console = consoleHandler;
runios.custom_data = this; runios.data = this;
ase_memset (&runcbs, 0, ASE_SIZEOF(runcbs)); ASE_MEMSET (&runcbs, 0, ASE_SIZEOF(runcbs));
runcbs.on_start = onRunStart; runcbs.on_start = onRunStart;
if (runCallback) if (runCallback)
{ {
@ -1322,7 +1322,7 @@ int Awk::run (const char_t* main, const char_t** args, size_t nargs)
runcbs.on_return = onRunReturn; runcbs.on_return = onRunReturn;
runcbs.on_statement = onRunStatement; runcbs.on_statement = onRunStatement;
} }
runcbs.custom_data = &runctx; runcbs.data = &runctx;
if (nargs > 0) if (nargs > 0)
{ {
@ -1460,7 +1460,7 @@ int Awk::addFunction (
return -1; return -1;
} }
//ase_memcpy (tmp, &handler, ASE_SIZEOF(handler)); //ASE_MEMCPY (tmp, &handler, ASE_SIZEOF(handler));
*tmp = handler; *tmp = handler;
size_t nameLen = ase_strlen(name); size_t nameLen = ase_strlen(name);
@ -1572,7 +1572,7 @@ Awk::ssize_t Awk::pipeHandler (
int cmd, void* arg, char_t* data, size_t count) int cmd, void* arg, char_t* data, size_t count)
{ {
extio_t* extio = (extio_t*)arg; extio_t* extio = (extio_t*)arg;
Awk* awk = (Awk*)extio->custom_data; Awk* awk = (Awk*)extio->data;
ASE_ASSERT ((extio->type & 0xFF) == ASE_AWK_EXTIO_PIPE); ASE_ASSERT ((extio->type & 0xFF) == ASE_AWK_EXTIO_PIPE);
@ -1604,7 +1604,7 @@ Awk::ssize_t Awk::fileHandler (
int cmd, void* arg, char_t* data, size_t count) int cmd, void* arg, char_t* data, size_t count)
{ {
extio_t* extio = (extio_t*)arg; extio_t* extio = (extio_t*)arg;
Awk* awk = (Awk*)extio->custom_data; Awk* awk = (Awk*)extio->data;
ASE_ASSERT ((extio->type & 0xFF) == ASE_AWK_EXTIO_FILE); ASE_ASSERT ((extio->type & 0xFF) == ASE_AWK_EXTIO_FILE);
@ -1636,7 +1636,7 @@ Awk::ssize_t Awk::consoleHandler (
int cmd, void* arg, char_t* data, size_t count) int cmd, void* arg, char_t* data, size_t count)
{ {
extio_t* extio = (extio_t*)arg; extio_t* extio = (extio_t*)arg;
Awk* awk = (Awk*)extio->custom_data; Awk* awk = (Awk*)extio->data;
ASE_ASSERT ((extio->type & 0xFF) == ASE_AWK_EXTIO_CONSOLE); ASE_ASSERT ((extio->type & 0xFF) == ASE_AWK_EXTIO_CONSOLE);

View File

@ -1,5 +1,5 @@
/* /*
* $Id: awk.c 279 2008-07-21 05:27:34Z baconevi $ * $Id: awk.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -25,19 +25,25 @@ static void free_bfn (void* awk, void* afn);
} while (0) } while (0)
ase_awk_t* ase_awk_open ( ase_awk_t* ase_awk_open (
ase_mmgr_t* mmgr, ase_size_t extension, ase_fuser_t mmgr_fuser) ase_mmgr_t* mmgr, ase_size_t extension,
void (*initializer) (ase_awk_t*))
{ {
ase_awk_t* awk; ase_awk_t* awk;
ASE_ASSERT (mmgr != ASE_NULL); if (mmgr == ASE_NULL)
ASE_ASSERT (mmgr->malloc != ASE_NULL); {
ASE_ASSERT (mmgr->free != ASE_NULL); mmgr = ASE_MMGR_GETDFL();
ASE_ASSERTX (mmgr != ASE_NULL,
"Set the memory manager with ASE_MMGR_SETDFL()");
if (mmgr == ASE_NULL) return ASE_NULL;
}
awk = ASE_MALLOC (mmgr, ASE_SIZEOF(ase_awk_t) + extension); awk = ASE_MALLOC (mmgr, ASE_SIZEOF(ase_awk_t) + extension);
if (awk == ASE_NULL) return ASE_NULL; if (awk == ASE_NULL) return ASE_NULL;
ase_memset (awk, 0, ASE_SIZEOF(ase_awk_t) + extension); ASE_MEMSET (awk, 0, ASE_SIZEOF(ase_awk_t) + extension);
if (mmgr_fuser) mmgr = mmgr_fuser (mmgr, awk + 1);
awk->mmgr = mmgr; awk->mmgr = mmgr;
if (ase_str_open (&awk->token.name, 128, mmgr) == ASE_NULL) if (ase_str_open (&awk->token.name, 128, mmgr) == ASE_NULL)
@ -214,6 +220,7 @@ ase_awk_t* ase_awk_open (
return ASE_NULL; return ASE_NULL;
} }
if (initializer) initializer (awk);
return awk; return awk;
} }
@ -278,7 +285,7 @@ int ase_awk_clear (ase_awk_t* awk)
{ {
awk->stopall = ASE_FALSE; awk->stopall = ASE_FALSE;
ase_memset (&awk->src.ios, 0, ASE_SIZEOF(awk->src.ios)); ASE_MEMSET (&awk->src.ios, 0, ASE_SIZEOF(awk->src.ios));
awk->src.lex.curc = ASE_CHAR_EOF; awk->src.lex.curc = ASE_CHAR_EOF;
awk->src.lex.ungotc_count = 0; awk->src.lex.ungotc_count = 0;
awk->src.lex.line = 1; awk->src.lex.line = 1;
@ -347,14 +354,24 @@ int ase_awk_clear (ase_awk_t* awk)
return 0; return 0;
} }
void* ase_awk_getextension (ase_awk_t* awk)
{
return (void*)(awk + 1);
}
ase_mmgr_t* ase_awk_getmmgr (ase_awk_t* awk) ase_mmgr_t* ase_awk_getmmgr (ase_awk_t* awk)
{ {
return awk->mmgr; return awk->mmgr;
} }
void* ase_awk_getextension (ase_awk_t* awk) void ase_awk_setmmgr (ase_awk_t* awk, ase_mmgr_t* mmgr)
{ {
return (void*)(awk + 1); awk->mmgr = mmgr;
}
ase_ccls_t* ase_awk_getccls (ase_awk_t* awk)
{
return awk->ccls;
} }
void ase_awk_setccls (ase_awk_t* awk, ase_ccls_t* ccls) void ase_awk_setccls (ase_awk_t* awk, ase_ccls_t* ccls)

View File

@ -1,5 +1,5 @@
/* /*
* $Id: awk_i.h 271 2008-07-20 12:42:39Z baconevi $ * $Id: awk_i.h 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -7,7 +7,7 @@
#ifndef _ASE_AWK_AWKI_H_ #ifndef _ASE_AWK_AWKI_H_
#define _ASE_AWK_AWKI_H_ #define _ASE_AWK_AWKI_H_
#include <ase/cmn/mem.h> #include "../cmn/mem.h"
#include <ase/cmn/str.h> #include <ase/cmn/str.h>
#include <ase/cmn/map.h> #include <ase/cmn/map.h>
#include <ase/cmn/rex.h> #include <ase/cmn/rex.h>
@ -328,7 +328,7 @@ struct ase_awk_run_t
struct struct
{ {
ase_awk_io_t handler[ASE_AWK_EXTIO_NUM]; ase_awk_io_t handler[ASE_AWK_EXTIO_NUM];
void* custom_data; void* data;
ase_awk_extio_t* chain; ase_awk_extio_t* chain;
} extio; } extio;
@ -364,7 +364,7 @@ struct ase_awk_run_t
ase_size_t errlin; ase_size_t errlin;
ase_char_t errmsg[256]; ase_char_t errmsg[256];
void* custom_data; void* data;
ase_awk_t* awk; ase_awk_t* awk;
ase_awk_runcbs_t* cbs; ase_awk_runcbs_t* cbs;

View File

@ -1,5 +1,5 @@
/* /*
* $Id: err.c 271 2008-07-20 12:42:39Z baconevi $ * $Id: err.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -252,7 +252,7 @@ void ase_awk_seterror (
{ {
case 0: case 0:
awk->prmfns->sprintf ( awk->prmfns->sprintf (
awk->prmfns->custom_data, awk->prmfns->data,
awk->errmsg, awk->errmsg,
ASE_COUNTOF(awk->errmsg), ASE_COUNTOF(awk->errmsg),
errfmt); errfmt);
@ -280,7 +280,7 @@ void ase_awk_seterror (
} }
awk->prmfns->sprintf ( awk->prmfns->sprintf (
awk->prmfns->custom_data, awk->prmfns->data,
awk->errmsg, awk->errmsg,
ASE_COUNTOF(awk->errmsg), ASE_COUNTOF(awk->errmsg),
errfmt, (int)len, tmp); errfmt, (int)len, tmp);
@ -289,7 +289,7 @@ void ase_awk_seterror (
case 2: case 2:
awk->prmfns->sprintf ( awk->prmfns->sprintf (
awk->prmfns->custom_data, awk->prmfns->data,
awk->errmsg, awk->errmsg,
ASE_COUNTOF(awk->errmsg), ASE_COUNTOF(awk->errmsg),
errfmt, errfmt,
@ -299,7 +299,7 @@ void ase_awk_seterror (
case 3: case 3:
awk->prmfns->sprintf ( awk->prmfns->sprintf (
awk->prmfns->custom_data, awk->prmfns->data,
awk->errmsg, awk->errmsg,
ASE_COUNTOF(awk->errmsg), ASE_COUNTOF(awk->errmsg),
errfmt, errfmt,
@ -310,7 +310,7 @@ void ase_awk_seterror (
case 4: case 4:
awk->prmfns->sprintf ( awk->prmfns->sprintf (
awk->prmfns->custom_data, awk->prmfns->data,
awk->errmsg, awk->errmsg,
ASE_COUNTOF(awk->errmsg), ASE_COUNTOF(awk->errmsg),
errfmt, errfmt,
@ -322,7 +322,7 @@ void ase_awk_seterror (
case 5: case 5:
awk->prmfns->sprintf ( awk->prmfns->sprintf (
awk->prmfns->custom_data, awk->prmfns->data,
awk->errmsg, awk->errmsg,
ASE_COUNTOF(awk->errmsg), ASE_COUNTOF(awk->errmsg),
errfmt, errfmt,
@ -404,7 +404,7 @@ void ase_awk_setrunerror (
/* TODO: convert % to %% if the original % is not /* TODO: convert % to %% if the original % is not
* the first % of the %% sequence */ * the first % of the %% sequence */
run->awk->prmfns->sprintf ( run->awk->prmfns->sprintf (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
run->errmsg, run->errmsg,
ASE_COUNTOF(run->errmsg), ASE_COUNTOF(run->errmsg),
errfmt); errfmt);
@ -435,7 +435,7 @@ void ase_awk_setrunerror (
} }
run->awk->prmfns->sprintf ( run->awk->prmfns->sprintf (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
run->errmsg, run->errmsg,
ASE_COUNTOF(run->errmsg), ASE_COUNTOF(run->errmsg),
errfmt, len, tmp); errfmt, len, tmp);
@ -444,7 +444,7 @@ void ase_awk_setrunerror (
case 2: case 2:
run->awk->prmfns->sprintf ( run->awk->prmfns->sprintf (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
run->errmsg, run->errmsg,
ASE_COUNTOF(run->errmsg), ASE_COUNTOF(run->errmsg),
errfmt, errfmt,
@ -454,7 +454,7 @@ void ase_awk_setrunerror (
case 3: case 3:
run->awk->prmfns->sprintf ( run->awk->prmfns->sprintf (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
run->errmsg, run->errmsg,
ASE_COUNTOF(run->errmsg), ASE_COUNTOF(run->errmsg),
errfmt, errfmt,
@ -465,7 +465,7 @@ void ase_awk_setrunerror (
case 4: case 4:
run->awk->prmfns->sprintf ( run->awk->prmfns->sprintf (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
run->errmsg, run->errmsg,
ASE_COUNTOF(run->errmsg), ASE_COUNTOF(run->errmsg),
errfmt, errfmt,
@ -477,7 +477,7 @@ void ase_awk_setrunerror (
case 5: case 5:
run->awk->prmfns->sprintf ( run->awk->prmfns->sprintf (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
run->errmsg, run->errmsg,
ASE_COUNTOF(run->errmsg), ASE_COUNTOF(run->errmsg),
errfmt, errfmt,

View File

@ -1,5 +1,5 @@
/* /*
* $Id: extio.c 270 2008-07-20 05:53:29Z baconevi $ * $Id: extio.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -135,7 +135,7 @@ int ase_awk_readextio (
p->mode = extio_mode; p->mode = extio_mode;
p->handle = ASE_NULL; p->handle = ASE_NULL;
p->next = ASE_NULL; p->next = ASE_NULL;
p->custom_data = run->extio.custom_data; p->data = run->extio.data;
p->in.buf[0] = ASE_T('\0'); p->in.buf[0] = ASE_T('\0');
p->in.pos = 0; p->in.pos = 0;
@ -492,7 +492,7 @@ int ase_awk_writeextio_str (
p->mode = extio_mode; p->mode = extio_mode;
p->handle = ASE_NULL; p->handle = ASE_NULL;
p->next = ASE_NULL; p->next = ASE_NULL;
p->custom_data = run->extio.custom_data; p->data = run->extio.data;
p->out.eof = ASE_FALSE; p->out.eof = ASE_FALSE;
p->out.eos = ASE_FALSE; p->out.eos = ASE_FALSE;

View File

@ -1,5 +1,5 @@
/* /*
* $Id: jni.c 329 2008-08-16 14:08:53Z baconevi $ * $Id: jni.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -16,7 +16,7 @@
#include <ase/awk/jni.h> #include <ase/awk/jni.h>
#include <ase/awk/awk.h> #include <ase/awk/awk.h>
#include <ase/cmn/mem.h> #include "../cmn/mem.h"
#include <ase/utl/stdio.h> #include <ase/utl/stdio.h>
#include <ase/utl/ctype.h> #include <ase/utl/ctype.h>
@ -327,7 +327,7 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj)
#endif #endif
#endif #endif
awk = ase_awk_open (ASE_MMGR_GET(), ASE_SIZEOF(awk_data_t)); awk = ase_awk_open (ASE_NULL, ASE_SIZEOF(awk_data_t), ASE_NULL);
if (awk == ASE_NULL) if (awk == ASE_NULL)
{ {
THROW_NOMEM_EXCEPTION (env); THROW_NOMEM_EXCEPTION (env);
@ -339,7 +339,7 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj)
awk_data->prmfns.pow = awk_pow; awk_data->prmfns.pow = awk_pow;
awk_data->prmfns.sprintf = awk_sprintf; awk_data->prmfns.sprintf = awk_sprintf;
awk_data->prmfns.dprintf = awk_dprintf; awk_data->prmfns.dprintf = awk_dprintf;
awk_data->prmfns.custom_data = ASE_NULL; awk_data->prmfns.data = ASE_NULL;
ase_awk_setccls (awk, ASE_GETCCLS()); ase_awk_setccls (awk, ASE_GETCCLS());
ase_awk_setprmfns (awk, &awk_data->prmfns); ase_awk_setprmfns (awk, &awk_data->prmfns);
@ -428,7 +428,7 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_parse (JNIEnv* env, jobject obj, jlong a
srcios.in = read_source; srcios.in = read_source;
srcios.out = write_source; srcios.out = write_source;
srcios.custom_data = &srcio_data; srcios.data = &srcio_data;
if (ase_awk_parse (awk, &srcios) == -1) if (ase_awk_parse (awk, &srcios) == -1)
{ {
@ -592,12 +592,12 @@ JNIEXPORT void JNICALL Java_ase_awk_Awk_run (JNIEnv* env, jobject obj, jlong awk
runios.coproc = ASE_NULL; runios.coproc = ASE_NULL;
runios.file = process_extio; runios.file = process_extio;
runios.console = process_extio; runios.console = process_extio;
runios.custom_data = &runio_data; runios.data = &runio_data;
ase_memset (&runcbs, 0, ASE_SIZEOF(runcbs)); ASE_MEMSET (&runcbs, 0, ASE_SIZEOF(runcbs));
runcbs.on_start = on_run_start; runcbs.on_start = on_run_start;
runcbs.on_end = on_run_end; runcbs.on_end = on_run_end;
runcbs.custom_data = ASE_NULL; runcbs.data = ASE_NULL;
if (mfn == ASE_NULL) if (mfn == ASE_NULL)
{ {
@ -1345,7 +1345,7 @@ static ase_ssize_t process_extio (
int cmd, void* arg, ase_char_t* data, ase_size_t size) int cmd, void* arg, ase_char_t* data, ase_size_t size)
{ {
ase_awk_extio_t* epa = (ase_awk_extio_t*)arg; ase_awk_extio_t* epa = (ase_awk_extio_t*)arg;
runio_data_t* runio_data = (runio_data_t*)epa->custom_data; runio_data_t* runio_data = (runio_data_t*)epa->data;
switch (cmd) switch (cmd)
{ {

View File

@ -1,5 +1,5 @@
/* /*
* $Id: parse.c 283 2008-07-22 13:12:56Z baconevi $ * $Id: parse.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -482,7 +482,7 @@ int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios)
ASE_ASSERT (awk->parse.depth.cur.expr == 0); ASE_ASSERT (awk->parse.depth.cur.expr == 0);
ase_awk_clear (awk); ase_awk_clear (awk);
ase_memcpy (&awk->src.ios, srcios, ASE_SIZEOF(awk->src.ios)); ASE_MEMCPY (&awk->src.ios, srcios, ASE_SIZEOF(awk->src.ios));
n = parse (awk); n = parse (awk);
@ -501,7 +501,7 @@ static int parse (ase_awk_t* awk)
CLRERR (awk); CLRERR (awk);
op = awk->src.ios.in ( op = awk->src.ios.in (
ASE_AWK_IO_OPEN, awk->src.ios.custom_data, ASE_NULL, 0); ASE_AWK_IO_OPEN, awk->src.ios.data, ASE_NULL, 0);
if (op <= -1) if (op <= -1)
{ {
/* cannot open the source file. /* cannot open the source file.
@ -574,7 +574,7 @@ static int parse (ase_awk_t* awk)
exit_parse: exit_parse:
if (n == 0) CLRERR (awk); if (n == 0) CLRERR (awk);
if (awk->src.ios.in ( if (awk->src.ios.in (
ASE_AWK_IO_CLOSE, awk->src.ios.custom_data, ASE_NULL, 0) != 0) ASE_AWK_IO_CLOSE, awk->src.ios.data, ASE_NULL, 0) != 0)
{ {
if (n == 0) if (n == 0)
{ {
@ -5220,7 +5220,7 @@ static int get_char (ase_awk_t* awk)
{ {
CLRERR (awk); CLRERR (awk);
n = awk->src.ios.in ( n = awk->src.ios.in (
ASE_AWK_IO_READ, awk->src.ios.custom_data, ASE_AWK_IO_READ, awk->src.ios.data,
awk->src.shared.buf, ASE_COUNTOF(awk->src.shared.buf)); awk->src.shared.buf, ASE_COUNTOF(awk->src.shared.buf));
if (n <= -1) if (n <= -1)
{ {
@ -5480,7 +5480,7 @@ static int deparse (ase_awk_t* awk)
CLRERR (awk); CLRERR (awk);
op = awk->src.ios.out ( op = awk->src.ios.out (
ASE_AWK_IO_OPEN, awk->src.ios.custom_data, ASE_NULL, 0); ASE_AWK_IO_OPEN, awk->src.ios.data, ASE_NULL, 0);
if (op <= -1) if (op <= -1)
{ {
if (ISNOERR(awk)) SETERR (awk, ASE_AWK_ESOUTOP); if (ISNOERR(awk)) SETERR (awk, ASE_AWK_ESOUTOP);
@ -5676,7 +5676,7 @@ static int deparse (ase_awk_t* awk)
exit_deparse: exit_deparse:
if (n == 0) CLRERR (awk); if (n == 0) CLRERR (awk);
if (awk->src.ios.out ( if (awk->src.ios.out (
ASE_AWK_IO_CLOSE, awk->src.ios.custom_data, ASE_NULL, 0) != 0) ASE_AWK_IO_CLOSE, awk->src.ios.data, ASE_NULL, 0) != 0)
{ {
if (n == 0) if (n == 0)
{ {
@ -5749,7 +5749,7 @@ static int flush_out (ase_awk_t* awk)
CLRERR (awk); CLRERR (awk);
n = awk->src.ios.out ( n = awk->src.ios.out (
ASE_AWK_IO_WRITE, awk->src.ios.custom_data, ASE_AWK_IO_WRITE, awk->src.ios.data,
&awk->src.shared.buf[awk->src.shared.buf_pos], &awk->src.shared.buf[awk->src.shared.buf_pos],
awk->src.shared.buf_len - awk->src.shared.buf_pos); awk->src.shared.buf_len - awk->src.shared.buf_pos);
if (n <= 0) if (n <= 0)

View File

@ -1,5 +1,5 @@
/* /*
* $Id: rec.c 270 2008-07-20 05:53:29Z baconevi $ * $Id: rec.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -320,7 +320,7 @@ static int recomp_record_fields (
} }
if (run->inrec.flds != ASE_NULL) if (run->inrec.flds != ASE_NULL)
{ {
ase_memcpy (tmp, run->inrec.flds, ASE_MEMCPY (tmp, run->inrec.flds,
ASE_SIZEOF(*run->inrec.flds)*run->inrec.maxflds); ASE_SIZEOF(*run->inrec.flds)*run->inrec.maxflds);
ASE_AWK_FREE (run->awk, run->inrec.flds); ASE_AWK_FREE (run->awk, run->inrec.flds);
} }

View File

@ -1,5 +1,5 @@
/* /*
* $Id: run.c 271 2008-07-20 12:42:39Z baconevi $ * $Id: run.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -62,7 +62,7 @@ static int set_global (
static int init_run ( static int init_run (
ase_awk_run_t* run, ase_awk_t* awk, ase_awk_run_t* run, ase_awk_t* awk,
ase_awk_runios_t* runios, void* custom_data); ase_awk_runios_t* runios, void* data);
static void deinit_run (ase_awk_run_t* run); static void deinit_run (ase_awk_run_t* run);
static int build_runarg ( static int build_runarg (
@ -601,7 +601,7 @@ ase_awk_t* ase_awk_getrunawk (ase_awk_run_t* run)
void* ase_awk_getruncustomdata (ase_awk_run_t* run) void* ase_awk_getruncustomdata (ase_awk_run_t* run)
{ {
return run->custom_data; return run->data;
} }
ase_map_t* ase_awk_getrunnamedvarmap (ase_awk_run_t* run) ase_map_t* ase_awk_getrunnamedvarmap (ase_awk_run_t* run)
@ -614,7 +614,7 @@ int ase_awk_run (ase_awk_t* awk,
ase_awk_runios_t* runios, ase_awk_runios_t* runios,
ase_awk_runcbs_t* runcbs, ase_awk_runcbs_t* runcbs,
ase_awk_runarg_t* runarg, ase_awk_runarg_t* runarg,
void* custom_data) void* data)
{ {
ase_awk_run_t* run; ase_awk_run_t* run;
int n; int n;
@ -648,10 +648,10 @@ int ase_awk_run (ase_awk_t* awk,
} }
/* clear the run object space */ /* clear the run object space */
ase_memset (run, 0, ASE_SIZEOF(ase_awk_run_t)); ASE_MEMSET (run, 0, ASE_SIZEOF(ase_awk_run_t));
/* initialize the run object */ /* initialize the run object */
if (init_run (run, awk, runios, custom_data) == -1) if (init_run (run, awk, runios, data) == -1)
{ {
ASE_AWK_FREE (awk, run); ASE_AWK_FREE (awk, run);
return -1; return -1;
@ -667,7 +667,7 @@ int ase_awk_run (ase_awk_t* awk,
/* execute the start callback if it exists */ /* execute the start callback if it exists */
if (runcbs != ASE_NULL && runcbs->on_start != ASE_NULL) if (runcbs != ASE_NULL && runcbs->on_start != ASE_NULL)
{ {
runcbs->on_start (run, runcbs->custom_data); runcbs->on_start (run, runcbs->data);
} }
/* enter the main run loop */ /* enter the main run loop */
@ -702,7 +702,7 @@ int ase_awk_run (ase_awk_t* awk,
runcbs->on_end (run, runcbs->on_end (run,
((n == -1)? run->errnum: ASE_AWK_ENOERR), ((n == -1)? run->errnum: ASE_AWK_ENOERR),
runcbs->custom_data); runcbs->data);
/* when using callbacks, this function always returns 0 /* when using callbacks, this function always returns 0
* after the start callbacks has been triggered */ * after the start callbacks has been triggered */
@ -738,10 +738,10 @@ static void same_namedval (void* run, void* val)
static int init_run ( static int init_run (
ase_awk_run_t* run, ase_awk_t* awk, ase_awk_run_t* run, ase_awk_t* awk,
ase_awk_runios_t* runios, void* custom_data) ase_awk_runios_t* runios, void* data)
{ {
run->awk = awk; run->awk = awk;
run->custom_data = custom_data; run->data = data;
run->stack = ASE_NULL; run->stack = ASE_NULL;
run->stack_top = 0; run->stack_top = 0;
@ -830,7 +830,7 @@ static int init_run (
return -1; return -1;
} }
ase_memset ( ASE_MEMSET (
run->pattern_range_state, 0, run->pattern_range_state, 0,
run->awk->tree.chain_size * ASE_SIZEOF(ase_byte_t)); run->awk->tree.chain_size * ASE_SIZEOF(ase_byte_t));
} }
@ -842,7 +842,7 @@ static int init_run (
run->extio.handler[ASE_AWK_EXTIO_COPROC] = runios->coproc; run->extio.handler[ASE_AWK_EXTIO_COPROC] = runios->coproc;
run->extio.handler[ASE_AWK_EXTIO_FILE] = runios->file; run->extio.handler[ASE_AWK_EXTIO_FILE] = runios->file;
run->extio.handler[ASE_AWK_EXTIO_CONSOLE] = runios->console; run->extio.handler[ASE_AWK_EXTIO_CONSOLE] = runios->console;
run->extio.custom_data = runios->custom_data; run->extio.data = runios->data;
run->extio.chain = ASE_NULL; run->extio.chain = ASE_NULL;
} }
@ -1362,7 +1362,7 @@ static int run_main (
{ {
if (run->cbs != ASE_NULL && run->cbs->on_return != ASE_NULL) if (run->cbs != ASE_NULL && run->cbs->on_return != ASE_NULL)
{ {
run->cbs->on_return (run, crdata.val, run->cbs->custom_data); run->cbs->on_return (run, crdata.val, run->cbs->data);
} }
} }
else n = -1; else n = -1;
@ -1376,7 +1376,7 @@ static int run_main (
if (run->cbs != ASE_NULL && run->cbs->on_return != ASE_NULL) if (run->cbs != ASE_NULL && run->cbs->on_return != ASE_NULL)
{ {
run->cbs->on_return (run, v, run->cbs->custom_data); run->cbs->on_return (run, v, run->cbs->data);
} }
ase_awk_refdownval (run, v); ase_awk_refdownval (run, v);
@ -1533,7 +1533,7 @@ static int run_main (
{ {
if (run->cbs != ASE_NULL && run->cbs->on_return != ASE_NULL) if (run->cbs != ASE_NULL && run->cbs->on_return != ASE_NULL)
{ {
run->cbs->on_return (run, v, run->cbs->custom_data); run->cbs->on_return (run, v, run->cbs->data);
} }
} }
/* end the life of the global return value */ /* end the life of the global return value */
@ -1847,7 +1847,7 @@ static int run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde)
(run)->cbs->on_statement != ASE_NULL) \ (run)->cbs->on_statement != ASE_NULL) \
{ \ { \
(run)->cbs->on_statement ( \ (run)->cbs->on_statement ( \
run, (nde)->line, (run)->cbs->custom_data); \ run, (nde)->line, (run)->cbs->data); \
} }
static int run_statement (ase_awk_run_t* run, ase_awk_nde_t* nde) static int run_statement (ase_awk_run_t* run, ase_awk_nde_t* nde)
@ -4594,7 +4594,7 @@ static ase_awk_val_t* eval_binop_exp (
/* left - int, right - real */ /* left - int, right - real */
res = ase_awk_makerealval (run, res = ase_awk_makerealval (run,
run->awk->prmfns->pow ( run->awk->prmfns->pow (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
(ase_real_t)l1,(ase_real_t)r2)); (ase_real_t)l1,(ase_real_t)r2));
} }
else else
@ -4603,7 +4603,7 @@ static ase_awk_val_t* eval_binop_exp (
ASE_ASSERT (n3 == 3); ASE_ASSERT (n3 == 3);
res = ase_awk_makerealval (run, res = ase_awk_makerealval (run,
run->awk->prmfns->pow( run->awk->prmfns->pow(
run->awk->prmfns->custom_data, run->awk->prmfns->data,
(ase_real_t)r1,(ase_real_t)r2)); (ase_real_t)r1,(ase_real_t)r2));
} }
@ -6294,7 +6294,7 @@ static int __raw_push (ase_awk_run_t* run, void* val)
if (tmp == ASE_NULL) return -1; if (tmp == ASE_NULL) return -1;
if (run->stack != ASE_NULL) if (run->stack != ASE_NULL)
{ {
ase_memcpy ( ASE_MEMCPY (
tmp, run->stack, tmp, run->stack,
run->stack_limit * ASE_SIZEOF(void*)); run->stack_limit * ASE_SIZEOF(void*));
ASE_AWK_FREE (run->awk, run->stack); ASE_AWK_FREE (run->awk, run->stack);
@ -6664,7 +6664,7 @@ ase_char_t* ase_awk_format (
do do
{ {
n = run->awk->prmfns->sprintf ( n = run->awk->prmfns->sprintf (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
run->format.tmp.ptr, run->format.tmp.ptr,
run->format.tmp.len, run->format.tmp.len,
#if ASE_SIZEOF_LONG_LONG > 0 #if ASE_SIZEOF_LONG_LONG > 0
@ -6770,7 +6770,7 @@ ase_char_t* ase_awk_format (
do do
{ {
n = run->awk->prmfns->sprintf ( n = run->awk->prmfns->sprintf (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
run->format.tmp.ptr, run->format.tmp.ptr,
run->format.tmp.len, run->format.tmp.len,
#if ASE_SIZEOF_LONG_LONG > 0 #if ASE_SIZEOF_LONG_LONG > 0
@ -6891,7 +6891,7 @@ ase_char_t* ase_awk_format (
do do
{ {
n = run->awk->prmfns->sprintf ( n = run->awk->prmfns->sprintf (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
run->format.tmp.ptr, run->format.tmp.ptr,
run->format.tmp.len, run->format.tmp.len,
ASE_STR_BUF(fbu), ASE_STR_BUF(fbu),
@ -6979,7 +6979,7 @@ ase_char_t* ase_awk_format (
do do
{ {
n = run->awk->prmfns->sprintf ( n = run->awk->prmfns->sprintf (
run->awk->prmfns->custom_data, run->awk->prmfns->data,
run->format.tmp.ptr, run->format.tmp.ptr,
run->format.tmp.len, run->format.tmp.len,
ASE_STR_BUF(fbu), ASE_STR_BUF(fbu),

View File

@ -45,14 +45,14 @@ ase_awk_t* ase_awk_openstd (void)
ase_awk_t* awk; ase_awk_t* awk;
ext_t* ext; ext_t* ext;
awk = ase_awk_open (ASE_MMGR_GET(), ASE_SIZEOF(ext_t), ASE_NULL); awk = ase_awk_open (ASE_NULL, ASE_SIZEOF(ext_t), ASE_NULL);
ase_awk_setccls (awk, ASE_GETCCLS()); ase_awk_setccls (awk, ASE_GETCCLS());
ext = (ext_t*) ase_awk_getextension (awk); ext = (ext_t*) ase_awk_getextension (awk);
ext->prmfns.pow = custom_awk_pow; ext->prmfns.pow = custom_awk_pow;
ext->prmfns.sprintf = custom_awk_sprintf; ext->prmfns.sprintf = custom_awk_sprintf;
ext->prmfns.dprintf = custom_awk_dprintf; ext->prmfns.dprintf = custom_awk_dprintf;
ext->prmfns.custom_data = ASE_NULL; ext->prmfns.data = ASE_NULL;
ase_awk_setprmfns (awk, &ext->prmfns); ase_awk_setprmfns (awk, &ext->prmfns);
ase_awk_setoption (awk, ase_awk_setoption (awk,

View File

@ -1,5 +1,5 @@
/* /*
* $Id: tab.c 270 2008-07-20 05:53:29Z baconevi $ * $Id: tab.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -75,7 +75,7 @@ ase_awk_tab_t* ase_awk_tab_setcapa (ase_awk_tab_t* tab, ase_size_t capa)
{ {
ase_size_t x; ase_size_t x;
x = (capa > tab->capa)? tab->capa: capa; x = (capa > tab->capa)? tab->capa: capa;
ase_memcpy ( ASE_MEMCPY (
tmp, tab->buf, tmp, tab->buf,
ASE_SIZEOF(*tab->buf) * x); ASE_SIZEOF(*tab->buf) * x);
ASE_AWK_FREE (tab->awk, tab->buf); ASE_AWK_FREE (tab->awk, tab->buf);

View File

@ -1,5 +1,5 @@
/* /*
* $Id: tree.c 271 2008-07-20 12:42:39Z baconevi $ * $Id: tree.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -264,12 +264,12 @@ static int print_expression (ase_awk_t* awk, ase_awk_nde_t* nde)
{ {
#if (ASE_SIZEOF_LONG_DOUBLE != 0) #if (ASE_SIZEOF_LONG_DOUBLE != 0)
awk->prmfns->sprintf ( awk->prmfns->sprintf (
awk->prmfns->custom_data, awk->prmfns->data,
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt), ASE_T("%Lf"), awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt), ASE_T("%Lf"),
(long double)((ase_awk_nde_real_t*)nde)->val); (long double)((ase_awk_nde_real_t*)nde)->val);
#elif (ASE_SIZEOF_DOUBLE != 0) #elif (ASE_SIZEOF_DOUBLE != 0)
awk->prmfns->sprintf ( awk->prmfns->sprintf (
awk->prmfns->custom_data, awk->prmfns->data,
awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt), ASE_T("%f"), awk->tmp.fmt, ASE_COUNTOF(awk->tmp.fmt), ASE_T("%f"),
(double)((ase_awk_nde_real_t*)nde)->val); (double)((ase_awk_nde_real_t*)nde)->val);
#else #else

View File

@ -1,5 +1,5 @@
/* /*
* $Id: val.c 271 2008-07-20 12:42:39Z baconevi $ * $Id: val.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -400,7 +400,7 @@ ase_awk_val_t* ase_awk_makerexval (
} }
*/ */
val->code = val->buf + len + 1; val->code = val->buf + len + 1;
ase_memcpy (val->code, code, ASE_REX_LEN(code)); ASE_MEMCPY (val->code, code, ASE_REX_LEN(code));
return (ase_awk_val_t*)val; return (ase_awk_val_t*)val;
} }
@ -1060,7 +1060,7 @@ int ase_awk_strtonum (
} }
#define DPRINTF run->awk->prmfns->dprintf #define DPRINTF run->awk->prmfns->dprintf
#define DCUSTOM run->awk->prmfns->custom_data #define DCUSTOM run->awk->prmfns->data
static int print_pair (ase_pair_t* pair, void* arg) static int print_pair (ase_pair_t* pair, void* arg)
{ {

View File

@ -13,22 +13,30 @@ void* ase_dll_copyinline (ase_dll_t* dll, void* dptr, ase_size_t dlen)
return ASE_NULL; return ASE_NULL;
} }
ase_dll_t* ase_dll_open (ase_mmgr_t* mmgr) ase_dll_t* ase_dll_open (
{ ase_mmgr_t* mmgr, ase_size_t extension,
return ase_dll_openx (mmgr, 0, ASE_NULL); void (*initializer) (ase_dll_t*))
}
ase_dll_t* ase_dll_openx (ase_mmgr_t* mmgr, ase_size_t extension, ase_fuser_t fuser)
{ {
ase_dll_t* dll; ase_dll_t* dll;
if (mmgr == ASE_NULL)
{
mmgr = ASE_MMGR_GETDFL();
ASE_ASSERTX (mmgr != ASE_NULL,
"Set the memory manager with ASE_MMGR_SETDFL()");
if (mmgr == ASE_NULL) return ASE_NULL;
}
dll = ASE_MALLOC (mmgr, ASE_SIZEOF(ase_dll_t) + extension); dll = ASE_MALLOC (mmgr, ASE_SIZEOF(ase_dll_t) + extension);
if (dll == ASE_NULL) return ASE_NULL; if (dll == ASE_NULL) return ASE_NULL;
ASE_MEMSET (dll, 0, ASE_SIZEOF(ase_dll_t) + extension); ASE_MEMSET (dll, 0, ASE_SIZEOF(ase_dll_t) + extension);
if (fuser != ASE_NULL) mmgr = fuser (mmgr, dll + 1);
dll->mmgr = mmgr; dll->mmgr = mmgr;
if (initializer) initializer (dll);
return dll; return dll;
} }
@ -49,6 +57,16 @@ void* ase_dll_getextension (ase_dll_t* dll)
return dll + 1; return dll + 1;
} }
ase_mmgr_t* ase_dll_getmmgr (ase_dll_t* dll)
{
return dll->mmgr;
}
void ase_dll_setmmgr (ase_dll_t* dll, ase_mmgr_t* mmgr)
{
dll->mmgr = mmgr;
}
ase_size_t ase_dll_getsize (ase_dll_t* dll) ase_size_t ase_dll_getsize (ase_dll_t* dll)
{ {
return dll->size; return dll->size;

View File

@ -1,11 +1,12 @@
/* /*
* $Id: map.c 156 2008-03-22 12:09:35Z baconevi $ * $Id: map.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
#include <ase/cmn/map.h> #include <ase/cmn/map.h>
#include <ase/cmn/str.h> #include <ase/cmn/str.h>
#include "mem.h"
static ase_size_t hashkey (const ase_char_t* keyptr, ase_size_t keylen); static ase_size_t hashkey (const ase_char_t* keyptr, ase_size_t keylen);
static int rehash (ase_map_t* map); static int rehash (ase_map_t* map);

View File

@ -1,11 +1,11 @@
/* /*
* $Id: rex.c 223 2008-06-26 06:44:41Z baconevi $ * $Id: rex.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
#include <ase/cmn/rex.h> #include <ase/cmn/rex.h>
#include <ase/cmn/mem.h> #include "mem.h"
#ifdef DEBUG_REX #ifdef DEBUG_REX
#include <ase/utl/stdio.h> #include <ase/utl/stdio.h>
@ -1108,7 +1108,7 @@ static int add_code (builder_t* builder, void* data, ase_size_t len)
if (builder->code.buf != ASE_NULL) if (builder->code.buf != ASE_NULL)
{ {
ase_memcpy (tmp, builder->code.buf, builder->code.capa); ASE_MEMCPY (tmp, builder->code.buf, builder->code.capa);
ASE_FREE (builder->mmgr, builder->code.buf); ASE_FREE (builder->mmgr, builder->code.buf);
} }
} }
@ -1117,7 +1117,7 @@ static int add_code (builder_t* builder, void* data, ase_size_t len)
builder->code.capa = capa; builder->code.capa = capa;
} }
ase_memcpy (&builder->code.buf[builder->code.size], data, len); ASE_MEMCPY (&builder->code.buf[builder->code.size], data, len);
builder->code.size += len; builder->code.size += len;
return 0; return 0;

View File

@ -13,27 +13,21 @@ void* ase_sll_copyinline (ase_sll_t* sll, void* dptr, ase_size_t dlen)
return ASE_NULL; return ASE_NULL;
} }
ase_sll_t* ase_sll_open (void) ase_sll_t* ase_sll_open (
{ ase_mmgr_t* mmgr, ase_size_t extension,
return ase_sll_openx (ASE_MMGR_GETDFLMMGR(), 0, ASE_NULL); void (*initializer) (ase_sll_t*))
}
ase_sll_openm (ase_mmgr_t* mmgr)
{
return ase_sll_openx (mmgr, 0, ASE_NULL);
}
ase_sll_openx (ase_size_t extension, ase_fuser_t initializer)
{
return ase_sll_openx (mmgr, 0, ASE_NULL);
}
ase_sll_t* ase_sll_openmx (
ase_mmgr_t* mmgr, ase_size_t extension, ase_fuser_t initializer)
{ {
ase_sll_t* sll; ase_sll_t* sll;
if (mmgr == ASE_NULL) mmgr = ASE_MMGR_GET (); if (mmgr == ASE_NULL)
{
mmgr = ASE_MMGR_GETDFL();
ASE_ASSERTX (mmgr != ASE_NULL,
"Set the memory manager with ASE_MMGR_SETDFL()");
if (mmgr == ASE_NULL) return ASE_NULL;
}
sll = ASE_MALLOC (mmgr, ASE_SIZEOF(ase_sll_t) + extension); sll = ASE_MALLOC (mmgr, ASE_SIZEOF(ase_sll_t) + extension);
if (sll == ASE_NULL) return ASE_NULL; if (sll == ASE_NULL) return ASE_NULL;
@ -41,7 +35,7 @@ ase_sll_t* ase_sll_openmx (
ASE_MEMSET (sll, 0, ASE_SIZEOF(ase_sll_t) + extension); ASE_MEMSET (sll, 0, ASE_SIZEOF(ase_sll_t) + extension);
sll->mmgr = mmgr; sll->mmgr = mmgr;
if (initializer != ASE_NULL) mmgr = initializer (sll, sll + 1); if (initializer) initializer (sll);
return sll; return sll;
} }
@ -63,6 +57,16 @@ void* ase_sll_getextension (ase_sll_t* sll)
return sll + 1; return sll + 1;
} }
ase_mmgr_t* ase_sll_getmmgr (ase_sll_t* sll)
{
return sll->mmgr;
}
void ase_sll_setmmgr (ase_sll_t* sll, ase_mmgr_t* mmgr)
{
sll->mmgr = mmgr;
}
ase_size_t ase_sll_getsize (ase_sll_t* sll) ase_size_t ase_sll_getsize (ase_sll_t* sll)
{ {
return sll->size; return sll->size;

View File

@ -1,11 +1,11 @@
/* /*
* $Id: str_bas.c 197 2008-06-09 06:24:10Z baconevi $ * $Id: str_bas.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
#include <ase/cmn/str.h> #include <ase/cmn/str.h>
#include <ase/cmn/mem.h> #include "mem.h"
ase_size_t ase_strlen (const ase_char_t* str) ase_size_t ase_strlen (const ase_char_t* str)
{ {
@ -80,7 +80,7 @@ ase_size_t ase_strxncpy (
if (bsz <= 0) return 0; if (bsz <= 0) return 0;
if ((n = bsz - 1) > len) n = len; if ((n = bsz - 1) > len) n = len;
ase_memcpy (buf, str, n * ASE_SIZEOF(ase_char_t)); ASE_MEMCPY (buf, str, n * ASE_SIZEOF(ase_char_t));
buf[n] = ASE_T('\0'); buf[n] = ASE_T('\0');
return n; return n;

View File

@ -1,11 +1,10 @@
/* /*
* $Id: str_cnv.c 142 2008-03-18 06:29:25Z baconevi $ * $Id: str_cnv.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
#include <ase/cmn/str.h> #include <ase/cmn/str.h>
#include <ase/cmn/mem.h>
int ase_strtoi (const ase_char_t* str) int ase_strtoi (const ase_char_t* str)
{ {

View File

@ -1,11 +1,11 @@
/* /*
* $Id: str_dyn.c 197 2008-06-09 06:24:10Z baconevi $ * $Id: str_dyn.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
#include <ase/cmn/str.h> #include <ase/cmn/str.h>
#include <ase/cmn/mem.h> #include "mem.h"
ase_str_t* ase_str_open (ase_str_t* str, ase_size_t capa, ase_mmgr_t* mmgr) ase_str_t* ase_str_open (ase_str_t* str, ase_size_t capa, ase_mmgr_t* mmgr)
{ {
@ -129,7 +129,7 @@ ase_size_t ase_str_ncat (ase_str_t* str, const ase_char_t* s, ase_size_t len)
if (tmp == ASE_NULL) return (ase_size_t)-1; if (tmp == ASE_NULL) return (ase_size_t)-1;
if (str->buf != ASE_NULL) if (str->buf != ASE_NULL)
{ {
ase_memcpy (tmp, str->buf, ASE_MEMCPY (tmp, str->buf,
ASE_SIZEOF(ase_char_t)*(str->capa+1)); ASE_SIZEOF(ase_char_t)*(str->capa+1));
ASE_FREE (str->mmgr, str->buf); ASE_FREE (str->mmgr, str->buf);
} }

View File

@ -1,5 +1,5 @@
/* /*
* $Id: err.c 215 2008-06-19 10:27:37Z baconevi $ * $Id: err.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -64,7 +64,7 @@ void ase_lsp_seterror (
{ {
case 0: case 0:
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
lsp->errmsg, lsp->errmsg,
ASE_COUNTOF(lsp->errmsg), ASE_COUNTOF(lsp->errmsg),
errfmt); errfmt);
@ -72,7 +72,7 @@ void ase_lsp_seterror (
case 1: case 1:
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
lsp->errmsg, lsp->errmsg,
ASE_COUNTOF(lsp->errmsg), ASE_COUNTOF(lsp->errmsg),
errfmt, errfmt,
@ -81,7 +81,7 @@ void ase_lsp_seterror (
case 2: case 2:
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
lsp->errmsg, lsp->errmsg,
ASE_COUNTOF(lsp->errmsg), ASE_COUNTOF(lsp->errmsg),
errfmt, errfmt,
@ -91,7 +91,7 @@ void ase_lsp_seterror (
case 3: case 3:
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
lsp->errmsg, lsp->errmsg,
ASE_COUNTOF(lsp->errmsg), ASE_COUNTOF(lsp->errmsg),
errfmt, errfmt,
@ -102,7 +102,7 @@ void ase_lsp_seterror (
case 4: case 4:
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
lsp->errmsg, lsp->errmsg,
ASE_COUNTOF(lsp->errmsg), ASE_COUNTOF(lsp->errmsg),
errfmt, errfmt,
@ -114,7 +114,7 @@ void ase_lsp_seterror (
case 5: case 5:
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
lsp->errmsg, lsp->errmsg,
ASE_COUNTOF(lsp->errmsg), ASE_COUNTOF(lsp->errmsg),
errfmt, errfmt,

View File

@ -1,5 +1,5 @@
/* /*
* $Id: lsp.c 232 2008-06-28 09:38:00Z baconevi $ * $Id: lsp.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -46,14 +46,14 @@ ase_lsp_t* ase_lsp_open (
lsp = (ase_lsp_t*) malloc (ASE_SIZEOF(ase_lsp_t)); lsp = (ase_lsp_t*) malloc (ASE_SIZEOF(ase_lsp_t));
#else #else
lsp = (ase_lsp_t*) prmfns->mmgr.malloc ( lsp = (ase_lsp_t*) prmfns->mmgr.malloc (
prmfns->mmgr.custom_data, ASE_SIZEOF(ase_lsp_t)); prmfns->mmgr.data, ASE_SIZEOF(ase_lsp_t));
#endif #endif
if (lsp == ASE_NULL) return ASE_NULL; if (lsp == ASE_NULL) return ASE_NULL;
/* it uses the built-in ase_lsp_memset because lsp is not /* it uses the built-in ase_lsp_memset because lsp is not
* fully initialized yet */ * fully initialized yet */
ase_memset (lsp, 0, ASE_SIZEOF(ase_lsp_t)); ASE_MEMSET (lsp, 0, ASE_SIZEOF(ase_lsp_t));
ase_memcpy (&lsp->prmfns, prmfns, ASE_SIZEOF(lsp->prmfns)); ASE_MEMCPY (&lsp->prmfns, prmfns, ASE_SIZEOF(lsp->prmfns));
lsp->assoc_data = ASE_NULL; lsp->assoc_data = ASE_NULL;
if (ase_lsp_name_open(&lsp->token.name, 0, lsp) == ASE_NULL) if (ase_lsp_name_open(&lsp->token.name, 0, lsp) == ASE_NULL)

View File

@ -1,5 +1,5 @@
/* /*
* $Id: lsp_i.h 232 2008-06-28 09:38:00Z baconevi $ * $Id: lsp_i.h 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -7,7 +7,7 @@
#ifndef _ASE_LSP_LSPI_H_ #ifndef _ASE_LSP_LSPI_H_
#define _ASE_LSP_LSPI_H_ #define _ASE_LSP_LSPI_H_
#include <ase/cmn/mem.h> #include "../cmn/mem.h"
#include <ase/cmn/str.h> #include <ase/cmn/str.h>
#include <ase/lsp/lsp.h> #include <ase/lsp/lsp.h>

View File

@ -1,5 +1,5 @@
/* /*
* $Id: mem.c 215 2008-06-19 10:27:37Z baconevi $ * $Id: mem.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -16,7 +16,7 @@ ase_lsp_mem_t* ase_lsp_openmem (
mem = (ase_lsp_mem_t*) ASE_LSP_MALLOC (lsp, ASE_SIZEOF(ase_lsp_mem_t)); mem = (ase_lsp_mem_t*) ASE_LSP_MALLOC (lsp, ASE_SIZEOF(ase_lsp_mem_t));
if (mem == ASE_NULL) return ASE_NULL; if (mem == ASE_NULL) return ASE_NULL;
ase_memset (mem, 0, ASE_SIZEOF(ase_lsp_mem_t)); ASE_MEMSET (mem, 0, ASE_SIZEOF(ase_lsp_mem_t));
mem->lsp = lsp; mem->lsp = lsp;
/* create a new root environment frame */ /* create a new root environment frame */

View File

@ -1,5 +1,5 @@
/* /*
* $Id: name.c 215 2008-06-19 10:27:37Z baconevi $ * $Id: name.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -71,7 +71,7 @@ int ase_lsp_name_addc (ase_lsp_name_t* name, ase_cint_t c)
if (space == ASE_NULL) return -1; if (space == ASE_NULL) return -1;
/* don't need to copy up to the terminating null */ /* don't need to copy up to the terminating null */
ase_memcpy (space, name->buf, name->capa*ASE_SIZEOF(ase_char_t)); ASE_MEMCPY (space, name->buf, name->capa*ASE_SIZEOF(ase_char_t));
} }
else else
{ {

View File

@ -1,5 +1,5 @@
/* /*
* $Id: print.c 215 2008-06-19 10:27:37Z baconevi $ * $Id: print.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
@ -45,22 +45,22 @@ static int __print (ase_lsp_t* lsp, const ase_lsp_obj_t* obj, ase_bool_t prt_con
case ASE_LSP_OBJ_INT: case ASE_LSP_OBJ_INT:
#if ASE_SIZEOF_LONG_LONG > 0 #if ASE_SIZEOF_LONG_LONG > 0
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
buf, ASE_COUNTOF(buf), buf, ASE_COUNTOF(buf),
ASE_T("%lld"), (long long)ASE_LSP_IVAL(obj)); ASE_T("%lld"), (long long)ASE_LSP_IVAL(obj));
#elif ASE_SIZEOF___INT64 > 0 #elif ASE_SIZEOF___INT64 > 0
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
buf, ASE_COUNTOF(buf), buf, ASE_COUNTOF(buf),
ASE_T("%I64d"), (__int64)ASE_LSP_IVAL(obj)); ASE_T("%I64d"), (__int64)ASE_LSP_IVAL(obj));
#elif ASE_SIZEOF_LONG > 0 #elif ASE_SIZEOF_LONG > 0
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
buf, ASE_COUNTOF(buf), buf, ASE_COUNTOF(buf),
ASE_T("%ld"), (long)ASE_LSP_IVAL(obj)); ASE_T("%ld"), (long)ASE_LSP_IVAL(obj));
#elif ASE_SIZEOF_INT > 0 #elif ASE_SIZEOF_INT > 0
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
buf, ASE_COUNTOF(buf), buf, ASE_COUNTOF(buf),
ASE_T("%d"), (int)ASE_LSP_IVAL(obj)); ASE_T("%d"), (int)ASE_LSP_IVAL(obj));
#else #else
@ -71,7 +71,7 @@ static int __print (ase_lsp_t* lsp, const ase_lsp_obj_t* obj, ase_bool_t prt_con
case ASE_LSP_OBJ_REAL: case ASE_LSP_OBJ_REAL:
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
buf, ASE_COUNTOF(buf), buf, ASE_COUNTOF(buf),
ASE_T("%Lf"), (long double)ASE_LSP_RVAL(obj)); ASE_T("%Lf"), (long double)ASE_LSP_RVAL(obj));
@ -135,7 +135,7 @@ static int __print (ase_lsp_t* lsp, const ase_lsp_obj_t* obj, ase_bool_t prt_con
default: default:
lsp->prmfns.misc.sprintf ( lsp->prmfns.misc.sprintf (
lsp->prmfns.misc.custom_data, lsp->prmfns.misc.data,
buf, ASE_COUNTOF(buf), buf, ASE_COUNTOF(buf),
ASE_T("unknown object type: %d"), ASE_LSP_TYPE(obj)); ASE_T("unknown object type: %d"), ASE_LSP_TYPE(obj));
OUTPUT_STR (lsp, buf); OUTPUT_STR (lsp, buf);

View File

@ -1,12 +1,12 @@
/* /*
* $Id: http.c 186 2008-06-03 09:00:14Z baconevi $ * $Id: http.c 332 2008-08-18 11:21:48Z baconevi $
* *
* {License} * {License}
*/ */
#include <ase/utl/http.h> #include <ase/utl/http.h>
#include <ase/utl/ctype.h> #include <ase/utl/ctype.h>
#include <ase/cmn/mem.h> #include "../cmn/mem.h"
static int is_http_space (ase_char_t c) static int is_http_space (ase_char_t c)
{ {
@ -152,7 +152,7 @@ ase_char_t* ase_parsehttphdr (ase_char_t* buf, ase_http_hdr_t* hdr)
if (*p == ASE_T('\0')) if (*p == ASE_T('\0'))
{ {
/* no more header line */ /* no more header line */
ase_memset (hdr, 0, ASE_SIZEOF(*hdr)); ASE_MEMSET (hdr, 0, ASE_SIZEOF(*hdr));
return p; return p;
} }