From 8c4383a64f893ff94a3e790b250bc1fe8d61be5b Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Fri, 23 Feb 2007 08:17:51 +0000 Subject: [PATCH] *** empty log message *** --- ase/awk/awk.c | 74 ++++++------ ase/awk/awk.h | 89 +++----------- ase/awk/awk_i.h | 68 +++++------ ase/awk/err.c | 4 +- ase/awk/extio.c | 50 ++++---- ase/awk/extio.h | 4 +- ase/awk/func.c | 86 +++++++------- ase/awk/jni.c | 6 +- ase/awk/makefile.in | 2 +- ase/awk/map.c | 15 +-- ase/awk/misc.c | 216 ++-------------------------------- ase/awk/misc.h | 5 +- ase/awk/parse.c | 173 +++++++++++++-------------- ase/awk/rec.c | 58 +++++----- ase/awk/rex.c | 16 +-- ase/awk/run.c | 244 ++++++++++++++++++++------------------- ase/awk/run.h | 4 +- ase/awk/str.c | 167 --------------------------- ase/awk/str.h | 63 ---------- ase/awk/tab.c | 16 +-- ase/awk/tree.c | 6 +- ase/awk/val.c | 100 ++++++++-------- ase/awk/val.h | 6 +- ase/cmn/makefile.msw.bcc | 2 +- ase/cmn/mem.h | 4 +- ase/cmn/str.c | 5 +- ase/macros.h | 6 +- ase/test/awk/awk.c | 84 +++++++------- ase/types.h | 9 +- 29 files changed, 537 insertions(+), 1045 deletions(-) delete mode 100644 ase/awk/str.c delete mode 100644 ase/awk/str.h diff --git a/ase/awk/awk.c b/ase/awk/awk.c index c4a7b0da..f3585613 100644 --- a/ase/awk/awk.c +++ b/ase/awk/awk.c @@ -1,5 +1,5 @@ /* - * $Id: awk.c,v 1.108 2007-02-19 15:45:02 bacon Exp $ + * $Id: awk.c,v 1.109 2007-02-23 08:17:48 bacon Exp $ * * {License} */ @@ -18,27 +18,27 @@ ase_awk_t* ase_awk_open ( { ase_awk_t* awk; - if (prmfns == ASE_NULL || - prmfns->malloc == ASE_NULL || - prmfns->free == ASE_NULL || - prmfns->is_upper == ASE_NULL || - prmfns->is_lower == ASE_NULL || - prmfns->is_alpha == ASE_NULL || - prmfns->is_digit == ASE_NULL || - prmfns->is_xdigit == ASE_NULL || - prmfns->is_alnum == ASE_NULL || - prmfns->is_space == ASE_NULL || - prmfns->is_print == ASE_NULL || - prmfns->is_graph == ASE_NULL || - prmfns->is_cntrl == ASE_NULL || - prmfns->is_punct == ASE_NULL || - prmfns->to_upper == ASE_NULL || - prmfns->to_lower == ASE_NULL || - prmfns->pow == ASE_NULL || - prmfns->sprintf == ASE_NULL || - prmfns->aprintf == ASE_NULL || - prmfns->dprintf == ASE_NULL || - prmfns->abort == ASE_NULL) + if (prmfns == ASE_NULL || + prmfns->mmgr.malloc == ASE_NULL || + prmfns->mmgr.free == ASE_NULL || + prmfns->ccls.is_upper == ASE_NULL || + prmfns->ccls.is_lower == ASE_NULL || + prmfns->ccls.is_alpha == ASE_NULL || + prmfns->ccls.is_digit == ASE_NULL || + prmfns->ccls.is_xdigit == ASE_NULL || + prmfns->ccls.is_alnum == ASE_NULL || + prmfns->ccls.is_space == ASE_NULL || + prmfns->ccls.is_print == ASE_NULL || + prmfns->ccls.is_graph == ASE_NULL || + prmfns->ccls.is_cntrl == ASE_NULL || + prmfns->ccls.is_punct == ASE_NULL || + prmfns->ccls.to_upper == ASE_NULL || + prmfns->ccls.to_lower == ASE_NULL || + prmfns->misc.pow == ASE_NULL || + prmfns->misc.sprintf == ASE_NULL || + prmfns->misc.aprintf == ASE_NULL || + prmfns->misc.dprintf == ASE_NULL || + prmfns->misc.abort == ASE_NULL) { *errnum = ASE_AWK_ESYSFNS; return ASE_NULL; @@ -47,8 +47,8 @@ ase_awk_t* ase_awk_open ( #if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG) awk = (ase_awk_t*) malloc (ASE_SIZEOF(ase_awk_t)); #else - awk = (ase_awk_t*) prmfns->malloc ( - ASE_SIZEOF(ase_awk_t), prmfns->custom_data); + awk = (ase_awk_t*) prmfns->mmgr.malloc ( + &prmfns->mmgr, ASE_SIZEOF(ase_awk_t)); #endif if (awk == ASE_NULL) { @@ -58,17 +58,11 @@ ase_awk_t* ase_awk_open ( /* it uses the built-in ase_awk_memset because awk is not * fully initialized yet */ - ase_awk_memset (awk, 0, ASE_SIZEOF(ase_awk_t)); + ase_memset (awk, 0, ASE_SIZEOF(ase_awk_t)); + ase_memcpy (&awk->prmfns, prmfns, ASE_SIZEOF(awk->prmfns)); - if (prmfns->memcpy == ASE_NULL) - { - ase_awk_memcpy (&awk->prmfns, prmfns, ASE_SIZEOF(awk->prmfns)); - awk->prmfns.memcpy = ase_awk_memcpy; - } - else prmfns->memcpy (&awk->prmfns, prmfns, ASE_SIZEOF(awk->prmfns)); - if (prmfns->memset == ASE_NULL) awk->prmfns.memset = ase_awk_memset; - - if (ase_awk_str_open (&awk->token.name, 128, awk) == ASE_NULL) + if (ase_str_open ( + &awk->token.name, 128, &awk->prmfns.mmgr) == ASE_NULL) { ASE_AWK_FREE (awk, awk); *errnum = ASE_AWK_ENOMEM; @@ -79,7 +73,7 @@ ase_awk_t* ase_awk_open ( if (ase_awk_map_open ( &awk->tree.afns, awk, 256, __free_afn, awk) == ASE_NULL) { - ase_awk_str_close (&awk->token.name); + ase_str_close (&awk->token.name); ASE_AWK_FREE (awk, awk); *errnum = ASE_AWK_ENOMEM; return ASE_NULL; @@ -87,7 +81,7 @@ ase_awk_t* ase_awk_open ( if (ase_awk_tab_open (&awk->parse.globals, awk) == ASE_NULL) { - ase_awk_str_close (&awk->token.name); + ase_str_close (&awk->token.name); ase_awk_map_close (&awk->tree.afns); ASE_AWK_FREE (awk, awk); *errnum = ASE_AWK_ENOMEM; @@ -96,7 +90,7 @@ ase_awk_t* ase_awk_open ( if (ase_awk_tab_open (&awk->parse.locals, awk) == ASE_NULL) { - ase_awk_str_close (&awk->token.name); + ase_str_close (&awk->token.name); ase_awk_map_close (&awk->tree.afns); ase_awk_tab_close (&awk->parse.globals); ASE_AWK_FREE (awk, awk); @@ -106,7 +100,7 @@ ase_awk_t* ase_awk_open ( if (ase_awk_tab_open (&awk->parse.params, awk) == ASE_NULL) { - ase_awk_str_close (&awk->token.name); + ase_str_close (&awk->token.name); ase_awk_map_close (&awk->tree.afns); ase_awk_tab_close (&awk->parse.globals); ase_awk_tab_close (&awk->parse.locals); @@ -186,7 +180,7 @@ int ase_awk_close (ase_awk_t* awk) ase_awk_tab_close (&awk->parse.globals); ase_awk_tab_close (&awk->parse.locals); ase_awk_tab_close (&awk->parse.params); - ase_awk_str_close (&awk->token.name); + ase_str_close (&awk->token.name); /* ASE_AWK_ALLOC, ASE_AWK_FREE, etc can not be used * from the next line onwards */ @@ -203,7 +197,7 @@ int ase_awk_clear (ase_awk_t* awk) return -1; } - ASE_AWK_MEMSET (awk, &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.ungotc_count = 0; awk->src.lex.line = 1; diff --git a/ase/awk/awk.h b/ase/awk/awk.h index dadfe3ae..91d018c8 100644 --- a/ase/awk/awk.h +++ b/ase/awk/awk.h @@ -1,5 +1,5 @@ /* - * $Id: awk.h,v 1.190 2007-02-18 11:12:18 bacon Exp $ + * $Id: awk.h,v 1.191 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -22,14 +22,6 @@ 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 void* (*ase_awk_malloc_t) (ase_size_t n, void* custom_data); -typedef void* (*ase_awk_realloc_t) (void* ptr, ase_size_t n, void* custom_data); -typedef void (*ase_awk_free_t) (void* ptr, void* custom_data); -typedef void* (*ase_awk_memcpy_t) (void* dst, const void* src, ase_size_t n); -typedef void* (*ase_awk_memset_t) (void* dst, int val, ase_size_t n); - -typedef ase_bool_t (*ase_awk_isctype_t) (ase_cint_t c); -typedef ase_cint_t (*ase_awk_toctype_t) (ase_cint_t c); typedef ase_real_t (*ase_awk_pow_t) (ase_real_t x, ase_real_t y); typedef int (*ase_awk_sprintf_t) ( @@ -73,41 +65,25 @@ struct ase_awk_extio_t struct ase_awk_prmfns_t { - /* memory allocation/deallocation */ - ase_awk_malloc_t malloc; /* required */ - ase_awk_realloc_t realloc; /* optional */ - ase_awk_free_t free; /* required */ - ase_awk_memcpy_t memcpy; /* optional */ - ase_awk_memset_t memset; /* optional */ + ase_mmgr_t mmgr; + ase_ccls_t ccls; - /* character classes */ - ase_awk_isctype_t is_upper; /* required */ - ase_awk_isctype_t is_lower; /* required */ - ase_awk_isctype_t is_alpha; /* required */ - ase_awk_isctype_t is_digit; /* required */ - ase_awk_isctype_t is_xdigit; /* required */ - ase_awk_isctype_t is_alnum; /* required */ - ase_awk_isctype_t is_space; /* required */ - ase_awk_isctype_t is_print; /* required */ - ase_awk_isctype_t is_graph; /* required */ - ase_awk_isctype_t is_cntrl; /* required */ - ase_awk_isctype_t is_punct; /* required */ - ase_awk_toctype_t to_upper; /* required */ - ase_awk_toctype_t to_lower; /* required */ + struct + { + /* utilities */ + ase_awk_pow_t pow; /* required */ + ase_awk_sprintf_t sprintf; /* required */ + ase_awk_aprintf_t aprintf; /* required in the debug mode */ + ase_awk_dprintf_t dprintf; /* required in the debug mode */ + ase_awk_abort_t abort; /* required in the debug mode */ - /* utilities */ - ase_awk_pow_t pow; /* required */ - ase_awk_sprintf_t sprintf; /* required */ - ase_awk_aprintf_t aprintf; /* required in the debug mode */ - ase_awk_dprintf_t dprintf; /* required in the debug mode */ - ase_awk_abort_t abort; /* required in the debug mode */ + /* thread lock */ + ase_awk_lock_t lock; /* required if multi-threaded */ + ase_awk_lock_t unlock; /* required if multi-threaded */ - /* thread lock */ - 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 */ - void* custom_data; /* optional */ + /* user-defined data passed to selected system functions */ + void* custom_data; /* optional */ + } misc; }; struct ase_awk_srcios_t @@ -521,37 +497,6 @@ ase_size_t ase_awk_longtostr ( ase_long_t value, int radix, const ase_char_t* prefix, ase_char_t* buf, ase_size_t size); -/* string functions exported by awk.h */ -ase_char_t* ase_awk_strdup ( - ase_awk_t* awk, const ase_char_t* str); -ase_char_t* ase_awk_strxdup ( - ase_awk_t* awk, const ase_char_t* str, ase_size_t len); -ase_char_t* ase_awk_strxdup2 ( - ase_awk_t* awk, - const ase_char_t* str1, ase_size_t len1, - const ase_char_t* str2, ase_size_t len2); - -ase_size_t ase_awk_strlen (const ase_char_t* str); -ase_size_t ase_awk_strcpy (ase_char_t* buf, const ase_char_t* str); -ase_size_t ase_awk_strxcpy ( - ase_char_t* buf, ase_size_t bsz, const ase_char_t* str); -ase_size_t ase_awk_strncpy ( - ase_char_t* buf, const ase_char_t* str, ase_size_t len); -int ase_awk_strcmp (const ase_char_t* s1, const ase_char_t* s2); - -int ase_awk_strxncmp ( - const ase_char_t* s1, ase_size_t len1, - const ase_char_t* s2, ase_size_t len2); - -int ase_awk_strxncasecmp ( - ase_awk_t* awk, - const ase_char_t* s1, ase_size_t len1, - const ase_char_t* s2, ase_size_t len2); - -ase_char_t* ase_awk_strxnstr ( - const ase_char_t* str, ase_size_t strsz, - const ase_char_t* sub, ase_size_t subsz); - /* abort function for assertion. use ASE_AWK_ASSERT instead */ int ase_awk_assertfail (ase_awk_t* awk, const ase_char_t* expr, const ase_char_t* desc, diff --git a/ase/awk/awk_i.h b/ase/awk/awk_i.h index cd3cf1a7..00c1a5d4 100644 --- a/ase/awk/awk_i.h +++ b/ase/awk/awk_i.h @@ -1,5 +1,5 @@ /* - * $Id: awk_i.h,v 1.101 2007-02-07 14:51:44 bacon Exp $ + * $Id: awk_i.h,v 1.102 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -7,11 +7,13 @@ #ifndef _ASE_AWK_AWKI_H_ #define _ASE_AWK_AWKI_H_ +#include +#include + typedef struct ase_awk_chain_t ase_awk_chain_t; typedef struct ase_awk_tree_t ase_awk_tree_t; #include -#include #include #include #include @@ -38,50 +40,36 @@ typedef struct ase_awk_tree_t ase_awk_tree_t; #define ASE_AWK_MAX_LOCALS 9999 #define ASE_AWK_MAX_PARAMS 9999 -#if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG) - #define _CRTDBG_MAP_ALLOC - #include +#define ASE_AWK_MALLOC(awk,size) ASE_MALLOC(&(awk)->prmfns.mmgr,size) +#define ASE_AWK_REALLOC(awk,ptr,size) ASE_REALLOC(&(awk)->prmfns.mmgr,ptr,size) +#define ASE_AWK_FREE(awk,ptr) ASE_FREE(&(awk)->prmfns.mmgr,ptr) - #define ASE_AWK_MALLOC(awk,size) malloc (size) - #define ASE_AWK_REALLOC(awk,ptr,size) realloc (ptr, size) - #define ASE_AWK_FREE(awk,ptr) free (ptr) -#else - #define ASE_AWK_MALLOC(awk,size) \ - (awk)->prmfns.malloc (size, (awk)->prmfns.custom_data) - #define ASE_AWK_REALLOC(awk,ptr,size) \ - (awk)->prmfns.realloc (ptr, size, (awk)->prmfns.custom_data) - #define ASE_AWK_FREE(awk,ptr) \ - (awk)->prmfns.free (ptr, (awk)->prmfns.custom_data) -#endif +#define ASE_AWK_ISUPPER(awk,c) ASE_ISUPPER(&(awk)->prmfns.ccls,c) +#define ASE_AWK_ISLOWER(awk,c) ASE_ISLOWER(&(awk)->prmfns.ccls,c) +#define ASE_AWK_ISALPHA(awk,c) ASE_ISALPHA(&(awk)->prmfns.ccls,c) +#define ASE_AWK_ISDIGIT(awk,c) ASE_ISDIGIT(&(awk)->prmfns.ccls,c) +#define ASE_AWK_ISXDIGIT(awk,c) ASE_ISXDIGIT(&(awk)->prmfns.ccls,c) +#define ASE_AWK_ISALNUM(awk,c) ASE_ISALNUM(&(awk)->prmfns.ccls,c) +#define ASE_AWK_ISSPACE(awk,c) ASE_ISSPACE(&(awk)->prmfns.ccls,c) +#define ASE_AWK_ISPRINT(awk,c) ASE_ISPRINT(&(awk)->prmfns.ccls,c) +#define ASE_AWK_ISGRAPH(awk,c) ASE_ISGRAPH(&(awk)->prmfns.ccls,c) +#define ASE_AWK_ISCNTRL(awk,c) ASE_ISCNTRL(&(awk)->prmfns.ccls,c) +#define ASE_AWK_ISPUNCT(awk,c) ASE_ISPUNCT(&(awk)->prmfns.ccls,c) +#define ASE_AWK_TOUPPER(awk,c) ASE_TOUPPER(&(awk)->prmfns.ccls,c) +#define ASE_AWK_TOLOWER(awk,c) ASE_TOLOWER(&(awk)->prmfns.ccls,c) #define ASE_AWK_LOCK(awk) \ do { \ - if ((awk)->prmfns.lock != ASE_NULL) \ - (awk)->prmfns.lock ((awk)->prmfns.custom_data); \ + if ((awk)->prmfns.misc.lock != ASE_NULL) \ + (awk)->prmfns.misc.lock ((awk)->prmfns.misc.custom_data); \ } while (0) #define ASE_AWK_UNLOCK(awk) \ do { \ - if ((awk)->prmfns.unlock != ASE_NULL) \ - (awk)->prmfns.unlock ((awk)->prmfns.custom_data); \ + if ((awk)->prmfns.misc.unlock != ASE_NULL) \ + (awk)->prmfns.misc.unlock ((awk)->prmfns.misc.custom_data); \ } while (0) -#define ASE_AWK_ISUPPER(awk,c) (awk)->prmfns.is_upper(c) -#define ASE_AWK_ISLOWER(awk,c) (awk)->prmfns.is_lower(c) -#define ASE_AWK_ISALPHA(awk,c) (awk)->prmfns.is_alpha(c) -#define ASE_AWK_ISDIGIT(awk,c) (awk)->prmfns.is_digit(c) -#define ASE_AWK_ISXDIGIT(awk,c) (awk)->prmfns.is_xdigit(c) -#define ASE_AWK_ISALNUM(awk,c) (awk)->prmfns.is_alnum(c) -#define ASE_AWK_ISSPACE(awk,c) (awk)->prmfns.is_space(c) -#define ASE_AWK_ISPRINT(awk,c) (awk)->prmfns.is_print(c) -#define ASE_AWK_ISGRAPH(awk,c) (awk)->prmfns.is_graph(c) -#define ASE_AWK_ISCNTRL(awk,c) (awk)->prmfns.is_cntrl(c) -#define ASE_AWK_ISPUNCT(awk,c) (awk)->prmfns.is_punct(c) -#define ASE_AWK_TOUPPER(awk,c) (awk)->prmfns.to_upper(c) -#define ASE_AWK_TOLOWER(awk,c) (awk)->prmfns.to_lower(c) - -#define ASE_AWK_MEMCPY(awk,dst,src,len) (awk)->prmfns.memcpy (dst, src, len) -#define ASE_AWK_MEMSET(awk,dst,val,len) (awk)->prmfns.memset (dst, val, len) struct ase_awk_tree_t { @@ -178,7 +166,7 @@ struct ase_awk_t } prev; int type; - ase_awk_str_t name; + ase_str_t name; ase_size_t line; ase_size_t column; } token; @@ -258,7 +246,7 @@ struct ase_awk_run_t ase_size_t buf_len; ase_bool_t eof; - ase_awk_str_t line; + ase_str_t line; ase_awk_val_t* d0; /* $0 */ ase_size_t maxflds; @@ -316,8 +304,8 @@ struct ase_awk_run_t struct { - ase_awk_str_t fmt; - ase_awk_str_t out; + ase_str_t fmt; + ase_str_t out; struct { diff --git a/ase/awk/err.c b/ase/awk/err.c index a706e734..f1013b53 100644 --- a/ase/awk/err.c +++ b/ase/awk/err.c @@ -1,5 +1,5 @@ /* - * $Id: err.c,v 1.73 2007-02-11 04:44:39 bacon Exp $ + * $Id: err.c,v 1.74 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -55,7 +55,7 @@ void ase_awk_seterror ( if (errmsg == ASE_NULL) awk->errmsg[0] = ASE_T('\0'); else if (awk->errmsg != errmsg) { - ase_awk_strxcpy ( + ase_strxcpy ( awk->errmsg, ASE_COUNTOF(awk->errmsg), errmsg); } } diff --git a/ase/awk/extio.c b/ase/awk/extio.c index 460e36ca..52518994 100644 --- a/ase/awk/extio.c +++ b/ase/awk/extio.c @@ -1,5 +1,5 @@ /* - * $Id: extio.c,v 1.71 2007-02-03 10:47:40 bacon Exp $ + * $Id: extio.c,v 1.72 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -76,7 +76,7 @@ static int __out_mask_map[] = int ase_awk_readextio ( ase_awk_run_t* run, int in_type, - const ase_char_t* name, ase_awk_str_t* buf) + const ase_char_t* name, ase_str_t* buf) { ase_awk_extio_t* p = run->extio.chain; ase_awk_io_t handler; @@ -110,7 +110,7 @@ int ase_awk_readextio ( while (p != ASE_NULL) { if (p->type == (extio_type | extio_mask) && - ase_awk_strcmp (p->name,name) == 0) break; + ase_strcmp (p->name,name) == 0) break; p = p->next; } @@ -124,7 +124,7 @@ int ase_awk_readextio ( return -1; } - p->name = ase_awk_strdup (run->awk, name); + p->name = ase_strdup (name, &run->awk->prmfns.mmgr); if (p->name == ASE_NULL) { ASE_AWK_FREE (run->awk, p); @@ -177,7 +177,7 @@ int ase_awk_readextio ( } /* ready to read a line */ - ase_awk_str_clear (buf); + ase_str_clear (buf); /* get the record separator */ rs = ase_awk_getglobal (run, ASE_AWK_GLOBAL_RS); @@ -215,7 +215,7 @@ int ase_awk_readextio ( if (p->in.eof) { - if (ASE_AWK_STR_LEN(buf) == 0) ret = 0; + if (ASE_STR_LEN(buf) == 0) ret = 0; break; } @@ -231,7 +231,7 @@ int ase_awk_readextio ( if (n == 0) { p->in.eof = ase_true; - if (ASE_AWK_STR_LEN(buf) == 0) ret = 0; + if (ASE_STR_LEN(buf) == 0) ret = 0; break; } @@ -248,9 +248,9 @@ int ase_awk_readextio ( if (c == ASE_T('\n')) { if (pc == ASE_T('\r') && - ASE_AWK_STR_LEN(buf) > 0) + ASE_STR_LEN(buf) > 0) { - ASE_AWK_STR_LEN(buf) -= 1; + ASE_STR_LEN(buf) -= 1; } break; } @@ -261,15 +261,15 @@ int ase_awk_readextio ( if (c == ASE_T('\n')) { if (pc == ASE_T('\r') && - ASE_AWK_STR_LEN(buf) > 0) + ASE_STR_LEN(buf) > 0) { - ASE_AWK_STR_LEN(buf) -= 1; + ASE_STR_LEN(buf) -= 1; } } if (line_len == 0 && c == ASE_T('\n')) { - if (ASE_AWK_STR_LEN(buf) <= 0) + if (ASE_STR_LEN(buf) <= 0) { /* if the record is empty when a blank * line is encountered, the line @@ -281,7 +281,7 @@ int ase_awk_readextio ( /* when a blank line is encountered, * it needs to snip off the line * terminator of the previous line */ - ASE_AWK_STR_LEN(buf) -= 1; + ASE_STR_LEN(buf) -= 1; break; } } @@ -299,7 +299,7 @@ int ase_awk_readextio ( n = ase_awk_matchrex ( run->awk, run->global.rs, ((run->global.ignorecase)? ASE_AWK_REX_IGNORECASE: 0), - ASE_AWK_STR_BUF(buf), ASE_AWK_STR_LEN(buf), + ASE_STR_BUF(buf), ASE_STR_LEN(buf), &match_ptr, &match_len, &run->errnum); if (n == -1) { @@ -312,15 +312,15 @@ int ase_awk_readextio ( /* the match should be found at the end of * the current buffer */ ASE_AWK_ASSERT (run->awk, - ASE_AWK_STR_BUF(buf) + ASE_AWK_STR_LEN(buf) == + ASE_STR_BUF(buf) + ASE_STR_LEN(buf) == match_ptr + match_len); - ASE_AWK_STR_LEN(buf) -= match_len; + ASE_STR_LEN(buf) -= match_len; break; } } - if (ase_awk_str_ccat (buf, c) == (ase_size_t)-1) + if (ase_str_ccat (buf, c) == (ase_size_t)-1) { ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); ret = -1; @@ -440,7 +440,7 @@ int ase_awk_writeextio_str ( * print "1111" > "1.tmp" */ if (p->type == (extio_type | extio_mask) && - ase_awk_strcmp (p->name, name) == 0) break; + ase_strcmp (p->name, name) == 0) break; p = p->next; } @@ -455,7 +455,7 @@ int ase_awk_writeextio_str ( return -1; } - p->name = ase_awk_strdup (run->awk, name); + p->name = ase_strdup (name, &run->awk->prmfns.mmgr); if (p->name == ASE_NULL) { ASE_AWK_FREE (run->awk, p); @@ -566,7 +566,7 @@ int ase_awk_flushextio ( while (p != ASE_NULL) { if (p->type == (extio_type | extio_mask) && - (name == ASE_NULL || ase_awk_strcmp (p->name, name) == 0)) + (name == ASE_NULL || ase_strcmp (p->name, name) == 0)) { n = handler (ASE_AWK_IO_FLUSH, p, ASE_NULL, 0); @@ -619,7 +619,7 @@ int ase_awk_nextextio_read ( while (p != ASE_NULL) { if (p->type == (extio_type | extio_mask) && - ase_awk_strcmp (p->name,name) == 0) break; + ase_strcmp (p->name,name) == 0) break; p = p->next; } @@ -696,7 +696,7 @@ int ase_awk_nextextio_write ( while (p != ASE_NULL) { if (p->type == (extio_type | extio_mask) && - ase_awk_strcmp (p->name,name) == 0) break; + ase_strcmp (p->name,name) == 0) break; p = p->next; } @@ -783,7 +783,7 @@ int ase_awk_closeextio_read ( while (p != ASE_NULL) { if (p->type == (extio_type | extio_mask) && - ase_awk_strcmp (p->name, name) == 0) + ase_strcmp (p->name, name) == 0) { ase_awk_io_t handler; @@ -845,7 +845,7 @@ int ase_awk_closeextio_write ( while (p != ASE_NULL) { if (p->type == (extio_type | extio_mask) && - ase_awk_strcmp (p->name, name) == 0) + ase_strcmp (p->name, name) == 0) { ase_awk_io_t handler; @@ -885,7 +885,7 @@ int ase_awk_closeextio (ase_awk_run_t* run, const ase_char_t* name) { /* it handles the first that matches the given name * regardless of the extio type */ - if (ase_awk_strcmp (p->name, name) == 0) + if (ase_strcmp (p->name, name) == 0) { ase_awk_io_t handler; diff --git a/ase/awk/extio.h b/ase/awk/extio.h index 76b25c8d..1f135d9e 100644 --- a/ase/awk/extio.h +++ b/ase/awk/extio.h @@ -1,5 +1,5 @@ /* - * $Id: extio.h,v 1.17 2007-02-03 10:47:40 bacon Exp $ + * $Id: extio.h,v 1.18 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -17,7 +17,7 @@ extern "C" int ase_awk_readextio ( ase_awk_run_t* run, int in_type, - const ase_char_t* name, ase_awk_str_t* buf); + const ase_char_t* name, ase_str_t* buf); int ase_awk_writeextio_val ( ase_awk_run_t* run, int out_type, diff --git a/ase/awk/func.c b/ase/awk/func.c index 8b21782f..12f62fa7 100644 --- a/ase/awk/func.c +++ b/ase/awk/func.c @@ -1,5 +1,5 @@ /* - * $Id: func.c,v 1.95 2007-02-07 14:08:07 bacon Exp $ + * $Id: func.c,v 1.96 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -53,7 +53,7 @@ void* ase_awk_addbfn ( if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL) { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("'%.*s' added already"), name_len, name); ase_awk_seterror (awk, ASE_AWK_EEXIST, 0, awk->errmsg); @@ -67,7 +67,7 @@ void* ase_awk_addbfn ( return ASE_NULL; } - p->name.ptr = ase_awk_strxdup (awk, name, name_len); + p->name.ptr = ase_strxdup (name, name_len, &awk->prmfns.mmgr); if (p->name.ptr == ASE_NULL) { ASE_AWK_FREE (awk, p); @@ -82,7 +82,7 @@ void* ase_awk_addbfn ( if (arg_spec == ASE_NULL) p->arg.spec = ASE_NULL; else { - p->arg.spec = ase_awk_strdup (awk, arg_spec); + p->arg.spec = ase_strdup (arg_spec, &awk->prmfns.mmgr); if (p->arg.spec == ASE_NULL) { ASE_AWK_FREE (awk, p->name.ptr); @@ -105,7 +105,7 @@ int ase_awk_delbfn (ase_awk_t* awk, const ase_char_t* name, ase_size_t name_len) for (p = awk->bfn.user; p != ASE_NULL; p = p->next) { - if (ase_awk_strxncmp ( + if (ase_strxncmp ( p->name.ptr, p->name.len, name, name_len) == 0) { if (pp == ASE_NULL) @@ -154,7 +154,7 @@ ase_awk_bfn_t* ase_awk_getbfn ( if (p->valid != 0 && (awk->option & p->valid) == 0) continue; - if (ase_awk_strxncmp ( + if (ase_strxncmp ( p->name.ptr, p->name.len, name, len) == 0) return p; } @@ -163,7 +163,7 @@ ase_awk_bfn_t* ase_awk_getbfn ( if (p->valid != 0 && (awk->option & p->valid) == 0) continue; - if (ase_awk_strxncmp ( + if (ase_strxncmp ( p->name.ptr, p->name.len, name, len) == 0) return p; } @@ -410,7 +410,7 @@ static int __bfn_index ( } } - ptr = ase_awk_strxnstr (str0, len0, str1, len1); + ptr = ase_strxnstr (str0, len0, str1, len1); idx = (ptr == ASE_NULL)? -1: (ase_long_t)(ptr - str0); if (ase_awk_getoption(run->awk) & ASE_AWK_STRBASEONE) idx = idx + 1; @@ -880,7 +880,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) int opt, n; const ase_char_t* cur_ptr, * mat_ptr; ase_size_t cur_len, mat_len, i, m; - ase_awk_str_t new; + ase_str_t new; ase_long_t sub_count; nargs = ase_awk_getnargs (run); @@ -944,8 +944,8 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) if (a2 == ASE_NULL) { /* is this correct? any needs to use inrec.d0? */ - a2_ptr = ASE_AWK_STR_BUF(&run->inrec.line); - a2_len = ASE_AWK_STR_LEN(&run->inrec.line); + a2_ptr = ASE_STR_BUF(&run->inrec.line); + a2_len = ASE_STR_LEN(&run->inrec.line); } else if (((ase_awk_val_ref_t*)a2)->id == ASE_AWK_VAL_REF_POS) { @@ -954,8 +954,8 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) idx = (ase_size_t)((ase_awk_val_ref_t*)a2)->adr; if (idx == 0) { - a2_ptr = ASE_AWK_STR_BUF(&run->inrec.line); - a2_len = ASE_AWK_STR_LEN(&run->inrec.line); + a2_ptr = ASE_STR_BUF(&run->inrec.line); + a2_len = ASE_STR_LEN(&run->inrec.line); } else if (idx <= run->inrec.nflds) { @@ -998,7 +998,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) } } - if (ase_awk_str_open (&new, a2_len, run->awk) == ASE_NULL) + if (ase_str_open (&new, a2_len, &run->awk->prmfns.mmgr) == ASE_NULL) { FREE_A_PTRS (run->awk); ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); @@ -1010,7 +1010,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) rex = ase_awk_buildrex (run->awk, a0_ptr, a0_len, &run->errnum); if (rex == ASE_NULL) { - ase_awk_str_close (&new); + ase_str_close (&new); FREE_A_PTRS (run->awk); return -1; } @@ -1034,7 +1034,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) if (n == -1) { FREE_A0_REX (run->awk, rex); - ase_awk_str_close (&new); + ase_str_close (&new); FREE_A_PTRS (run->awk); return -1; } @@ -1042,22 +1042,22 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) if (n == 0) { /* no more match found */ - if (ase_awk_str_ncat ( + if (ase_str_ncat ( &new, cur_ptr, cur_len) == (ase_size_t)-1) { FREE_A0_REX (run->awk, rex); - ase_awk_str_close (&new); + ase_str_close (&new); FREE_A_PTRS (run->awk); return -1; } break; } - if (ase_awk_str_ncat ( + if (ase_str_ncat ( &new, cur_ptr, mat_ptr - cur_ptr) == (ase_size_t)-1) { FREE_A0_REX (run->awk, rex); - ase_awk_str_close (&new); + ase_str_close (&new); FREE_A_PTRS (run->awk); return -1; } @@ -1068,22 +1068,22 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) a1_ptr[i] == ASE_T('\\') && a1_ptr[i+1] == ASE_T('&')) { - m = ase_awk_str_ccat (&new, ASE_T('&')); + m = ase_str_ccat (&new, ASE_T('&')); i++; } else if (a1_ptr[i] == ASE_T('&')) { - m = ase_awk_str_ncat (&new, mat_ptr, mat_len); + m = ase_str_ncat (&new, mat_ptr, mat_len); } else { - m = ase_awk_str_ccat (&new, a1_ptr[i]); + m = ase_str_ccat (&new, a1_ptr[i]); } if (m == (ase_size_t)-1) { FREE_A0_REX (run->awk, rex); - ase_awk_str_close (&new); + ase_str_close (&new); FREE_A_PTRS (run->awk); return -1; } @@ -1101,9 +1101,9 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) if (a2 == ASE_NULL) { if (ase_awk_setrec (run, 0, - ASE_AWK_STR_BUF(&new), ASE_AWK_STR_LEN(&new)) == -1) + ASE_STR_BUF(&new), ASE_STR_LEN(&new)) == -1) { - ase_awk_str_close (&new); + ase_str_close (&new); FREE_A_PTRS (run->awk); return -1; } @@ -1114,11 +1114,11 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) n = ase_awk_setrec ( run, (ase_size_t)((ase_awk_val_ref_t*)a2)->adr, - ASE_AWK_STR_BUF(&new), ASE_AWK_STR_LEN(&new)); + ASE_STR_BUF(&new), ASE_STR_LEN(&new)); if (n == -1) { - ase_awk_str_close (&new); + ase_str_close (&new); FREE_A_PTRS (run->awk); return -1; } @@ -1126,10 +1126,10 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) else { v = ase_awk_makestrval (run, - ASE_AWK_STR_BUF(&new), ASE_AWK_STR_LEN(&new)); + ASE_STR_BUF(&new), ASE_STR_LEN(&new)); if (v == ASE_NULL) { - ase_awk_str_close (&new); + ase_str_close (&new); FREE_A_PTRS (run->awk); return -1; } @@ -1140,7 +1140,7 @@ static int __substitute (ase_awk_run_t* run, ase_long_t max_count) } } - ase_awk_str_close (&new); + ase_str_close (&new); FREE_A_PTRS (run->awk); #undef FREE_A0_REX @@ -1295,19 +1295,19 @@ static int __bfn_sprintf ( ase_awk_val_t* a0; ase_char_t* str0, * ptr; ase_size_t len0, len; - ase_awk_str_t out, fbu; + ase_str_t out, fbu; nargs = ase_awk_getnargs (run); ASE_AWK_ASSERT (run->awk, nargs > 0); - if (ase_awk_str_open (&out, 256, run->awk) == ASE_NULL) + if (ase_str_open (&out, 256, &run->awk->prmfns.mmgr) == ASE_NULL) { ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); return -1; } - if (ase_awk_str_open (&fbu, 256, run->awk) == ASE_NULL) + if (ase_str_open (&fbu, 256, &run->awk->prmfns.mmgr) == ASE_NULL) { - ase_awk_str_close (&out); + ase_str_close (&out); ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); return -1; } @@ -1324,8 +1324,8 @@ static int __bfn_sprintf ( run, a0, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &len0); if (str0 == ASE_NULL) { - ase_awk_str_close (&fbu); - ase_awk_str_close (&out); + ase_str_close (&fbu); + ase_str_close (&out); return -1; } } @@ -1335,22 +1335,22 @@ static int __bfn_sprintf ( if (a0->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str0); if (ptr == ASE_NULL) { - ase_awk_str_close (&fbu); - ase_awk_str_close (&out); + ase_str_close (&fbu); + ase_str_close (&out); return -1; } a0 = ase_awk_makestrval_nodup (run, ptr, len); if (a0 == ASE_NULL) { - ase_awk_str_close (&fbu); - ase_awk_str_close (&out); + ase_str_close (&fbu); + ase_str_close (&out); ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM); return -1; } - ase_awk_str_close (&fbu); - ase_awk_str_forfeit (&out); + ase_str_close (&fbu); + ase_str_forfeit (&out); ase_awk_setretval (run, a0); return 0; } diff --git a/ase/awk/jni.c b/ase/awk/jni.c index 0a5958d3..940fb732 100644 --- a/ase/awk/jni.c +++ b/ase/awk/jni.c @@ -1,5 +1,5 @@ /* - * $Id: jni.c,v 1.66 2007-02-03 10:47:41 bacon Exp $ + * $Id: jni.c,v 1.67 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -184,7 +184,7 @@ static void throw_exception ( return; } - len = ase_awk_strlen(msg); + len = ase_strlen(msg); if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) { ase_size_t i; @@ -940,7 +940,7 @@ static ase_ssize_t __java_open_extio ( } /* construct the name */ - len = ase_awk_strlen(extio->name); + len = ase_strlen(extio->name); if (len > 0 && ASE_SIZEOF(jchar) != ASE_SIZEOF(ase_char_t)) { ase_size_t i; diff --git a/ase/awk/makefile.in b/ase/awk/makefile.in index dfa79bfa..9d765a57 100644 --- a/ase/awk/makefile.in +++ b/ase/awk/makefile.in @@ -1,6 +1,6 @@ OUT = aseawk -C_SRCS = awk.c err.c tree.c str.c tab.c map.c parse.c \ +C_SRCS = awk.c err.c tree.c tab.c map.c parse.c \ run.c rec.c val.c func.c misc.c extio.c rex.c C_OBJS = $(C_SRCS:.c=.o) diff --git a/ase/awk/map.c b/ase/awk/map.c index d19865c1..8d29686e 100644 --- a/ase/awk/map.c +++ b/ase/awk/map.c @@ -1,5 +1,5 @@ /* - * $Id: map.c,v 1.35 2007-02-03 10:47:41 bacon Exp $ + * $Id: map.c,v 1.36 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -80,9 +80,6 @@ void ase_awk_map_clear (ase_awk_map_t* map) map->buck[i] = ASE_NULL; } - - ASE_AWK_ASSERTX (map->awk, map->size == 0, - "the map should not contain any pairs of a key and a value after it has been cleared"); } ase_size_t ase_awk_map_getsize (ase_awk_map_t* map) @@ -102,7 +99,7 @@ ase_awk_pair_t* ase_awk_map_get ( while (pair != ASE_NULL) { - if (ase_awk_strxncmp ( + if (ase_strxncmp ( pair->key, pair->key_len, key, key_len) == 0) return pair; @@ -135,7 +132,7 @@ int ase_awk_map_putx ( while (pair != ASE_NULL) { - if (ase_awk_strxncmp ( + if (ase_strxncmp ( pair->key, pair->key_len, key, key_len) == 0) { if (px != ASE_NULL) @@ -155,7 +152,7 @@ int ase_awk_map_putx ( /*pair->key = key;*/ /* duplicate the key if it is new */ - pair->key = ase_awk_strxdup (map->awk, key, key_len); + pair->key = ase_strxdup (key, key_len, &map->awk->prmfns.mmgr); if (pair->key == ASE_NULL) { ASE_AWK_FREE (map->awk, pair); @@ -183,7 +180,7 @@ ase_awk_pair_t* ase_awk_map_set ( while (pair != ASE_NULL) { - if (ase_awk_strxncmp ( + if (ase_strxncmp ( pair->key, pair->key_len, key, key_len) == 0) { return ase_awk_map_setpair (map, pair, val); @@ -233,7 +230,7 @@ int ase_awk_map_remove (ase_awk_map_t* map, ase_char_t* key, ase_size_t key_len) while (pair != ASE_NULL) { - if (ase_awk_strxncmp ( + if (ase_strxncmp ( pair->key, pair->key_len, key, key_len) == 0) { if (prev == ASE_NULL) diff --git a/ase/awk/misc.c b/ase/awk/misc.c index cdaa00b3..af2676a3 100644 --- a/ase/awk/misc.c +++ b/ase/awk/misc.c @@ -1,5 +1,5 @@ /* - * $Id: misc.c,v 1.50 2007-02-03 10:47:41 bacon Exp $ + * $Id: misc.c,v 1.51 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -16,35 +16,6 @@ void ase_awk_free (ase_awk_t* awk, void* ptr) ASE_AWK_FREE (awk, ptr); } -void* ase_awk_memcpy (void* dst, const void* src, ase_size_t n) -{ - void* p = dst; - void* e = (ase_byte_t*)dst + n; - - while (dst < e) - { - *(ase_byte_t*)dst = *(ase_byte_t*)src; - dst = (ase_byte_t*)dst + 1; - src = (ase_byte_t*)src + 1; - } - - return p; -} - -void* ase_awk_memset (void* dst, int val, ase_size_t n) -{ - void* p = dst; - void* e = (ase_byte_t*)p + n; - - while (p < e) - { - *(ase_byte_t*)p = (ase_byte_t)val; - p = (ase_byte_t*)p + 1; - } - - return dst; -} - ase_long_t ase_awk_strxtolong ( ase_awk_t* awk, const ase_char_t* str, ase_size_t len, int base, const ase_char_t** endptr) @@ -547,7 +518,7 @@ ase_size_t ase_awk_longtostr ( ase_size_t len, ret, i; ase_size_t prefix_len; - prefix_len = (prefix != ASE_NULL)? ase_awk_strlen(prefix): 0; + prefix_len = (prefix != ASE_NULL)? ase_strlen(prefix): 0; t = value; if (t == 0) @@ -617,182 +588,13 @@ ase_size_t ase_awk_longtostr ( return ret; } -ase_char_t* ase_awk_strdup (ase_awk_t* awk, const ase_char_t* str) -{ - ase_char_t* tmp; - - tmp = (ase_char_t*) ASE_AWK_MALLOC ( - awk, (ase_awk_strlen(str) + 1) * ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) return ASE_NULL; - - ase_awk_strcpy (tmp, str); - return tmp; -} - -ase_char_t* ase_awk_strxdup ( - ase_awk_t* awk, const ase_char_t* str, ase_size_t len) -{ - ase_char_t* tmp; - - tmp = (ase_char_t*) ASE_AWK_MALLOC ( - awk, (len + 1) * ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) return ASE_NULL; - - ase_awk_strncpy (tmp, str, len); - return tmp; -} - -ase_char_t* ase_awk_strxdup2 ( - ase_awk_t* awk, - const ase_char_t* str1, ase_size_t len1, - const ase_char_t* str2, ase_size_t len2) -{ - ase_char_t* tmp; - - tmp = (ase_char_t*) ASE_AWK_MALLOC ( - awk, (len1 + len2 + 1) * ASE_SIZEOF(ase_char_t)); - if (tmp == ASE_NULL) return ASE_NULL; - - ase_awk_strncpy (tmp, str1, len1); - ase_awk_strncpy (tmp + len1, str2, len2); - return tmp; -} - -ase_size_t ase_awk_strlen (const ase_char_t* str) -{ - const ase_char_t* p = str; - while (*p != ASE_T('\0')) p++; - return p - str; -} - -ase_size_t ase_awk_strcpy (ase_char_t* buf, const ase_char_t* str) -{ - ase_char_t* org = buf; - while ((*buf++ = *str++) != ASE_T('\0')); - return buf - org - 1; -} - -ase_size_t ase_awk_strxcpy ( - ase_char_t* buf, ase_size_t bsz, const ase_char_t* str) -{ - ase_char_t* p, * p2; - - p = buf; p2 = buf + bsz - 1; - - while (p < p2) - { - if (*str == ASE_T('\0')) break; - *p++ = *str++; - } - - if (bsz > 0) *p = ASE_T('\0'); - return p - buf; -} - -ase_size_t ase_awk_strncpy ( - ase_char_t* buf, const ase_char_t* str, ase_size_t len) -{ - const ase_char_t* end = str + len; - while (str < end) *buf++ = *str++; - *buf = ASE_T('\0'); - return len; -} - -int ase_awk_strcmp (const ase_char_t* s1, const ase_char_t* s2) -{ - while (*s1 == *s2) - { - if (*s1 == ASE_C('\0')) return 0; - s1++, s2++; - } - - return (*s1 > *s2)? 1: -1; -} - -int ase_awk_strxncmp ( - const ase_char_t* s1, ase_size_t len1, - const ase_char_t* s2, ase_size_t len2) -{ - ase_char_t c1, c2; - const ase_char_t* end1 = s1 + len1; - const ase_char_t* end2 = s2 + len2; - - while (s1 < end1) - { - c1 = *s1; - if (s2 < end2) - { - c2 = *s2; - if (c1 > c2) return 1; - if (c1 < c2) return -1; - } - else return 1; - s1++; s2++; - } - - return (s2 < end2)? -1: 0; -} - -int ase_awk_strxncasecmp ( - ase_awk_t* awk, - const ase_char_t* s1, ase_size_t len1, - const ase_char_t* s2, ase_size_t len2) -{ - ase_char_t c1, c2; - const ase_char_t* end1 = s1 + len1; - const ase_char_t* end2 = s2 + len2; - - while (s1 < end1) - { - c1 = ASE_AWK_TOUPPER (awk, *s1); - if (s2 < end2) - { - c2 = ASE_AWK_TOUPPER (awk, *s2); - if (c1 > c2) return 1; - if (c1 < c2) return -1; - } - else return 1; - s1++; s2++; - } - - return (s2 < end2)? -1: 0; -} - -ase_char_t* ase_awk_strxnstr ( - const ase_char_t* str, ase_size_t strsz, - const ase_char_t* sub, ase_size_t subsz) -{ - const ase_char_t* end, * subp; - - if (subsz == 0) return (ase_char_t*)str; - if (strsz < subsz) return ASE_NULL; - - end = str + strsz - subsz; - subp = sub + subsz; - - while (str <= end) { - const ase_char_t* x = str; - const ase_char_t* y = sub; - - while (ase_true) { - if (y >= subp) return (ase_char_t*)str; - if (*x != *y) break; - x++; y++; - } - - str++; - } - - return ASE_NULL; -} - ase_char_t* ase_awk_strtok ( ase_awk_run_t* run, const ase_char_t* s, const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len) { return ase_awk_strxntok ( - run, s, ase_awk_strlen(s), - delim, ase_awk_strlen(delim), tok, tok_len); + run, s, ase_strlen(s), + delim, ase_strlen(delim), tok, tok_len); } ase_char_t* ase_awk_strxtok ( @@ -801,7 +603,7 @@ ase_char_t* ase_awk_strxtok ( { return ase_awk_strxntok ( run, s, len, - delim, ase_awk_strlen(delim), tok, tok_len); + delim, ase_strlen(delim), tok, tok_len); } ase_char_t* ase_awk_strntok ( @@ -810,7 +612,7 @@ ase_char_t* ase_awk_strntok ( ase_char_t** tok, ase_size_t* tok_len) { return ase_awk_strxntok ( - run, s, ase_awk_strlen(s), + run, s, ase_strlen(s), delim, delim_len, tok, tok_len); } @@ -1107,18 +909,18 @@ int ase_awk_assertfail (ase_awk_t* awk, { if (desc == ASE_NULL) { - awk->prmfns.aprintf ( + awk->prmfns.misc.aprintf ( ASE_T("ASSERTION FAILURE AT FILE %s LINE %d\n%s\n"), file, line, expr); } else { - awk->prmfns.aprintf ( + awk->prmfns.misc.aprintf ( ASE_T("ASSERTION FAILURE AT FILE %s LINE %d\n%s\n\nDESCRIPTION:\n%s\n"), file, line, expr, desc); } - awk->prmfns.abort (awk->prmfns.custom_data); + awk->prmfns.misc.abort (awk->prmfns.misc.custom_data); return 0; } diff --git a/ase/awk/misc.h b/ase/awk/misc.h index f84bff85..1caaa4c5 100644 --- a/ase/awk/misc.h +++ b/ase/awk/misc.h @@ -1,5 +1,5 @@ /* - * $Id: misc.h,v 1.11 2007-02-03 10:47:41 bacon Exp $ + * $Id: misc.h,v 1.12 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -15,9 +15,6 @@ extern "C" { #endif -void* ase_awk_memcpy (void* dst, const void* src, ase_size_t n); -void* ase_awk_memset (void* dst, int val, ase_size_t n); - ase_char_t* ase_awk_strtok ( ase_awk_run_t* run, const ase_char_t* s, const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len); diff --git a/ase/awk/parse.c b/ase/awk/parse.c index 8f096735..a29d06b8 100644 --- a/ase/awk/parse.c +++ b/ase/awk/parse.c @@ -1,5 +1,5 @@ /* - * $Id: parse.c,v 1.244 2007-02-19 15:44:46 bacon Exp $ + * $Id: parse.c,v 1.245 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -315,7 +315,7 @@ static struct __bvent __bvtab[] = #define ADD_TOKEN_CHAR(awk,c) \ do { \ - if (ase_awk_str_ccat(&(awk)->token.name,(c)) == (ase_size_t)-1) { \ + if (ase_str_ccat(&(awk)->token.name,(c)) == (ase_size_t)-1) { \ ase_awk_seterror (awk, ASE_AWK_ENOMEM, (awk)->token.line, ASE_NULL); \ return -1; \ } \ @@ -333,11 +333,11 @@ static struct __bvent __bvtab[] = } \ else \ { \ - awk->prmfns.sprintf ( \ + awk->prmfns.misc.sprintf ( \ (awk)->errmsg, ASE_COUNTOF((awk)->errmsg), \ msg, \ - ASE_AWK_STR_LEN(&(awk)->token.name), \ - ASE_AWK_STR_BUF(&(awk)->token.name)); \ + ASE_STR_LEN(&(awk)->token.name), \ + ASE_STR_BUF(&(awk)->token.name)); \ ase_awk_seterror ( \ awk, code, (awk)->token.line, \ (awk)->errmsg); \ @@ -402,7 +402,7 @@ int ase_awk_parse (ase_awk_t* awk, ase_awk_srcios_t* srcios) ASE_AWK_ASSERT (awk, awk->parse.depth.cur.expr == 0); ase_awk_clear (awk); - ASE_AWK_MEMCPY (awk, &awk->src.ios, srcios, ASE_SIZEOF(awk->src.ios)); + ase_memcpy (&awk->src.ios, srcios, ASE_SIZEOF(awk->src.ios)); n = __parse (awk); @@ -708,11 +708,11 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) } else { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("'%.*s' not a valid function name"), - ASE_AWK_STR_LEN(&awk->token.name), - ASE_AWK_STR_BUF(&awk->token.name)); + ASE_STR_LEN(&awk->token.name), + ASE_STR_BUF(&awk->token.name)); ase_awk_seterror ( awk, ASE_AWK_EIDENT, awk->token.line, @@ -721,13 +721,13 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) return ASE_NULL; } - name = ASE_AWK_STR_BUF(&awk->token.name); - name_len = ASE_AWK_STR_LEN(&awk->token.name); + name = ASE_STR_BUF(&awk->token.name); + name_len = ASE_STR_LEN(&awk->token.name); /* check if it is a builtin function */ if (ase_awk_getbfn (awk, name, name_len) != ASE_NULL) { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("built-in function '%.*s' redefined"), name_len, name); @@ -742,7 +742,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) if (ase_awk_map_get(&awk->tree.afns, name, name_len) != ASE_NULL) { /* the function is defined previously */ - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("function '%.*s' redefined"), name_len, name); @@ -762,7 +762,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) g = ase_awk_tab_find (&awk->parse.globals, 0, name, name_len); if (g != (ase_size_t)-1) { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("global variable '%.*s' redefined"), name_len, name); @@ -776,7 +776,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) } /* clone the function name before it is overwritten */ - name_dup = ase_awk_strxdup (awk, name, name_len); + name_dup = ase_strxdup (name, name_len, &awk->prmfns.mmgr); if (name_dup == ASE_NULL) { ase_awk_seterror ( @@ -849,11 +849,11 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) } else { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("'%.*s' not a valid parameter name"), - ASE_AWK_STR_LEN(&awk->token.name), - ASE_AWK_STR_BUF(&awk->token.name)); + ASE_STR_LEN(&awk->token.name), + ASE_STR_BUF(&awk->token.name)); ase_awk_seterror ( awk, ASE_AWK_EIDENT, awk->token.line, @@ -863,19 +863,19 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) return ASE_NULL; } - param = ASE_AWK_STR_BUF(&awk->token.name); - param_len = ASE_AWK_STR_LEN(&awk->token.name); + param = ASE_STR_BUF(&awk->token.name); + param_len = ASE_STR_LEN(&awk->token.name); if (awk->option & ASE_AWK_UNIQUEFN) { /* check if a parameter conflicts with a function */ - if (ase_awk_strxncmp (name_dup, name_len, param, param_len) == 0 || + if (ase_strxncmp (name_dup, name_len, param, param_len) == 0 || ase_awk_map_get (&awk->tree.afns, param, param_len) != ASE_NULL) { ASE_AWK_FREE (awk, name_dup); ase_awk_tab_clear (&awk->parse.params); - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("conflicting parameter '%.*s' with the function"), param_len, param); @@ -902,7 +902,7 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) ASE_AWK_FREE (awk, name_dup); ase_awk_tab_clear (&awk->parse.params); - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("duplicate parameter '%.*s'"), param_len, param); @@ -990,11 +990,11 @@ static ase_awk_nde_t* __parse_function (ase_awk_t* awk) } else { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("'%.*s' not a valid start of the function body"), - ASE_AWK_STR_LEN(&awk->token.name), - ASE_AWK_STR_BUF(&awk->token.name)); + ASE_STR_LEN(&awk->token.name), + ASE_STR_BUF(&awk->token.name)); ase_awk_seterror ( awk, ASE_AWK_ELBRACE, awk->token.line, @@ -1333,7 +1333,7 @@ static ase_awk_t* __add_global ( /* check if it conflict with a builtin function name */ if (ase_awk_getbfn (awk, name, len) != ASE_NULL) { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("built-in function '%.*s' redefined"), len, name); @@ -1346,7 +1346,7 @@ static ase_awk_t* __add_global ( if (ase_awk_map_get ( &awk->tree.afns, name, len) != ASE_NULL) { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("function '%.*s' redefined"), len, name); @@ -1360,7 +1360,7 @@ static ase_awk_t* __add_global ( if (ase_awk_tab_find ( &awk->parse.globals, 0, name, len) != (ase_size_t)-1) { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("duplicate global variable '%.*s'"), len, name); @@ -1400,11 +1400,11 @@ static ase_awk_t* __collect_globals (ase_awk_t* awk) } else { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("'%.*s' not a valid variable name"), - ASE_AWK_STR_LEN(&awk->token.name), - ASE_AWK_STR_BUF(&awk->token.name)); + ASE_STR_LEN(&awk->token.name), + ASE_STR_BUF(&awk->token.name)); ase_awk_seterror ( awk, ASE_AWK_EIDENT, awk->token.line, @@ -1415,8 +1415,8 @@ static ase_awk_t* __collect_globals (ase_awk_t* awk) if (__add_global ( awk, - ASE_AWK_STR_BUF(&awk->token.name), - ASE_AWK_STR_LEN(&awk->token.name), + ASE_STR_BUF(&awk->token.name), + ASE_STR_LEN(&awk->token.name), awk->token.line, 0) == ASE_NULL) return ASE_NULL; @@ -1458,11 +1458,11 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) } else { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("'%.*s' not a valid variable name"), - ASE_AWK_STR_LEN(&awk->token.name), - ASE_AWK_STR_BUF(&awk->token.name)); + ASE_STR_LEN(&awk->token.name), + ASE_STR_BUF(&awk->token.name)); ase_awk_seterror ( awk, ASE_AWK_EIDENT, awk->token.line, @@ -1471,8 +1471,8 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) } } - local = ASE_AWK_STR_BUF(&awk->token.name); - local_len = ASE_AWK_STR_LEN(&awk->token.name); + local = ASE_STR_BUF(&awk->token.name); + local_len = ASE_STR_LEN(&awk->token.name); /* NOTE: it is not checked againt globals names */ @@ -1481,7 +1481,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) /* check if it conflict with a builtin function name */ if (ase_awk_getbfn (awk, local, local_len) != ASE_NULL) { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("built-in function '%.*s' redefined"), local_len, local); @@ -1496,7 +1496,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) if (ase_awk_map_get ( &awk->tree.afns, local, local_len) != ASE_NULL) { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("function '%.*s' redefined"), local_len, local); @@ -1512,7 +1512,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) if (ase_awk_tab_find (&awk->parse.params, 0, local, local_len) != (ase_size_t)-1) { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("parameter '%.*s' redefined"), local_len, local); @@ -1528,7 +1528,7 @@ static ase_awk_t* __collect_locals (ase_awk_t* awk, ase_size_t nlocals) ((awk->option & ASE_AWK_SHADING)? nlocals: 0), local, local_len) != (ase_size_t)-1) { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("duplicate local variable '%.*s'"), local_len, local); @@ -2571,21 +2571,22 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) nde->line = line; nde->next = ASE_NULL; nde->val = ase_awk_strxtolong (awk, - ASE_AWK_STR_BUF(&awk->token.name), - ASE_AWK_STR_LEN(&awk->token.name), 0, ASE_NULL); - nde->str = ase_awk_strxdup (awk, - ASE_AWK_STR_BUF(&awk->token.name), - ASE_AWK_STR_LEN(&awk->token.name)); + ASE_STR_BUF(&awk->token.name), + ASE_STR_LEN(&awk->token.name), 0, ASE_NULL); + nde->str = ase_strxdup ( + ASE_STR_BUF(&awk->token.name), + ASE_STR_LEN(&awk->token.name), + &awk->prmfns.mmgr); if (nde->str == ASE_NULL) { ASE_AWK_FREE (awk, nde); return ASE_NULL; } - nde->len = ASE_AWK_STR_LEN(&awk->token.name); + nde->len = ASE_STR_LEN(&awk->token.name); ASE_AWK_ASSERT (awk, - ASE_AWK_STR_LEN(&awk->token.name) == - ase_awk_strlen(ASE_AWK_STR_BUF(&awk->token.name))); + ASE_STR_LEN(&awk->token.name) == + ase_strlen(ASE_STR_BUF(&awk->token.name))); if (__get_token(awk) == -1) { @@ -2613,21 +2614,22 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) nde->line = line; nde->next = ASE_NULL; nde->val = ase_awk_strxtoreal (awk, - ASE_AWK_STR_BUF(&awk->token.name), - ASE_AWK_STR_LEN(&awk->token.name), ASE_NULL); - nde->str = ase_awk_strxdup (awk, - ASE_AWK_STR_BUF(&awk->token.name), - ASE_AWK_STR_LEN(&awk->token.name)); + ASE_STR_BUF(&awk->token.name), + ASE_STR_LEN(&awk->token.name), ASE_NULL); + nde->str = ase_strxdup ( + ASE_STR_BUF(&awk->token.name), + ASE_STR_LEN(&awk->token.name), + &awk->prmfns.mmgr); if (nde->str == ASE_NULL) { ASE_AWK_FREE (awk, nde); return ASE_NULL; } - nde->len = ASE_AWK_STR_LEN(&awk->token.name); + nde->len = ASE_STR_LEN(&awk->token.name); ASE_AWK_ASSERT (awk, - ASE_AWK_STR_LEN(&awk->token.name) == - ase_awk_strlen(ASE_AWK_STR_BUF(&awk->token.name))); + ASE_STR_LEN(&awk->token.name) == + ase_strlen(ASE_STR_BUF(&awk->token.name))); if (__get_token(awk) == -1) { @@ -2654,9 +2656,11 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) nde->type = ASE_AWK_NDE_STR; nde->line = line; nde->next = ASE_NULL; - nde->len = ASE_AWK_STR_LEN(&awk->token.name); - nde->buf = ase_awk_strxdup ( - awk, ASE_AWK_STR_BUF(&awk->token.name), nde->len); + nde->len = ASE_STR_LEN(&awk->token.name); + nde->buf = ase_strxdup ( + ASE_STR_BUF(&awk->token.name), + nde->len, + &awk->prmfns.mmgr); if (nde->buf == ASE_NULL) { ASE_AWK_FREE (awk, nde); @@ -2683,7 +2687,7 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) * of the context-sensitivity of the slash symbol */ SET_TOKEN_TYPE (awk, TOKEN_REX); - ase_awk_str_clear (&awk->token.name); + ase_str_clear (&awk->token.name); if (__get_rexstr (awk) == -1) return ASE_NULL; ASE_AWK_ASSERT (awk, MATCH(awk,TOKEN_REX)); @@ -2700,10 +2704,11 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) nde->line = line; nde->next = ASE_NULL; - nde->len = ASE_AWK_STR_LEN(&awk->token.name); - nde->buf = ase_awk_strxdup (awk, - ASE_AWK_STR_BUF(&awk->token.name), - ASE_AWK_STR_LEN(&awk->token.name)); + nde->len = ASE_STR_LEN(&awk->token.name); + nde->buf = ase_strxdup ( + ASE_STR_BUF(&awk->token.name), + ASE_STR_LEN(&awk->token.name), + &awk->prmfns.mmgr); if (nde->buf == ASE_NULL) { ASE_AWK_FREE (awk, nde); @@ -2713,8 +2718,8 @@ static ase_awk_nde_t* __parse_primary (ase_awk_t* awk, ase_size_t line) } nde->code = ase_awk_buildrex (awk, - ASE_AWK_STR_BUF(&awk->token.name), - ASE_AWK_STR_LEN(&awk->token.name), + ASE_STR_BUF(&awk->token.name), + ASE_STR_LEN(&awk->token.name), &errnum); if (nde->code == ASE_NULL) { @@ -2935,16 +2940,16 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line) ASE_AWK_ASSERT (awk, MATCH(awk,TOKEN_IDENT)); - name_dup = ase_awk_strxdup ( - awk, - ASE_AWK_STR_BUF(&awk->token.name), - ASE_AWK_STR_LEN(&awk->token.name)); + name_dup = ase_strxdup ( + ASE_STR_BUF(&awk->token.name), + ASE_STR_LEN(&awk->token.name), + &awk->prmfns.mmgr); if (name_dup == ASE_NULL) { ase_awk_seterror (awk, ASE_AWK_ENOMEM, line, ASE_NULL); return ASE_NULL; } - name_len = ASE_AWK_STR_LEN(&awk->token.name); + name_len = ASE_STR_LEN(&awk->token.name); if (__get_token(awk) == -1) { @@ -2963,7 +2968,7 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line) /* built-in function should be in the form * of the function call */ - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("function name '%.*s' without a left parenthesis"), name_len, name_dup); @@ -3074,7 +3079,7 @@ static ase_awk_nde_t* __parse_primary_ident (ase_awk_t* awk, ase_size_t line) return (ase_awk_nde_t*)nde; } - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("undefined identifier '%.*s'"), name_len, name_dup); @@ -3217,7 +3222,7 @@ static ase_awk_nde_t* __parse_hashidx ( ase_awk_clrpt (awk, idx); ASE_AWK_FREE (awk, nde); - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("undefined identifier '%.*s'"), name_len, name); ase_awk_seterror (awk, ASE_AWK_EUNDEF, line, awk->errmsg); @@ -4175,7 +4180,7 @@ static int __get_token (ase_awk_t* awk) } while (n == 1); - ase_awk_str_clear (&awk->token.name); + ase_str_clear (&awk->token.name); awk->token.line = awk->src.lex.line; awk->token.column = awk->src.lex.column; @@ -4243,8 +4248,8 @@ static int __get_token (ase_awk_t* awk) c == ASE_T('_') || ASE_AWK_ISDIGIT(awk,c)); type = __classify_ident (awk, - ASE_AWK_STR_BUF(&awk->token.name), - ASE_AWK_STR_LEN(&awk->token.name)); + ASE_STR_BUF(&awk->token.name), + ASE_STR_LEN(&awk->token.name)); SET_TOKEN_TYPE (awk, type); } else if (c == ASE_T('\"')) @@ -4604,7 +4609,7 @@ static int __get_token (ase_awk_t* awk) } else { - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( awk->errmsg, ASE_COUNTOF(awk->errmsg), ASE_T("invalid character '%c'"), c); ase_awk_seterror ( @@ -4619,7 +4624,7 @@ static int __get_number (ase_awk_t* awk) { ase_cint_t c; - ASE_AWK_ASSERT (awk, ASE_AWK_STR_LEN(&awk->token.name) == 0); + ASE_AWK_ASSERT (awk, ASE_STR_LEN(&awk->token.name) == 0); SET_TOKEN_TYPE (awk, TOKEN_INT); c = awk->src.lex.curc; @@ -5043,7 +5048,7 @@ static int __classify_ident ( if (kwp->valid != 0 && (awk->option & kwp->valid) == 0) continue; - if (ase_awk_strxncmp (kwp->name, kwp->name_len, name, len) == 0) + if (ase_strxncmp (kwp->name, kwp->name_len, name, len) == 0) { return kwp->type; } @@ -5309,7 +5314,7 @@ static int __deparse_func (ase_awk_pair_t* pair, void* arg) ase_awk_afn_t* afn = (ase_awk_afn_t*)pair->val; ase_size_t i, n; - ASE_AWK_ASSERT (df->awk, ase_awk_strxncmp ( + ASE_AWK_ASSERT (df->awk, ase_strxncmp ( pair->key, pair->key_len, afn->name, afn->name_len) == 0); if (ase_awk_putsrcstr (df->awk, ASE_T("function ")) == -1) return -1; diff --git a/ase/awk/rec.c b/ase/awk/rec.c index 733fc1b1..a8a860d6 100644 --- a/ase/awk/rec.c +++ b/ase/awk/rec.c @@ -1,5 +1,5 @@ /* - * $Id: rec.c,v 1.14 2007-02-03 10:47:41 bacon Exp $ + * $Id: rec.c,v 1.15 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -20,8 +20,8 @@ int ase_awk_setrec ( if (idx == 0) { - if (str == ASE_AWK_STR_BUF(&run->inrec.line) && - len == ASE_AWK_STR_LEN(&run->inrec.line)) + if (str == ASE_STR_BUF(&run->inrec.line) && + len == ASE_STR_LEN(&run->inrec.line)) { if (ase_awk_clrrec (run, ase_true) == -1) return -1; } @@ -29,7 +29,7 @@ int ase_awk_setrec ( { if (ase_awk_clrrec (run, ase_false) == -1) return -1; - if (ase_awk_str_ncpy (&run->inrec.line, str, len) == (ase_size_t)-1) + if (ase_str_ncpy (&run->inrec.line, str, len) == (ase_size_t)-1) { ase_awk_clrrec (run, ase_false); ase_awk_setrunerror ( @@ -72,8 +72,8 @@ int ase_awk_setrec ( /* recompose $0 */ v = ase_awk_makestrval (run, - ASE_AWK_STR_BUF(&run->inrec.line), - ASE_AWK_STR_LEN(&run->inrec.line)); + ASE_STR_BUF(&run->inrec.line), + ASE_STR_LEN(&run->inrec.line)); if (v == ASE_NULL) { ase_awk_clrrec (run, ase_false); @@ -124,8 +124,8 @@ static int __split_record (ase_awk_run_t* run) } /* scan the input record to count the fields */ - p = ASE_AWK_STR_BUF(&run->inrec.line); - len = ASE_AWK_STR_LEN(&run->inrec.line); + p = ASE_STR_BUF(&run->inrec.line); + len = ASE_STR_LEN(&run->inrec.line); nflds = 0; while (p != ASE_NULL) @@ -160,8 +160,8 @@ static int __split_record (ase_awk_run_t* run) (tok != ASE_NULL && tok_len > 0) || tok_len == 0); nflds++; - len = ASE_AWK_STR_LEN(&run->inrec.line) - - (p - ASE_AWK_STR_BUF(&run->inrec.line)); + len = ASE_STR_LEN(&run->inrec.line) - + (p - ASE_STR_BUF(&run->inrec.line)); } /* allocate space */ @@ -183,8 +183,8 @@ static int __split_record (ase_awk_run_t* run) } /* scan again and split it */ - p = ASE_AWK_STR_BUF(&run->inrec.line); - len = ASE_AWK_STR_LEN(&run->inrec.line); + p = ASE_STR_BUF(&run->inrec.line); + len = ASE_STR_LEN(&run->inrec.line); while (p != ASE_NULL) { @@ -224,8 +224,8 @@ static int __split_record (ase_awk_run_t* run) ase_awk_refupval (run, run->inrec.flds[run->inrec.nflds].val); run->inrec.nflds++; - len = ASE_AWK_STR_LEN(&run->inrec.line) - - (p - ASE_AWK_STR_BUF(&run->inrec.line)); + len = ASE_STR_LEN(&run->inrec.line) - + (p - ASE_STR_BUF(&run->inrec.line)); } if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free); @@ -278,7 +278,7 @@ int ase_awk_clrrec (ase_awk_run_t* run, ase_bool_t skip_inrec_line) } ASE_AWK_ASSERT (run->awk, run->inrec.nflds == 0); - if (!skip_inrec_line) ase_awk_str_clear (&run->inrec.line); + if (!skip_inrec_line) ase_str_clear (&run->inrec.line); return n; } @@ -305,7 +305,7 @@ static int __recomp_record_fields ( * number of fields that the current record can hold, * the field spaces are resized */ - if (run->awk->prmfns.realloc != ASE_NULL) + if (run->awk->prmfns.mmgr.realloc != ASE_NULL) { tmp = ASE_AWK_REALLOC ( run->awk, run->inrec.flds, @@ -329,8 +329,8 @@ static int __recomp_record_fields ( } if (run->inrec.flds != ASE_NULL) { - ASE_AWK_MEMCPY (run->awk, tmp, run->inrec.flds, - ASE_SIZEOF(*run->inrec.flds) * run->inrec.maxflds); + ase_memcpy (tmp, run->inrec.flds, + ASE_SIZEOF(*run->inrec.flds)*run->inrec.maxflds); ASE_AWK_FREE (run->awk, run->inrec.flds); } } @@ -341,13 +341,13 @@ static int __recomp_record_fields ( lv = lv - 1; /* adjust the value to 0-based index */ - ase_awk_str_clear (&run->inrec.line); + ase_str_clear (&run->inrec.line); for (i = 0; i < max; i++) { if (i > 0) { - if (ase_awk_str_ncat ( + if (ase_str_ncat ( &run->inrec.line, run->global.ofs.ptr, run->global.ofs.len) == (ase_size_t)-1) @@ -363,11 +363,11 @@ static int __recomp_record_fields ( ase_awk_val_t* tmp; run->inrec.flds[i].ptr = - ASE_AWK_STR_BUF(&run->inrec.line) + - ASE_AWK_STR_LEN(&run->inrec.line); + ASE_STR_BUF(&run->inrec.line) + + ASE_STR_LEN(&run->inrec.line); run->inrec.flds[i].len = len; - if (ase_awk_str_ncat ( + if (ase_str_ncat ( &run->inrec.line, str, len) == (ase_size_t)-1) { ase_awk_setrunerror ( @@ -393,11 +393,11 @@ static int __recomp_record_fields ( else if (i >= nflds) { run->inrec.flds[i].ptr = - ASE_AWK_STR_BUF(&run->inrec.line) + - ASE_AWK_STR_LEN(&run->inrec.line); + ASE_STR_BUF(&run->inrec.line) + + ASE_STR_LEN(&run->inrec.line); run->inrec.flds[i].len = 0; - if (ase_awk_str_cat ( + if (ase_str_cat ( &run->inrec.line, ASE_T("")) == (ase_size_t)-1) { ase_awk_setrunerror ( @@ -420,11 +420,11 @@ static int __recomp_record_fields ( tmp = (ase_awk_val_str_t*)run->inrec.flds[i].val; run->inrec.flds[i].ptr = - ASE_AWK_STR_BUF(&run->inrec.line) + - ASE_AWK_STR_LEN(&run->inrec.line); + ASE_STR_BUF(&run->inrec.line) + + ASE_STR_LEN(&run->inrec.line); run->inrec.flds[i].len = tmp->len; - if (ase_awk_str_ncat (&run->inrec.line, + if (ase_str_ncat (&run->inrec.line, tmp->buf, tmp->len) == (ase_size_t)-1) { ase_awk_setrunerror ( diff --git a/ase/awk/rex.c b/ase/awk/rex.c index be99e830..6d981ebc 100644 --- a/ase/awk/rex.c +++ b/ase/awk/rex.c @@ -1,5 +1,5 @@ /* - * $Id: rex.c,v 1.65 2007-02-18 16:45:18 bacon Exp $ + * $Id: rex.c,v 1.66 2007-02-23 08:17:49 bacon Exp $ * * {License} */ @@ -163,15 +163,13 @@ static int __add_code (__builder_t* rex, void* data, ase_size_t len); static ase_size_t __get_code (__builder_t* builder, ase_size_t pos) { ase_size_t code; - ASE_AWK_MEMCPY (builder->awk, - &code, &builder->code.buf[pos], ASE_SIZEOF(code)); + ase_memcpy (&code, &builder->code.buf[pos], ASE_SIZEOF(code)); return code; } static void __set_code (__builder_t* builder, ase_size_t pos, ase_size_t code) { - ASE_AWK_MEMCPY (builder->awk, - &builder->code.buf[pos], &code, ASE_SIZEOF(code)); + ase_memcpy (&builder->code.buf[pos], &code, ASE_SIZEOF(code)); } #endif @@ -970,7 +968,7 @@ static int __add_code (__builder_t* builder, void* data, ase_size_t len) if (capa == 0) capa = DEF_CODE_CAPA; while (len > capa - builder->code.size) { capa = capa * 2; } - if (builder->awk->prmfns.realloc != ASE_NULL) + if (builder->awk->prmfns.mmgr.realloc != ASE_NULL) { tmp = (ase_byte_t*) ASE_AWK_REALLOC ( builder->awk, builder->code.buf, capa); @@ -991,8 +989,7 @@ static int __add_code (__builder_t* builder, void* data, ase_size_t len) if (builder->code.buf != ASE_NULL) { - ASE_AWK_MEMCPY (builder->awk, tmp, - builder->code.buf, builder->code.capa); + ase_memcpy (tmp, builder->code.buf, builder->code.capa); ASE_AWK_FREE (builder->awk, builder->code.buf); } } @@ -1001,8 +998,7 @@ static int __add_code (__builder_t* builder, void* data, ase_size_t len) builder->code.capa = capa; } - ASE_AWK_MEMCPY (builder->awk, - &builder->code.buf[builder->code.size], data, len); + ase_memcpy (&builder->code.buf[builder->code.size], data, len); builder->code.size += len; return 0; diff --git a/ase/awk/run.c b/ase/awk/run.c index 50f5fbaa..eead701c 100644 --- a/ase/awk/run.c +++ b/ase/awk/run.c @@ -1,5 +1,5 @@ /* - * $Id: run.c,v 1.328 2007-02-17 15:26:58 bacon Exp $ + * $Id: run.c,v 1.329 2007-02-23 08:17:50 bacon Exp $ * * {License} */ @@ -246,7 +246,7 @@ static int __set_global ( if (var != ASE_NULL) { - run->awk->prmfns.sprintf ( + run->awk->prmfns.misc.sprintf ( run->errmsg, ASE_COUNTOF(run->errmsg), ASE_T("map '%.*s' not assignable with a scalar"), var->id.name_len, var->id.name); @@ -615,7 +615,7 @@ void ase_awk_setrunerror ( if (errmsg == ASE_NULL) run->errmsg[0] = ASE_T('\0'); else if (errmsg != run->errmsg) { - ase_awk_strxcpy (run->errmsg, ASE_COUNTOF(run->errmsg), errmsg); + ase_strxcpy (run->errmsg, ASE_COUNTOF(run->errmsg), errmsg); } } @@ -655,7 +655,7 @@ int ase_awk_run (ase_awk_t* awk, } /* clear the run object space */ - ASE_AWK_MEMSET (awk, run, 0, ASE_SIZEOF(ase_awk_run_t)); + ase_memset (run, 0, ASE_SIZEOF(ase_awk_run_t)); /* add the run object to the awk object */ __add_run (awk, run); @@ -844,24 +844,24 @@ static int __init_run ( run->inrec.nflds = 0; run->inrec.maxflds = 0; run->inrec.d0 = ase_awk_val_nil; - if (ase_awk_str_open ( - &run->inrec.line, DEF_BUF_CAPA, run->awk) == ASE_NULL) + if (ase_str_open ( + &run->inrec.line, DEF_BUF_CAPA, &run->awk->prmfns.mmgr) == ASE_NULL) { *errnum = ASE_AWK_ENOMEM; return -1; } - if (ase_awk_str_open (&run->format.out, 256, run->awk) == ASE_NULL) + if (ase_str_open (&run->format.out, 256, &run->awk->prmfns.mmgr) == ASE_NULL) { - ase_awk_str_close (&run->inrec.line); + ase_str_close (&run->inrec.line); *errnum = ASE_AWK_ENOMEM; return -1; } - if (ase_awk_str_open (&run->format.fmt, 256, run->awk) == ASE_NULL) + if (ase_str_open (&run->format.fmt, 256, &run->awk->prmfns.mmgr) == ASE_NULL) { - ase_awk_str_close (&run->format.out); - ase_awk_str_close (&run->inrec.line); + ase_str_close (&run->format.out); + ase_str_close (&run->inrec.line); *errnum = ASE_AWK_ENOMEM; return -1; } @@ -869,9 +869,9 @@ static int __init_run ( if (ase_awk_map_open (&run->named, run, DEF_BUF_CAPA, __free_namedval, run->awk) == ASE_NULL) { - ase_awk_str_close (&run->format.fmt); - ase_awk_str_close (&run->format.out); - ase_awk_str_close (&run->inrec.line); + ase_str_close (&run->format.fmt); + ase_str_close (&run->format.out); + ase_str_close (&run->inrec.line); *errnum = ASE_AWK_ENOMEM; return -1; } @@ -881,9 +881,9 @@ static int __init_run ( if (run->format.tmp.ptr == ASE_NULL) { ase_awk_map_close (&run->named); - ase_awk_str_close (&run->format.fmt); - ase_awk_str_close (&run->format.out); - ase_awk_str_close (&run->inrec.line); + ase_str_close (&run->format.fmt); + ase_str_close (&run->format.out); + ase_str_close (&run->inrec.line); *errnum = ASE_AWK_ENOMEM; return -1; } @@ -898,14 +898,15 @@ static int __init_run ( { ASE_AWK_FREE (run->awk, run->format.tmp.ptr); ase_awk_map_close (&run->named); - ase_awk_str_close (&run->format.fmt); - ase_awk_str_close (&run->format.out); - ase_awk_str_close (&run->inrec.line); + ase_str_close (&run->format.fmt); + ase_str_close (&run->format.out); + ase_str_close (&run->inrec.line); *errnum = ASE_AWK_ENOMEM; return -1; } - ASE_AWK_MEMSET (run->awk, run->pattern_range_state, 0, + ase_memset ( + run->pattern_range_state, 0, run->awk->tree.chain_size * ASE_SIZEOF(ase_byte_t)); } else run->pattern_range_state = ASE_NULL; @@ -997,8 +998,8 @@ static void __deinit_run (ase_awk_run_t* run) ASE_AWK_FREE (run->awk, run->format.tmp.ptr); run->format.tmp.ptr = ASE_NULL; run->format.tmp.len = 0; - ase_awk_str_close (&run->format.fmt); - ase_awk_str_close (&run->format.out); + ase_str_close (&run->format.fmt); + ase_str_close (&run->format.out); /* destroy input record. ase_awk_clrrec should be called * before the run stack has been destroyed because it may try @@ -1010,7 +1011,7 @@ static void __deinit_run (ase_awk_run_t* run) run->inrec.flds = ASE_NULL; run->inrec.maxflds = 0; } - ase_awk_str_close (&run->inrec.line); + ase_str_close (&run->inrec.line); /* destroy run stack */ if (run->stack != ASE_NULL) @@ -1321,7 +1322,7 @@ static int run_main ( nde.line = 0; nde.next = ASE_NULL; nde.what.afn.name.ptr = (ase_char_t*)main; - nde.what.afn.name.len = ase_awk_strlen(main); + nde.what.afn.name.len = ase_strlen(main); nde.args = ASE_NULL; nde.nargs = 0; @@ -1355,8 +1356,9 @@ static int run_main ( } tmp->type = ASE_AWK_NDE_STR; - tmp->buf = ase_awk_strxdup (run->awk, - runarg[i].ptr, runarg[i].len); + tmp->buf = ase_strxdup ( + runarg[i].ptr, runarg[i].len, + &run->awk->prmfns.mmgr); if (tmp->buf == ASE_NULL) { ASE_AWK_FREE (run->awk, tmp); @@ -1715,8 +1717,8 @@ static int __run_block0 (ase_awk_run_t* run, ase_awk_nde_blk_t* nde) n = ase_awk_writeextio_str (run, ASE_AWK_OUT_CONSOLE, ASE_T(""), - ASE_AWK_STR_BUF(&run->inrec.line), - ASE_AWK_STR_LEN(&run->inrec.line)); + ASE_STR_BUF(&run->inrec.line), + ASE_STR_LEN(&run->inrec.line)); if (n == -1) { ase_awk_refdownval (run, run->inrec.d0); @@ -2119,7 +2121,7 @@ static int __walk_foreach (ase_awk_pair_t* pair, void* arg) ase_awk_val_t* str; str = (ase_awk_val_t*) ase_awk_makestrval ( - w->run, pair->key, ase_awk_strlen(pair->key)); + w->run, pair->key, ase_strlen(pair->key)); if (str == ASE_NULL) { ase_awk_setrunerror ( @@ -2409,7 +2411,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.sprintf ( + run->awk->prmfns.misc.sprintf ( run->errmsg, ASE_COUNTOF(run->errmsg), ASE_T("'%.*s' not deletable"), var->id.name_len, var->id.name); @@ -2520,7 +2522,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.sprintf ( + run->awk->prmfns.misc.sprintf ( run->errmsg, ASE_COUNTOF(run->errmsg), ASE_T("'%.*s' not deletable"), var->id.name_len, var->id.name); @@ -2651,8 +2653,8 @@ static int __run_print (ase_awk_run_t* run, ase_awk_nde_print_t* nde) * input record */ n = ase_awk_writeextio_str ( run, nde->out_type, dst, - ASE_AWK_STR_BUF(&run->inrec.line), - ASE_AWK_STR_LEN(&run->inrec.line)); + ASE_STR_BUF(&run->inrec.line), + ASE_STR_LEN(&run->inrec.line)); if (n <= -1 /*&& run->errnum != ASE_AWK_EIOIMPL*/) { if (out != ASE_NULL) ASE_AWK_FREE (run->awk, out); @@ -3101,7 +3103,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.sprintf ( + run->awk->prmfns.misc.sprintf ( run->errmsg, ASE_COUNTOF(run->errmsg), ASE_T("map '%.*s' not assignable with a scalar"), var->id.name_len, var->id.name); @@ -3135,7 +3137,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.sprintf ( + run->awk->prmfns.misc.sprintf ( run->errmsg, ASE_COUNTOF(run->errmsg), ASE_T("map '%.*s' not assignable with a scalar"), var->id.name_len, var->id.name); @@ -3155,7 +3157,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.sprintf ( + run->awk->prmfns.misc.sprintf ( run->errmsg, ASE_COUNTOF(run->errmsg), ASE_T("map '%.*s' not assignable with a scalar"), var->id.name_len, var->id.name); @@ -3810,14 +3812,15 @@ static int __cmp_int_str ( if (run->global.ignorecase) { - n = ase_awk_strxncasecmp ( - run->awk, str, len, + n = ase_strxncasecmp ( + str, len, ((ase_awk_val_str_t*)right)->buf, - ((ase_awk_val_str_t*)right)->len); + ((ase_awk_val_str_t*)right)->len, + &run->awk->prmfns.ccls); } else { - n = ase_awk_strxncmp ( + n = ase_strxncmp ( str, len, ((ase_awk_val_str_t*)right)->buf, ((ase_awk_val_str_t*)right)->len); @@ -3881,14 +3884,15 @@ static int __cmp_real_str ( if (run->global.ignorecase) { - n = ase_awk_strxncasecmp ( - run->awk, str, len, + n = ase_strxncasecmp ( + str, len, ((ase_awk_val_str_t*)right)->buf, - ((ase_awk_val_str_t*)right)->len); + ((ase_awk_val_str_t*)right)->len, + &run->awk->prmfns.ccls); } else { - n = ase_awk_strxncmp ( + n = ase_strxncmp ( str, len, ((ase_awk_val_str_t*)right)->buf, ((ase_awk_val_str_t*)right)->len); @@ -3927,12 +3931,13 @@ static int __cmp_str_str ( if (run->global.ignorecase) { - n = ase_awk_strxncasecmp (run->awk, - ls->buf, ls->len, rs->buf, rs->len); + n = ase_strxncasecmp ( + ls->buf, ls->len, rs->buf, rs->len, + &run->awk->prmfns.ccls); } else { - n = ase_awk_strxncmp ( + n = ase_strxncmp ( ls->buf, ls->len, rs->buf, rs->len); } @@ -4361,7 +4366,7 @@ static ase_awk_val_t* __eval_binop_exp ( ase_real_t r1, r2; ase_awk_val_t* res; - ASE_AWK_ASSERTX (run->awk, run->awk->prmfns.pow != ASE_NULL, + ASE_AWK_ASSERTX (run->awk, run->awk->prmfns.misc.pow != ASE_NULL, "the pow function should be provided when the awk object is created to make the exponentiation work properly."); n1 = ase_awk_valtonum (run, left, &l1, &r1); @@ -4422,14 +4427,14 @@ static ase_awk_val_t* __eval_binop_exp ( { /* left - int, right - real */ res = ase_awk_makerealval (run, - run->awk->prmfns.pow((ase_real_t)l1,(ase_real_t)r2)); + run->awk->prmfns.misc.pow((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.pow((ase_real_t)r1,(ase_real_t)r2)); + run->awk->prmfns.misc.pow((ase_real_t)r1,(ase_real_t)r2)); } if (res == ASE_NULL) @@ -5238,13 +5243,13 @@ static ase_awk_val_t* __eval_afn (ase_awk_run_t* run, ase_awk_nde_t* nde) { ase_char_t* fmt = ASE_T("function '%.*s' not found"); ase_char_t* fmt2 = ASE_T("function '%.*s..' not found"); - ase_size_t len = ase_awk_strlen(fmt); - ase_size_t len2 = ase_awk_strlen(fmt2); + ase_size_t len = ase_strlen(fmt); + ase_size_t len2 = ase_strlen(fmt2); if (len2 < ASE_COUNTOF(run->errmsg) && call->what.afn.name.len > ASE_COUNTOF(run->errmsg)-len2) { - run->awk->prmfns.sprintf ( + run->awk->prmfns.misc.sprintf ( run->errmsg, ASE_COUNTOF(run->errmsg), fmt2, @@ -5253,7 +5258,7 @@ static ase_awk_val_t* __eval_afn (ase_awk_run_t* run, ase_awk_nde_t* nde) } else { - run->awk->prmfns.sprintf ( + run->awk->prmfns.misc.sprintf ( run->errmsg, ASE_COUNTOF(run->errmsg), fmt, @@ -5404,7 +5409,7 @@ static ase_awk_val_t* __eval_call ( ASE_AWK_ASSERT (run->awk, bfn_arg_spec == ASE_NULL || (bfn_arg_spec != ASE_NULL && - ase_awk_strlen(bfn_arg_spec) > nargs)); + ase_strlen(bfn_arg_spec) > nargs)); if (bfn_arg_spec != ASE_NULL && bfn_arg_spec[nargs] == ASE_T('r')) @@ -5954,7 +5959,7 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde) ase_awk_val_t* v, * res; ase_char_t* in = ASE_NULL; const ase_char_t* dst; - ase_awk_str_t buf; + ase_str_t buf; int n; p = (ase_awk_nde_getline_t*)nde; @@ -6012,7 +6017,7 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde) dst = (in == ASE_NULL)? ASE_T(""): in; /* TODO: optimize the line buffer management */ - if (ase_awk_str_open (&buf, DEF_BUF_CAPA, run->awk) == ASE_NULL) + if (ase_str_open (&buf, DEF_BUF_CAPA, &run->awk->prmfns.mmgr) == ASE_NULL) { if (in != ASE_NULL) ASE_AWK_FREE (run->awk, in); ase_awk_setrunerror ( @@ -6027,7 +6032,7 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde) { if (run->errnum != ASE_AWK_EIOIMPL) { - ase_awk_str_close (&buf); + ase_str_close (&buf); ase_awk_setrunerror ( run, run->errnum, nde->line, ASE_NULL); return ASE_NULL; @@ -6044,22 +6049,22 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde) { /* set $0 with the input value */ if (ase_awk_setrec (run, 0, - ASE_AWK_STR_BUF(&buf), - ASE_AWK_STR_LEN(&buf)) == -1) + ASE_STR_BUF(&buf), + ASE_STR_LEN(&buf)) == -1) { - ase_awk_str_close (&buf); + ase_str_close (&buf); return ASE_NULL; } - ase_awk_str_close (&buf); + ase_str_close (&buf); } else { ase_awk_val_t* v; v = ase_awk_makestrval (run, - ASE_AWK_STR_BUF(&buf), ASE_AWK_STR_LEN(&buf)); - ase_awk_str_close (&buf); + ASE_STR_BUF(&buf), ASE_STR_LEN(&buf)); + ase_str_close (&buf); if (v == ASE_NULL) { ase_awk_setrunerror ( @@ -6078,7 +6083,7 @@ static ase_awk_val_t* __eval_getline (ase_awk_run_t* run, ase_awk_nde_t* nde) } else { - ase_awk_str_close (&buf); + ase_str_close (&buf); } skip_read: @@ -6102,7 +6107,7 @@ static int __raw_push (ase_awk_run_t* run, void* val) n = run->stack_limit + STACK_INCREMENT; - if (run->awk->prmfns.realloc != ASE_NULL) + if (run->awk->prmfns.mmgr.realloc != ASE_NULL) { tmp = (void**) ASE_AWK_REALLOC ( run->awk, run->stack, n * ASE_SIZEOF(void*)); @@ -6115,7 +6120,8 @@ static int __raw_push (ase_awk_run_t* run, void* val) if (tmp == ASE_NULL) return -1; if (run->stack != ASE_NULL) { - ASE_AWK_MEMCPY (run->awk, tmp, run->stack, + ase_memcpy ( + tmp, run->stack, run->stack_limit * ASE_SIZEOF(void*)); ASE_AWK_FREE (run->awk, run->stack); } @@ -6155,18 +6161,18 @@ static int __read_record (ase_awk_run_t* run) } /* run->awk->prmfns.dprintf (ASE_T("len = %d str=[%s]\n"), - (int)ASE_AWK_STR_LEN(&run->inrec.line), - ASE_AWK_STR_BUF(&run->inrec.line)); + (int)ASE_STR_LEN(&run->inrec.line), + ASE_STR_BUF(&run->inrec.line)); */ if (n == 0) { - ASE_AWK_ASSERT (run->awk, ASE_AWK_STR_LEN(&run->inrec.line) == 0); + ASE_AWK_ASSERT (run->awk, ASE_STR_LEN(&run->inrec.line) == 0); return 0; } if (ase_awk_setrec (run, 0, - ASE_AWK_STR_BUF(&run->inrec.line), - ASE_AWK_STR_LEN(&run->inrec.line)) == -1) return -1; + ASE_STR_BUF(&run->inrec.line), + ASE_STR_LEN(&run->inrec.line)) == -1) return -1; return 1; } @@ -6176,7 +6182,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds) ase_awk_val_t* v; ase_char_t* ofs_free = ASE_NULL, * ofs; ase_size_t ofs_len, i; - ase_awk_str_t tmp; + ase_str_t tmp; ASE_AWK_ASSERT (run->awk, nflds <= run->inrec.nflds); @@ -6206,8 +6212,10 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds) } } - if (ase_awk_str_open (&tmp, - ASE_AWK_STR_LEN(&run->inrec.line), run->awk) == ASE_NULL) + if (ase_str_open ( + &tmp, + ASE_STR_LEN(&run->inrec.line), + &run->awk->prmfns.mmgr) == ASE_NULL) { ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return -1; @@ -6215,7 +6223,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds) for (i = 0; i < nflds; i++) { - if (i > 0 && ase_awk_str_ncat (&tmp, ofs, ofs_len) == (ase_size_t)-1) + if (i > 0 && ase_str_ncat (&tmp, ofs, ofs_len) == (ase_size_t)-1) { if (ofs_free != ASE_NULL) ASE_AWK_FREE (run->awk, ofs_free); @@ -6224,7 +6232,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds) return -1; } - if (ase_awk_str_ncat (&tmp, + if (ase_str_ncat (&tmp, run->inrec.flds[i].ptr, run->inrec.flds[i].len) == (ase_size_t)-1) { @@ -6240,7 +6248,7 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds) if (nflds > 1) ase_awk_refdownval (run, v); v = (ase_awk_val_t*) ase_awk_makestrval ( - run, ASE_AWK_STR_BUF(&tmp), ASE_AWK_STR_LEN(&tmp)); + run, ASE_STR_BUF(&tmp), ASE_STR_LEN(&tmp)); if (v == ASE_NULL) { ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); @@ -6251,8 +6259,8 @@ static int __shorten_record (ase_awk_run_t* run, ase_size_t nflds) run->inrec.d0 = v; ase_awk_refupval (run, run->inrec.d0); - ase_awk_str_swap (&tmp, &run->inrec.line); - ase_awk_str_close (&tmp); + ase_str_swap (&tmp, &run->inrec.line); + ase_str_close (&tmp); for (i = nflds; i < run->inrec.nflds; i++) { @@ -6294,10 +6302,12 @@ static ase_char_t* __idxnde_to_str ( else { /* multidimensional index */ - ase_awk_str_t idxstr; + ase_str_t idxstr; - if (ase_awk_str_open ( - &idxstr, DEF_BUF_CAPA, run->awk) == ASE_NULL) + if (ase_str_open ( + &idxstr, + DEF_BUF_CAPA, + &run->awk->prmfns.mmgr) == ASE_NULL) { ase_awk_setrunerror ( run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); @@ -6309,19 +6319,19 @@ static ase_char_t* __idxnde_to_str ( idx = __eval_expression (run, nde); if (idx == ASE_NULL) { - ase_awk_str_close (&idxstr); + ase_str_close (&idxstr); return ASE_NULL; } ase_awk_refupval (run, idx); - if (ASE_AWK_STR_LEN(&idxstr) > 0 && - ase_awk_str_ncat (&idxstr, + if (ASE_STR_LEN(&idxstr) > 0 && + ase_str_ncat (&idxstr, run->global.subsep.ptr, run->global.subsep.len) == (ase_size_t)-1) { ase_awk_refdownval (run, idx); - ase_awk_str_close (&idxstr); + ase_str_close (&idxstr); ase_awk_setrunerror ( run, ASE_AWK_ENOMEM, nde->line, ASE_NULL); return ASE_NULL; @@ -6331,7 +6341,7 @@ static ase_char_t* __idxnde_to_str ( run, idx, 0, &idxstr, ASE_NULL) == ASE_NULL) { ase_awk_refdownval (run, idx); - ase_awk_str_close (&idxstr); + ase_str_close (&idxstr); ase_awk_setrunerror ( run, run->errnum, nde->line, ASE_NULL); return ASE_NULL; @@ -6341,16 +6351,16 @@ static ase_char_t* __idxnde_to_str ( nde = nde->next; } - str = ASE_AWK_STR_BUF(&idxstr); - *len = ASE_AWK_STR_LEN(&idxstr); - ase_awk_str_forfeit (&idxstr); + str = ASE_STR_BUF(&idxstr); + *len = ASE_STR_LEN(&idxstr); + ase_str_forfeit (&idxstr); } return str; } ase_char_t* ase_awk_format ( - ase_awk_run_t* run, ase_awk_str_t* out, ase_awk_str_t* fbu, + ase_awk_run_t* run, ase_str_t* out, ase_str_t* fbu, const ase_char_t* fmt, ase_size_t fmt_len, ase_size_t nargs_on_stack, ase_awk_nde_t* args, ase_size_t* len) { @@ -6360,7 +6370,7 @@ ase_char_t* ase_awk_format ( #define OUT_CHAR(c) \ do { \ - if (ase_awk_str_ccat (out, (c)) == -1) \ + if (ase_str_ccat (out, (c)) == -1) \ { \ ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); \ return ASE_NULL; \ @@ -6369,7 +6379,7 @@ ase_char_t* ase_awk_format ( #define FMT_CHAR(c) \ do { \ - if (ase_awk_str_ccat (fbu, (c)) == -1) \ + if (ase_str_ccat (fbu, (c)) == -1) \ { \ ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); \ return ASE_NULL; \ @@ -6405,15 +6415,15 @@ ase_char_t* ase_awk_format ( if (out == ASE_NULL) out = &run->format.out; if (fbu == ASE_NULL) fbu = &run->format.fmt; - ase_awk_str_clear (out); - ase_awk_str_clear (fbu); + ase_str_clear (out); + ase_str_clear (fbu); for (i = 0; i < fmt_len; i++) { ase_long_t width = -1, prec = -1; ase_bool_t minus = ase_false; - if (ASE_AWK_STR_LEN(fbu) == 0) + if (ASE_STR_LEN(fbu) == 0) { if (fmt[i] == ASE_T('%')) FMT_CHAR (fmt[i]); else OUT_CHAR (fmt[i]); @@ -6472,7 +6482,7 @@ ase_char_t* ase_awk_format ( do { - n = run->awk->prmfns.sprintf ( + n = run->awk->prmfns.misc.sprintf ( run->format.tmp.ptr, run->format.tmp.len, #if ASE_SIZEOF_LONG_LONG > 0 @@ -6577,7 +6587,7 @@ ase_char_t* ase_awk_format ( do { - n = run->awk->prmfns.sprintf ( + n = run->awk->prmfns.misc.sprintf ( run->format.tmp.ptr, run->format.tmp.len, #if ASE_SIZEOF_LONG_LONG > 0 @@ -6697,10 +6707,10 @@ ase_char_t* ase_awk_format ( do { - n = run->awk->prmfns.sprintf ( + n = run->awk->prmfns.misc.sprintf ( run->format.tmp.ptr, run->format.tmp.len, - ASE_AWK_STR_BUF(fbu), + ASE_STR_BUF(fbu), #if ASE_SIZEOF_LONG_LONG > 0 (long long)l #elif ASE_SIZEOF___INT64 > 0 @@ -6784,10 +6794,10 @@ ase_char_t* ase_awk_format ( do { - n = run->awk->prmfns.sprintf ( + n = run->awk->prmfns.misc.sprintf ( run->format.tmp.ptr, run->format.tmp.len, - ASE_AWK_STR_BUF(fbu), + ASE_STR_BUF(fbu), (long double)r); if (n == -1) @@ -6886,7 +6896,7 @@ ase_char_t* ase_awk_format ( { while (width > prec) { - if (ase_awk_str_ccat (out, ASE_T(' ')) == -1) + if (ase_str_ccat (out, ASE_T(' ')) == -1) { ase_awk_refdownval (run, v); ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); @@ -6898,7 +6908,7 @@ ase_char_t* ase_awk_format ( if (prec > 0) { - if (ase_awk_str_ccat (out, ch) == -1) + if (ase_str_ccat (out, ch) == -1) { ase_awk_refdownval (run, v); ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); @@ -6910,7 +6920,7 @@ ase_char_t* ase_awk_format ( { while (width > prec) { - if (ase_awk_str_ccat (out, ASE_T(' ')) == -1) + if (ase_str_ccat (out, ASE_T(' ')) == -1) { ase_awk_refdownval (run, v); ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); @@ -6993,7 +7003,7 @@ ase_char_t* ase_awk_format ( { while (width > prec) { - if (ase_awk_str_ccat (out, ASE_T(' ')) == -1) + if (ase_str_ccat (out, ASE_T(' ')) == -1) { if (str_free != ASE_NULL) ASE_AWK_FREE (run->awk, str_free); @@ -7007,7 +7017,7 @@ ase_char_t* ase_awk_format ( for (k = 0; k < prec; k++) { - if (ase_awk_str_ccat (out, str[k]) == -1) + if (ase_str_ccat (out, str[k]) == -1) { if (str_free != ASE_NULL) ASE_AWK_FREE (run->awk, str_free); @@ -7023,7 +7033,7 @@ ase_char_t* ase_awk_format ( { while (width > prec) { - if (ase_awk_str_ccat (out, ASE_T(' ')) == -1) + if (ase_str_ccat (out, ASE_T(' ')) == -1) { ase_awk_refdownval (run, v); ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); @@ -7037,21 +7047,21 @@ ase_char_t* ase_awk_format ( } else /*if (fmt[i] == ASE_T('%'))*/ { - for (j = 0; j < ASE_AWK_STR_LEN(fbu); j++) - OUT_CHAR (ASE_AWK_STR_CHAR(fbu,j)); + for (j = 0; j < ASE_STR_LEN(fbu); j++) + OUT_CHAR (ASE_STR_CHAR(fbu,j)); OUT_CHAR (fmt[i]); } if (args == ASE_NULL || val != ASE_NULL) stack_arg_idx++; else args = args->next; - ase_awk_str_clear (fbu); + ase_str_clear (fbu); } /* flush uncompleted formatting sequence */ - for (j = 0; j < ASE_AWK_STR_LEN(fbu); j++) - OUT_CHAR (ASE_AWK_STR_CHAR(fbu,j)); + for (j = 0; j < ASE_STR_LEN(fbu); j++) + OUT_CHAR (ASE_STR_CHAR(fbu,j)); - *len = ASE_AWK_STR_LEN(out); - return ASE_AWK_STR_BUF(out); + *len = ASE_STR_LEN(out); + return ASE_STR_BUF(out); } diff --git a/ase/awk/run.h b/ase/awk/run.h index 2ab8de12..23057866 100644 --- a/ase/awk/run.h +++ b/ase/awk/run.h @@ -1,5 +1,5 @@ /* - * $Id: run.h,v 1.32 2007-02-03 10:51:13 bacon Exp $ + * $Id: run.h,v 1.33 2007-02-23 08:17:50 bacon Exp $ * * {License} */ @@ -108,7 +108,7 @@ extern "C" { #endif ase_char_t* ase_awk_format ( - ase_awk_run_t* run, ase_awk_str_t* out, ase_awk_str_t* fbu, + ase_awk_run_t* run, ase_str_t* out, ase_str_t* fbu, const ase_char_t* fmt, ase_size_t fmt_len, ase_size_t nargs_on_stack, ase_awk_nde_t* args, ase_size_t* len); diff --git a/ase/awk/str.c b/ase/awk/str.c deleted file mode 100644 index fc1c84d7..00000000 --- a/ase/awk/str.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * $Id: str.c,v 1.17 2007-02-03 10:51:14 bacon Exp $ - * - * {License} - */ - -#include - -ase_awk_str_t* ase_awk_str_open ( - ase_awk_str_t* str, ase_size_t capa, ase_awk_t* awk) -{ - if (str == ASE_NULL) - { - str = (ase_awk_str_t*) - ASE_AWK_MALLOC (awk, ASE_SIZEOF(ase_awk_str_t)); - if (str == ASE_NULL) return ASE_NULL; - str->__dynamic = ase_true; - } - else str->__dynamic = ase_false; - - str->awk = awk; - str->buf = (ase_char_t*) ASE_AWK_MALLOC ( - awk, ASE_SIZEOF(ase_char_t) * (capa + 1)); - if (str->buf == ASE_NULL) - { - if (str->__dynamic) ASE_AWK_FREE (awk, str); - return ASE_NULL; - } - - str->size = 0; - str->capa = capa; - str->buf[0] = ASE_T('\0'); - - return str; -} - -void ase_awk_str_close (ase_awk_str_t* str) -{ - ASE_AWK_FREE (str->awk, str->buf); - if (str->__dynamic) ASE_AWK_FREE (str->awk, str); -} - -void ase_awk_str_forfeit (ase_awk_str_t* str) -{ - if (str->__dynamic) ASE_AWK_FREE (str->awk, str); -} - -void ase_awk_str_swap (ase_awk_str_t* str, ase_awk_str_t* str1) -{ - ase_awk_str_t tmp; - - tmp.buf = str->buf; - tmp.size = str->size; - tmp.capa = str->capa; - tmp.awk = str->awk; - - str->buf = str1->buf; - str->size = str1->size; - str->capa = str1->capa; - str->awk = str1->awk; - - str1->buf = tmp.buf; - str1->size = tmp.size; - str1->capa = tmp.capa; - str1->awk = tmp.awk; -} - -ase_size_t ase_awk_str_cpy (ase_awk_str_t* str, const ase_char_t* s) -{ - /* TODO: improve it */ - return ase_awk_str_ncpy (str, s, ase_awk_strlen(s)); -} - -ase_size_t ase_awk_str_ncpy ( - ase_awk_str_t* str, const ase_char_t* s, ase_size_t len) -{ - ase_char_t* buf; - - if (len > str->capa) - { - buf = (ase_char_t*) ASE_AWK_MALLOC ( - str->awk, ASE_SIZEOF(ase_char_t) * (len + 1)); - if (buf == ASE_NULL) return (ase_size_t)-1; - - ASE_AWK_FREE (str->awk, str->buf); - str->capa = len; - str->buf = buf; - } - - str->size = ase_awk_strncpy (str->buf, s, len); - str->buf[str->size] = ASE_T('\0'); - return str->size; -} - -ase_size_t ase_awk_str_cat (ase_awk_str_t* str, const ase_char_t* s) -{ - /* TODO: improve it */ - return ase_awk_str_ncat (str, s, ase_awk_strlen(s)); -} - -ase_size_t ase_awk_str_ncat ( - ase_awk_str_t* str, const ase_char_t* s, ase_size_t len) -{ - if (len > str->capa - str->size) - { - ase_char_t* tmp; - ase_size_t capa; - - capa = str->size + len; - - /* double the capa if necessary for concatenation */ - if (capa < str->capa * 2) capa = str->capa * 2; - - if (str->awk->prmfns.realloc != ASE_NULL) - { - tmp = (ase_char_t*) ASE_AWK_REALLOC ( - str->awk, str->buf, - ASE_SIZEOF(ase_char_t) * (capa + 1)); - if (tmp == ASE_NULL) return (ase_size_t)-1; - } - else - { - tmp = (ase_char_t*) ASE_AWK_MALLOC ( - str->awk, ASE_SIZEOF(ase_char_t) * (capa + 1)); - if (tmp == ASE_NULL) return (ase_size_t)-1; - if (str->buf != ASE_NULL) - { - ASE_AWK_MEMCPY (str->awk, tmp, str->buf, - ASE_SIZEOF(ase_char_t) * (str->capa + 1)); - ASE_AWK_FREE (str->awk, str->buf); - } - } - - str->capa = capa; - str->buf = tmp; - } - - str->size += ase_awk_strncpy (&str->buf[str->size], s, len); - str->buf[str->size] = ASE_T('\0'); - return str->size; -} - -ase_size_t ase_awk_str_ccat (ase_awk_str_t* str, ase_char_t c) -{ - return ase_awk_str_ncat (str, &c, 1); -} - -ase_size_t ase_awk_str_nccat (ase_awk_str_t* str, ase_char_t c, ase_size_t len) -{ - while (len > 0) - { - if (ase_awk_str_ncat (str, &c, 1) == (ase_size_t)-1) - { - return (ase_size_t)-1; - } - - len--; - } - return str->size; -} - -void ase_awk_str_clear (ase_awk_str_t* str) -{ - str->size = 0; - str->buf[0] = ASE_T('\0'); -} - diff --git a/ase/awk/str.h b/ase/awk/str.h deleted file mode 100644 index 71b47806..00000000 --- a/ase/awk/str.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * $Id: str.h,v 1.6 2007-02-03 10:51:14 bacon Exp $ - * - * {License} - */ - -#ifndef _ASE_AWK_STR_H_ -#define _ASE_AWK_STR_H_ - -#ifndef _ASE_AWK_AWK_H_ -#error Never include this file directly. Include instead -#endif - -#define ASE_AWK_STR_LEN(x) ((x)->size) -#define ASE_AWK_STR_SIZE(x) ((x)->size + 1) -#define ASE_AWK_STR_CAPA(x) ((x)->capa) -#define ASE_AWK_STR_BUF(x) ((x)->buf) -#define ASE_AWK_STR_CHAR(x,idx) ((x)->buf[idx]) - -typedef struct ase_awk_str_t ase_awk_str_t; - -struct ase_awk_str_t -{ - ase_char_t* buf; - ase_size_t size; - ase_size_t capa; - ase_awk_t* awk; - ase_bool_t __dynamic; -}; - -#ifdef __cplusplus -extern "C" { -#endif - -ase_awk_str_t* ase_awk_str_open ( - ase_awk_str_t* str, ase_size_t capa, ase_awk_t* awk); - -void ase_awk_str_close (ase_awk_str_t* str); - -void ase_awk_str_forfeit (ase_awk_str_t* str); -void ase_awk_str_swap (ase_awk_str_t* str, ase_awk_str_t* str2); - -ase_size_t ase_awk_str_cpy (ase_awk_str_t* str, const ase_char_t* s); - -ase_size_t ase_awk_str_ncpy ( - ase_awk_str_t* str, const ase_char_t* s, ase_size_t len); - -ase_size_t ase_awk_str_cat (ase_awk_str_t* str, const ase_char_t* s); - -ase_size_t ase_awk_str_ncat ( - ase_awk_str_t* str, const ase_char_t* s, ase_size_t len); - -ase_size_t ase_awk_str_ccat (ase_awk_str_t* str, ase_char_t c); - -ase_size_t ase_awk_str_nccat (ase_awk_str_t* str, ase_char_t c, ase_size_t len); - -void ase_awk_str_clear (ase_awk_str_t* str); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/ase/awk/tab.c b/ase/awk/tab.c index 6a6e83e0..af489272 100644 --- a/ase/awk/tab.c +++ b/ase/awk/tab.c @@ -1,5 +1,5 @@ /* - * $Id: tab.c,v 1.30 2007-02-03 10:51:14 bacon Exp $ + * $Id: tab.c,v 1.31 2007-02-23 08:17:51 bacon Exp $ * * {License} */ @@ -60,7 +60,7 @@ ase_awk_tab_t* ase_awk_tab_setcapa (ase_awk_tab_t* tab, ase_size_t capa) if (capa > 0) { - if (tab->awk->prmfns.realloc != ASE_NULL) + if (tab->awk->prmfns.mmgr.realloc != ASE_NULL) { tmp = ASE_AWK_REALLOC (tab->awk, tab->buf, ASE_SIZEOF(*tab->buf) * capa); @@ -75,8 +75,8 @@ ase_awk_tab_t* ase_awk_tab_setcapa (ase_awk_tab_t* tab, ase_size_t capa) { ase_size_t x; x = (capa > tab->capa)? tab->capa: capa; - ASE_AWK_MEMCPY ( - tab->awk, tmp, tab->buf, + ase_memcpy ( + tmp, tab->buf, ASE_SIZEOF(*tab->buf) * x); ASE_AWK_FREE (tab->awk, tab->buf); } @@ -116,7 +116,7 @@ ase_size_t ase_awk_tab_insert ( ase_size_t i; ase_char_t* str_dup; - str_dup = ase_awk_strxdup (tab->awk, str, len); + str_dup = ase_strxdup (str, len, &tab->awk->prmfns.mmgr); if (str_dup == ASE_NULL) return (ase_size_t)-1; if (index >= tab->capa) @@ -194,7 +194,7 @@ ase_size_t ase_awk_tab_find ( for (i = index; i < tab->size; i++) { - if (ase_awk_strxncmp ( + if (ase_strxncmp ( tab->buf[i].name, tab->buf[i].name_len, str, len) == 0) return i; } @@ -212,7 +212,7 @@ ase_size_t ase_awk_tab_rfind ( for (i = index + 1; i-- > 0; ) { - if (ase_awk_strxncmp ( + if (ase_strxncmp ( tab->buf[i].name, tab->buf[i].name_len, str, len) == 0) return i; } @@ -230,7 +230,7 @@ ase_size_t ase_awk_tab_rrfind ( for (i = tab->size - index; i-- > 0; ) { - if (ase_awk_strxncmp ( + if (ase_strxncmp ( tab->buf[i].name, tab->buf[i].name_len, str, len) == 0) return i; } diff --git a/ase/awk/tree.c b/ase/awk/tree.c index f8acf98f..67260aa4 100644 --- a/ase/awk/tree.c +++ b/ase/awk/tree.c @@ -1,5 +1,5 @@ /* - * $Id: tree.c,v 1.102 2007-02-03 10:51:14 bacon Exp $ + * $Id: tree.c,v 1.103 2007-02-23 08:17:51 bacon Exp $ * * {License} */ @@ -260,11 +260,11 @@ 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.sprintf ( + awk->prmfns.misc.sprintf ( tmp, ASE_COUNTOF(tmp), ASE_T("%Lf"), (long double)((ase_awk_nde_real_t*)nde)->val); #elif (ASE_SIZEOF_DOUBLE != 0) - awk->prmfns.sprintf ( + awk->prmfns.misc.sprintf ( tmp, ASE_COUNTOF(tmp), ASE_T("%f"), (double)((ase_awk_nde_real_t*)nde)->val); #else diff --git a/ase/awk/val.c b/ase/awk/val.c index 1ace2bbe..1415b0d9 100644 --- a/ase/awk/val.c +++ b/ase/awk/val.c @@ -1,5 +1,5 @@ /* - * $Id: val.c,v 1.109 2007-02-18 12:08:05 bacon Exp $ + * $Id: val.c,v 1.110 2007-02-23 08:17:51 bacon Exp $ * * {License} */ @@ -8,13 +8,13 @@ static ase_char_t* __str_to_str ( ase_awk_run_t* run, const ase_char_t* str, ase_size_t str_len, - int opt, ase_awk_str_t* buf, ase_size_t* len); + int opt, ase_str_t* buf, ase_size_t* len); static ase_char_t* __val_int_to_str ( ase_awk_run_t* run, ase_awk_val_int_t* v, - int opt, ase_awk_str_t* buf, ase_size_t* len); + int opt, ase_str_t* buf, ase_size_t* len); static ase_char_t* __val_real_to_str ( ase_awk_run_t* run, ase_awk_val_real_t* v, - int opt, ase_awk_str_t* buf, ase_size_t* len); + int opt, ase_str_t* buf, ase_size_t* len); static ase_awk_val_nil_t __awk_nil = { ASE_AWK_VAL_NIL, 0 }; static ase_awk_val_str_t __awk_zls = { ASE_AWK_VAL_STR, 0, ASE_T(""), 0 }; @@ -108,7 +108,7 @@ ase_awk_val_t* ase_awk_makerealval (ase_awk_run_t* run, ase_real_t v) ase_awk_val_t* ase_awk_makestrval0 (ase_awk_run_t* run, const ase_char_t* str) { - return ase_awk_makestrval (run, str, ase_awk_strlen(str)); + return ase_awk_makestrval (run, str, ase_strlen(str)); } ase_awk_val_t* ase_awk_makestrval ( @@ -123,7 +123,7 @@ ase_awk_val_t* ase_awk_makestrval ( val->type = ASE_AWK_VAL_STR; val->ref = 0; val->len = len; - val->buf = ase_awk_strxdup (run->awk, str, len); + val->buf = ase_strxdup (str, len, &run->awk->prmfns.mmgr); if (val->buf == ASE_NULL) { ASE_AWK_FREE (run->awk, val); @@ -164,7 +164,7 @@ ase_awk_val_t* ase_awk_makestrval2 ( val->type = ASE_AWK_VAL_STR; val->ref = 0; val->len = len1 + len2; - val->buf = ase_awk_strxdup2 (run->awk, str1, len1, str2, len2); + val->buf = ase_strxdup2 (str1, len1, str2, len2, &run->awk->prmfns.mmgr); if (val->buf == ASE_NULL) { ASE_AWK_FREE (run->awk, val); @@ -187,7 +187,7 @@ ase_awk_val_t* ase_awk_makerexval ( val->type = ASE_AWK_VAL_REX; val->ref = 0; val->len = len; - val->buf = ase_awk_strxdup (run->awk, buf, len); + val->buf = ase_strxdup (buf, len, &run->awk->prmfns.mmgr); if (val->buf == ASE_NULL) { ASE_AWK_FREE (run->awk, val); @@ -202,7 +202,7 @@ ase_awk_val_t* ase_awk_makerexval ( return ASE_NULL; } - ASE_AWK_MEMCPY (run->awk, val->code, code, ASE_AWK_REX_LEN(code)); + ase_memcpy (val->code, code, ASE_AWK_REX_LEN(code)); return (ase_awk_val_t*)val; } @@ -341,9 +341,9 @@ void ase_awk_refupval (ase_awk_run_t* run, ase_awk_val_t* val) if (ase_awk_isbuiltinval(val)) return; /* -run->awk->prmfns.dprintf (ASE_T("ref up [ptr=%p] [count=%d] "), val, (int)val->ref); +run->awk->prmfns.misc.dprintf (ASE_T("ref up [ptr=%p] [count=%d] "), val, (int)val->ref); ase_awk_dprintval (run, val); -run->awk->prmfns.dprintf (ASE_T("\n")); +run->awk->prmfns.misc.dprintf (ASE_T("\n")); */ val->ref++; @@ -354,9 +354,9 @@ void ase_awk_refdownval (ase_awk_run_t* run, ase_awk_val_t* val) if (ase_awk_isbuiltinval(val)) return; /* -run->awk->prmfns.dprintf (ASE_T("ref down [ptr=%p] [count=%d]\n"), val, (int)val->ref); +run->awk->prmfns.misc.dprintf (ASE_T("ref down [ptr=%p] [count=%d]\n"), val, (int)val->ref); ase_awk_dprintval (run, val); -run->awk->prmfns.dprintf (ASE_T("\n")); +run->awk->prmfns.misc.dprintf (ASE_T("\n")); */ ASE_AWK_ASSERTX (run->awk, val->ref > 0, @@ -413,7 +413,7 @@ ase_bool_t ase_awk_valtobool (ase_awk_run_t* run, ase_awk_val_t* val) ase_char_t* ase_awk_valtostr ( ase_awk_run_t* run, ase_awk_val_t* v, - int opt, ase_awk_str_t* buf, ase_size_t* len) + int opt, ase_str_t* buf, ase_size_t* len) { if (v->type == ASE_AWK_VAL_NIL) { @@ -464,7 +464,7 @@ ase_char_t* ase_awk_valtostr ( } #ifdef _DEBUG - run->awk->prmfns.dprintf ( + run->awk->prmfns.misc.dprintf ( ASE_T("ERROR: WRONG VALUE TYPE [%d] in ase_awk_valtostr\n"), v->type); #endif @@ -475,12 +475,12 @@ ase_char_t* ase_awk_valtostr ( static ase_char_t* __str_to_str ( ase_awk_run_t* run, const ase_char_t* str, ase_size_t str_len, - int opt, ase_awk_str_t* buf, ase_size_t* len) + int opt, ase_str_t* buf, ase_size_t* len) { if (buf == ASE_NULL) { ase_char_t* tmp; - tmp = ase_awk_strxdup (run->awk, str, str_len); + tmp = ase_strxdup (str, str_len, &run->awk->prmfns.mmgr); if (tmp == ASE_NULL) { ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); @@ -494,22 +494,22 @@ static ase_char_t* __str_to_str ( { ase_size_t n; - if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_awk_str_clear (buf); - n = ase_awk_str_ncat (buf, str, str_len); + if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf); + n = ase_str_ncat (buf, str, str_len); if (n == (ase_size_t)-1) { ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } - if (len != ASE_NULL) *len = ASE_AWK_STR_LEN(buf); - return ASE_AWK_STR_BUF(buf); + if (len != ASE_NULL) *len = ASE_STR_LEN(buf); + return ASE_STR_BUF(buf); } } static ase_char_t* __val_int_to_str ( ase_awk_run_t* run, ase_awk_val_int_t* v, - int opt, ase_awk_str_t* buf, ase_size_t* len) + int opt, ase_str_t* buf, ase_size_t* len) { ase_char_t* tmp; ase_long_t t; @@ -537,16 +537,16 @@ static ase_char_t* __val_int_to_str ( } else { - if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_awk_str_clear (buf); - if (ase_awk_str_cat (buf, ASE_T("0")) == (ase_size_t)-1) + if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf); + if (ase_str_cat (buf, ASE_T("0")) == (ase_size_t)-1) { ase_awk_setrunerror ( run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } - if (len != ASE_NULL) *len = ASE_AWK_STR_LEN(buf); - return ASE_AWK_STR_BUF(buf); + if (len != ASE_NULL) *len = ASE_STR_LEN(buf); + return ASE_STR_BUF(buf); } } @@ -570,12 +570,12 @@ static ase_char_t* __val_int_to_str ( else { /* clear the buffer */ - if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_awk_str_clear (buf); + if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf); - tmp = ASE_AWK_STR_BUF(buf) + ASE_AWK_STR_LEN(buf); + tmp = ASE_STR_BUF(buf) + ASE_STR_LEN(buf); /* extend the buffer */ - if (ase_awk_str_nccat ( + if (ase_str_nccat ( buf, ASE_T(' '), l) == (ase_size_t)-1) { ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); @@ -596,8 +596,8 @@ static ase_char_t* __val_int_to_str ( if (buf != ASE_NULL) { - tmp = ASE_AWK_STR_BUF(buf); - if (len != ASE_NULL) *len = ASE_AWK_STR_LEN(buf); + tmp = ASE_STR_BUF(buf); + if (len != ASE_NULL) *len = ASE_STR_LEN(buf); } return tmp; @@ -605,11 +605,11 @@ static ase_char_t* __val_int_to_str ( static ase_char_t* __val_real_to_str ( ase_awk_run_t* run, ase_awk_val_real_t* v, - int opt, ase_awk_str_t* buf, ase_size_t* len) + int opt, ase_str_t* buf, ase_size_t* len) { ase_char_t* tmp; ase_size_t tmp_len; - ase_awk_str_t out, fbu; + ase_str_t out, fbu; if (opt & ASE_AWK_VALTOSTR_PRINT) { @@ -622,15 +622,15 @@ static ase_char_t* __val_real_to_str ( tmp_len = run->global.convfmt.len; } - if (ase_awk_str_open (&out, 256, run->awk) == ASE_NULL) + if (ase_str_open (&out, 256, &run->awk->prmfns.mmgr) == ASE_NULL) { ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } - if (ase_awk_str_open (&fbu, 256, run->awk) == ASE_NULL) + if (ase_str_open (&fbu, 256, &run->awk->prmfns.mmgr) == ASE_NULL) { - ase_awk_str_close (&out); + ase_str_close (&out); ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } @@ -639,34 +639,34 @@ static ase_char_t* __val_real_to_str ( (ase_size_t)-1, (ase_awk_nde_t*)v, &tmp_len); if (tmp == ASE_NULL) { - ase_awk_str_close (&fbu); - ase_awk_str_close (&out); + ase_str_close (&fbu); + ase_str_close (&out); return ASE_NULL; } if (buf == ASE_NULL) { - ase_awk_str_close (&fbu); - ase_awk_str_forfeit (&out); + ase_str_close (&fbu); + ase_str_forfeit (&out); if (len != ASE_NULL) *len = tmp_len; } else { - if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_awk_str_clear (buf); + if (opt & ASE_AWK_VALTOSTR_CLEAR) ase_str_clear (buf); - if (ase_awk_str_ncat (buf, tmp, tmp_len) == (ase_size_t)-1) + if (ase_str_ncat (buf, tmp, tmp_len) == (ase_size_t)-1) { - ase_awk_str_close (&fbu); - ase_awk_str_close (&out); + ase_str_close (&fbu); + ase_str_close (&out); ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL); return ASE_NULL; } - tmp = ASE_AWK_STR_BUF(buf); - if (len != ASE_NULL) *len = ASE_AWK_STR_LEN(buf); + tmp = ASE_STR_BUF(buf); + if (len != ASE_NULL) *len = ASE_STR_LEN(buf); - ase_awk_str_close (&fbu); - ase_awk_str_close (&out); + ase_str_close (&fbu); + ase_str_close (&out); } return tmp; @@ -721,7 +721,7 @@ int ase_awk_valtonum ( } #ifdef _DEBUG - run->awk->prmfns.dprintf ( + run->awk->prmfns.misc.dprintf ( ASE_T("ERROR: WRONG VALUE TYPE [%d] in ase_awk_valtonum\n"), v->type); #endif @@ -750,7 +750,7 @@ int ase_awk_strtonum ( } -#define __DPRINTF run->awk->prmfns.dprintf +#define __DPRINTF run->awk->prmfns.misc.dprintf static int __print_pair (ase_awk_pair_t* pair, void* arg) { diff --git a/ase/awk/val.h b/ase/awk/val.h index 0d7928d9..4f1d5a45 100644 --- a/ase/awk/val.h +++ b/ase/awk/val.h @@ -1,5 +1,5 @@ /* - * $Id: val.h,v 1.61 2007-02-18 11:12:18 bacon Exp $ + * $Id: val.h,v 1.62 2007-02-23 08:17:51 bacon Exp $ * * {License} */ @@ -11,7 +11,7 @@ #error Include first #endif -#include +#include #include enum ase_awk_val_type_t @@ -189,7 +189,7 @@ ase_bool_t ase_awk_valtobool ( ase_char_t* ase_awk_valtostr ( ase_awk_run_t* run, ase_awk_val_t* val, - int opt, ase_awk_str_t* buf, ase_size_t* len); + int opt, ase_str_t* buf, ase_size_t* len); int ase_awk_valtonum ( ase_awk_run_t* run, ase_awk_val_t* v, ase_long_t* l, ase_real_t* r); diff --git a/ase/cmn/makefile.msw.bcc b/ase/cmn/makefile.msw.bcc index cd80b96f..348f9a4b 100644 --- a/ase/cmn/makefile.msw.bcc +++ b/ase/cmn/makefile.msw.bcc @@ -1,6 +1,6 @@ OUT = asecmn -C_SRCS = str.c +C_SRCS = mem.c str.c C_OBJS = $(C_SRCS:.c=.obj) CC = bcc32 diff --git a/ase/cmn/mem.h b/ase/cmn/mem.h index 6848f5da..a28c23ec 100644 --- a/ase/cmn/mem.h +++ b/ase/cmn/mem.h @@ -1,5 +1,5 @@ /* - * $Id: mem.h,v 1.1 2007-02-23 07:13:58 bacon Exp $ + * $Id: mem.h,v 1.2 2007-02-23 08:17:51 bacon Exp $ * * {License} */ @@ -16,7 +16,7 @@ extern "C" { void* ase_memcpy (void* dst, const void* src, ase_size_t n); void* ase_memset (void* dst, int val, ase_size_t n); -int ase_memcmp (const void* s1, const void* s2, ase_size_t n); +int ase_memcmp (const void* s1, const void* s2, ase_size_t n); #ifdef __cplusplus } diff --git a/ase/cmn/str.c b/ase/cmn/str.c index c065d988..2eff3e3f 100644 --- a/ase/cmn/str.c +++ b/ase/cmn/str.c @@ -1,10 +1,11 @@ /* - * $Id: str.c,v 1.4 2007-02-23 06:43:30 bacon Exp $ + * $Id: str.c,v 1.5 2007-02-23 08:17:51 bacon Exp $ * * {License} */ #include +#include ase_size_t ase_strlen (const ase_char_t* str) { @@ -309,7 +310,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 (str->buf != ASE_NULL) { - ASE_MEMCPY (str->mmgr, tmp, str->buf, + ase_memcpy (tmp, str->buf, ASE_SIZEOF(ase_char_t)*(str->capa+1)); ASE_FREE (str->mmgr, str->buf); } diff --git a/ase/macros.h b/ase/macros.h index c8de40e3..21abea3b 100644 --- a/ase/macros.h +++ b/ase/macros.h @@ -1,5 +1,5 @@ /* - * $Id: macros.h,v 1.51 2007-02-23 06:43:30 bacon Exp $ + * $Id: macros.h,v 1.52 2007-02-23 08:17:48 bacon Exp $ * * {License} */ @@ -109,10 +109,6 @@ #define ASE_FREE(mmgr,ptr) (mmgr)->free (mmgr, ptr) #endif -#define ASE_MEMCPY(mmgr,dst,src,len) (mmgr)->memcpy (mmgr, dst, src, len) -#define ASE_MEMSET(mmgr,dst,val,len) (mmgr)->memset (mmgr, dst, val, len) -#define ASE_MEMCMP(mmgr,m1,m2,len) (mmgr)->memcmp (mmgr, m1, m2, len) - #define ASE_ISUPPER(ccls,c) (ccls)->is_upper (ccls, c) #define ASE_ISLOWER(ccls,c) (ccls)->is_lower (ccls, c) #define ASE_ISALPHA(ccls,c) (ccls)->is_alpha (ccls, c) diff --git a/ase/test/awk/awk.c b/ase/test/awk/awk.c index b1c10213..7ed55a95 100644 --- a/ase/test/awk/awk.c +++ b/ase/test/awk/awk.c @@ -1,5 +1,5 @@ /* - * $Id: awk.c,v 1.174 2007-02-21 04:09:28 bacon Exp $ + * $Id: awk.c,v 1.175 2007-02-23 08:17:51 bacon Exp $ */ #include @@ -189,7 +189,7 @@ static ase_ssize_t awk_extio_pipe ( if (ferror((FILE*)epa->handle)) return -1; return 0; } - return ase_awk_strlen(data); + return ase_strlen(data); } case ASE_AWK_IO_WRITE: @@ -268,7 +268,7 @@ static ase_ssize_t awk_extio_file ( if (ferror((FILE*)epa->handle)) return -1; return 0; } - return ase_awk_strlen(data); + return ase_strlen(data); } case ASE_AWK_IO_WRITE: @@ -383,7 +383,7 @@ static ase_ssize_t awk_extio_console ( infile_no++; } - return ase_awk_strlen(data); + return ase_strlen(data); } else if (cmd == ASE_AWK_IO_WRITE) { @@ -440,7 +440,7 @@ static int open_extio_console (ase_awk_extio_t* epa) awk_dprintf (ASE_T(" console(r) - %s\n"), infiles[infile_no]); if (ase_awk_setfilename ( epa->run, infiles[infile_no], - ase_awk_strlen(infiles[infile_no])) == -1) + ase_strlen(infiles[infile_no])) == -1) { fclose (fp); return -1; @@ -581,32 +581,32 @@ struct prmfns_data_t }; #endif -static void* awk_malloc (ase_size_t n, void* custom_data) +static void* awk_malloc (ase_mmgr_t* mmgr, ase_size_t n) { #ifdef _WIN32 - return HeapAlloc (((prmfns_data_t*)custom_data)->heap, 0, n); + return HeapAlloc (((prmfns_data_t*)mmgr->custom_data)->heap, 0, n); #else return malloc (n); #endif } -static void* awk_realloc (void* ptr, ase_size_t n, void* custom_data) +static void* awk_realloc (ase_mmgr_t* mmgr, void* ptr, ase_size_t n) { #ifdef _WIN32 /* HeapReAlloc behaves differently from realloc */ if (ptr == NULL) - return HeapAlloc (((prmfns_data_t*)custom_data)->heap, 0, n); + return HeapAlloc (((prmfns_data_t*)mmgr->custom_data)->heap, 0, n); else - return HeapReAlloc (((prmfns_data_t*)custom_data)->heap, 0, ptr, n); + return HeapReAlloc (((prmfns_data_t*)mmgr->custom_data)->heap, 0, ptr, n); #else return realloc (ptr, n); #endif } -static void awk_free (void* ptr, void* custom_data) +static void awk_free (ase_mmgr_t* mmgr, void* ptr) { #ifdef _WIN32 - HeapFree (((prmfns_data_t*)custom_data)->heap, 0, ptr); + HeapFree (((prmfns_data_t*)mmgr->custom_data)->heap, 0, ptr); #else free (ptr); #endif @@ -668,20 +668,20 @@ static int awk_main (int argc, ase_char_t* argv[]) { if (mode == 0) { - if (ase_awk_strcmp(argv[i], ASE_T("-m")) == 0) + if (ase_strcmp(argv[i], ASE_T("-m")) == 0) { mfn = ASE_T("main"); } - else if (ase_awk_strcmp(argv[i], ASE_T("-d")) == 0) + else if (ase_strcmp(argv[i], ASE_T("-d")) == 0) { deparse = 1; } - else if (ase_awk_strcmp(argv[i], ASE_T("-f")) == 0) + else if (ase_strcmp(argv[i], ASE_T("-f")) == 0) { /* specify source file */ mode = 1; } - else if (ase_awk_strcmp(argv[i], ASE_T("-a")) == 0) + else if (ase_strcmp(argv[i], ASE_T("-a")) == 0) { /* specify arguments */ mode = 2; @@ -734,7 +734,7 @@ static int awk_main (int argc, ase_char_t* argv[]) } runarg[runarg_count].ptr = argv[i]; - runarg[runarg_count].len = ase_awk_strlen(argv[i]); + runarg[runarg_count].len = ase_strlen(argv[i]); runarg_count++; mode = 0; } @@ -752,33 +752,31 @@ static int awk_main (int argc, ase_char_t* argv[]) memset (&prmfns, 0, ASE_SIZEOF(prmfns)); - prmfns.malloc = awk_malloc; - prmfns.realloc = awk_realloc; - prmfns.free = awk_free; - prmfns.memcpy = awk_memcpy; - prmfns.memset = awk_memset; + prmfns.mmgr.malloc = awk_malloc; + prmfns.mmgr.realloc = awk_realloc; + prmfns.mmgr.free = awk_free; - prmfns.is_upper = (ase_awk_isctype_t)ase_isupper; - prmfns.is_lower = (ase_awk_isctype_t)ase_islower; - prmfns.is_alpha = (ase_awk_isctype_t)ase_isalpha; - prmfns.is_digit = (ase_awk_isctype_t)ase_isdigit; - prmfns.is_xdigit = (ase_awk_isctype_t)ase_isxdigit; - prmfns.is_alnum = (ase_awk_isctype_t)ase_isalnum; - prmfns.is_space = (ase_awk_isctype_t)ase_isspace; - prmfns.is_print = (ase_awk_isctype_t)ase_isprint; - prmfns.is_graph = (ase_awk_isctype_t)ase_isgraph; - prmfns.is_cntrl = (ase_awk_isctype_t)ase_iscntrl; - prmfns.is_punct = (ase_awk_isctype_t)ase_ispunct; - prmfns.to_upper = (ase_awk_toctype_t)ase_toupper; - prmfns.to_lower = (ase_awk_toctype_t)ase_tolower; + prmfns.ccls.is_upper = ase_isupper; + prmfns.ccls.is_lower = ase_islower; + prmfns.ccls.is_alpha = ase_isalpha; + prmfns.ccls.is_digit = ase_isdigit; + prmfns.ccls.is_xdigit = ase_isxdigit; + prmfns.ccls.is_alnum = ase_isalnum; + prmfns.ccls.is_space = ase_isspace; + prmfns.ccls.is_print = ase_isprint; + prmfns.ccls.is_graph = ase_isgraph; + prmfns.ccls.is_cntrl = ase_iscntrl; + prmfns.ccls.is_punct = ase_ispunct; + prmfns.ccls.to_upper = ase_toupper; + prmfns.ccls.to_lower = ase_tolower; - prmfns.pow = awk_pow; - prmfns.sprintf = ase_sprintf; - prmfns.aprintf = awk_aprintf; - prmfns.dprintf = awk_dprintf; - prmfns.abort = awk_abort; - prmfns.lock = NULL; - prmfns.unlock = NULL; + prmfns.misc.pow = awk_pow; + prmfns.misc.sprintf = ase_sprintf; + prmfns.misc.aprintf = awk_aprintf; + prmfns.misc.dprintf = awk_dprintf; + prmfns.misc.abort = awk_abort; + prmfns.misc.lock = NULL; + prmfns.misc.unlock = NULL; #ifdef _WIN32 prmfns_data.heap = HeapCreate (0, 1000000, 1000000); @@ -788,7 +786,7 @@ static int awk_main (int argc, ase_char_t* argv[]) return -1; } - prmfns.custom_data = &prmfns_data; + prmfns.mmgr.custom_data = &prmfns_data; #endif if ((awk = ase_awk_open(&prmfns, ASE_NULL, &errnum)) == ASE_NULL) diff --git a/ase/types.h b/ase/types.h index d3d876de..1418287f 100644 --- a/ase/types.h +++ b/ase/types.h @@ -1,5 +1,5 @@ /* - * $Id: types.h,v 1.71 2007-02-23 06:43:30 bacon Exp $ + * $Id: types.h,v 1.72 2007-02-23 08:17:48 bacon Exp $ * * {License} */ @@ -238,10 +238,6 @@ typedef void* (*ase_malloc_t) (ase_mmgr_t* mmgr, ase_size_t n); typedef void* (*ase_realloc_t) (ase_mmgr_t* mmgr, void* ptr, ase_size_t n); typedef void (*ase_free_t) (ase_mmgr_t* mmgr, void* ptr); -typedef void* (*ase_memcpy_t) (ase_mmgr_t* mmgr, void* dst, const void* src, ase_size_t n); -typedef void* (*ase_memset_t) (ase_mmgr_t* mmgr, void* dst, int val, ase_size_t n); -typedef void* (*ase_memcmp_t) (ase_mmgr_t* mmgr, const void* m1, const void* m2, ase_size_t n); - typedef ase_bool_t (*ase_isccls_t) (ase_ccls_t* ccls, ase_cint_t c); typedef ase_cint_t (*ase_toccls_t) (ase_ccls_t* ccls, ase_cint_t c); @@ -256,9 +252,6 @@ struct ase_mmgr_t ase_malloc_t malloc; ase_realloc_t realloc; ase_free_t free; - ase_memcpy_t memcpy; - ase_memset_t memset; - ase_memcmp_t memcmp; void* custom_data; };