From e21d307a8c1b78aa66606588866a06f05874cfb2 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Mon, 16 Dec 2019 15:09:58 +0000 Subject: [PATCH] changed arr to use gem instead of hawk --- hawk/lib/Hawk.cpp | 6 +-- hawk/lib/Hawk.hpp | 4 +- hawk/lib/StdHawk.cpp | 4 +- hawk/lib/StdHawk.hpp | 4 +- hawk/lib/arr.c | 115 +++++++++++++++++++++---------------------- hawk/lib/ecs.c | 4 -- hawk/lib/err.c | 2 +- hawk/lib/hawk-arr.h | 6 +-- hawk/lib/hawk.c | 6 +-- hawk/lib/parse.c | 100 ++++++++++++++++++------------------- hawk/lib/pma.c | 2 +- 11 files changed, 124 insertions(+), 129 deletions(-) diff --git a/hawk/lib/Hawk.cpp b/hawk/lib/Hawk.cpp index 8d629611..618a984a 100644 --- a/hawk/lib/Hawk.cpp +++ b/hawk/lib/Hawk.cpp @@ -28,7 +28,7 @@ #include "hawk-prv.h" ///////////////////////////////// -HAWK_BEGIN_NAMESPACE(QSE) +HAWK_BEGIN_NAMESPACE(HAWK) ///////////////////////////////// ////////////////////////////////////////////////////////////////// @@ -1702,7 +1702,7 @@ int Hawk::dispatch_function (Run* run, const fnc_info_t* fi) // call the default constructor on the space allocated above. // no exception handling is implemented here as i know // that Value::Value() doesn't throw an exception - new((QSE::Mmgr*)HAWK_NULL, (void*)&args[i]) Value (); + new((HAWK::Mmgr*)HAWK_NULL, (void*)&args[i]) Value (); } #endif } @@ -2449,5 +2449,5 @@ void* Hawk::modsym (awk_t* awk, void* handle, const char_t* name) return xtn->awk->modsym (handle, name); } ///////////////////////////////// -HAWK_END_NAMESPACE(QSE) +HAWK_END_NAMESPACE(HAWK) ///////////////////////////////// diff --git a/hawk/lib/Hawk.hpp b/hawk/lib/Hawk.hpp index d69e810b..dccc259f 100644 --- a/hawk/lib/Hawk.hpp +++ b/hawk/lib/Hawk.hpp @@ -44,7 +44,7 @@ /// AWK Interpreter ///////////////////////////////// -HAWK_BEGIN_NAMESPACE(QSE) +HAWK_BEGIN_NAMESPACE(HAWK) ///////////////////////////////// /// @@ -1424,7 +1424,7 @@ private: }; ///////////////////////////////// -HAWK_END_NAMESPACE(QSE) +HAWK_END_NAMESPACE(HAWK) ///////////////////////////////// #endif diff --git a/hawk/lib/StdHawk.cpp b/hawk/lib/StdHawk.cpp index 66efc422..6e5a75f0 100644 --- a/hawk/lib/StdHawk.cpp +++ b/hawk/lib/StdHawk.cpp @@ -47,7 +47,7 @@ ///////////////////////////////// -HAWK_BEGIN_NAMESPACE(QSE) +HAWK_BEGIN_NAMESPACE(HAWK) ///////////////////////////////// StdHawk::ioattr_t StdHawk::default_ioattr; @@ -1371,6 +1371,6 @@ StdHawk::ssize_t StdHawk::SourceString::write (Data& io, const char_t* buf, size } ///////////////////////////////// -HAWK_END_NAMESPACE(QSE) +HAWK_END_NAMESPACE(HAWK) ///////////////////////////////// diff --git a/hawk/lib/StdHawk.hpp b/hawk/lib/StdHawk.hpp index dfbb7bee..63e1f48a 100644 --- a/hawk/lib/StdHawk.hpp +++ b/hawk/lib/StdHawk.hpp @@ -34,7 +34,7 @@ /// Standard AWK Interpreter ///////////////////////////////// -HAWK_BEGIN_NAMESPACE(QSE) +HAWK_BEGIN_NAMESPACE(HAWK) //////////////////////////////// /// @@ -219,7 +219,7 @@ private: }; ///////////////////////////////// -HAWK_END_NAMESPACE(QSE) +HAWK_END_NAMESPACE(HAWK) ///////////////////////////////// #endif diff --git a/hawk/lib/arr.c b/hawk/lib/arr.c index d46aa79c..afdd798a 100644 --- a/hawk/lib/arr.c +++ b/hawk/lib/arr.c @@ -70,13 +70,13 @@ static HAWK_INLINE slot_t* alloc_slot (hawk_arr_t* arr, void* dptr, hawk_oow_t d if (arr->copier == HAWK_ARR_COPIER_SIMPLE) { - n = (slot_t*)hawk_allocmem(arr->hawk, HAWK_SIZEOF(slot_t)); + n = (slot_t*)hawk_gem_allocmem(arr->gem, HAWK_SIZEOF(slot_t)); if (!n) return HAWK_NULL; DPTR(n) = dptr; } else if (arr->copier == HAWK_ARR_COPIER_INLINE) { - n = (slot_t*)hawk_allocmem(arr->hawk, HAWK_SIZEOF(slot_t) + TOB(arr,dlen)); + n = (slot_t*)hawk_gem_allocmem(arr->gem, HAWK_SIZEOF(slot_t) + TOB(arr,dlen)); if (!n) return HAWK_NULL; HAWK_MEMCPY (n + 1, dptr, TOB(arr,dlen)); @@ -84,12 +84,12 @@ static HAWK_INLINE slot_t* alloc_slot (hawk_arr_t* arr, void* dptr, hawk_oow_t d } else { - n = (slot_t*)hawk_allocmem(arr->hawk, HAWK_SIZEOF(slot_t)); + n = (slot_t*)hawk_gem_allocmem(arr->gem, HAWK_SIZEOF(slot_t)); if (!n) return HAWK_NULL; - DPTR(n) = arr->copier (arr, dptr, dlen); + DPTR(n) = arr->copier(arr, dptr, dlen); if (DPTR(n) == HAWK_NULL) { - hawk_freemem (arr->hawk, n); + hawk_gem_freemem (arr->gem, n); return HAWK_NULL; } } @@ -99,16 +99,16 @@ static HAWK_INLINE slot_t* alloc_slot (hawk_arr_t* arr, void* dptr, hawk_oow_t d return n; } -hawk_arr_t* hawk_arr_open (hawk_t* awk, hawk_oow_t xtnsize, hawk_oow_t capa) +hawk_arr_t* hawk_arr_open (hawk_gem_t* gem, hawk_oow_t xtnsize, hawk_oow_t capa) { hawk_arr_t* arr; - arr = (hawk_arr_t*)hawk_allocmem(awk, HAWK_SIZEOF(hawk_arr_t) + xtnsize); + arr = (hawk_arr_t*)hawk_gem_allocmem(gem, HAWK_SIZEOF(hawk_arr_t) + xtnsize); if (arr == HAWK_NULL) return HAWK_NULL; - if (hawk_arr_init(arr, awk, capa) <= -1) + if (hawk_arr_init(arr, gem, capa) <= -1) { - hawk_freemem (awk, arr); + hawk_gem_freemem (gem, arr); return HAWK_NULL; } @@ -119,14 +119,14 @@ hawk_arr_t* hawk_arr_open (hawk_t* awk, hawk_oow_t xtnsize, hawk_oow_t capa) void hawk_arr_close (hawk_arr_t* arr) { hawk_arr_fini (arr); - hawk_freemem (arr->hawk, arr); + hawk_gem_freemem (arr->gem, arr); } -int hawk_arr_init (hawk_arr_t* arr, hawk_t* awk, hawk_oow_t capa) +int hawk_arr_init (hawk_arr_t* arr, hawk_gem_t* gem, hawk_oow_t capa) { HAWK_MEMSET (arr, 0, HAWK_SIZEOF(*arr)); - arr->hawk = awk; + arr->gem = gem; arr->size = 0; arr->capa = 0; arr->slot = HAWK_NULL; @@ -145,7 +145,7 @@ void hawk_arr_fini (hawk_arr_t* arr) if (arr->slot) { - hawk_freemem (arr->hawk, arr->slot); + hawk_gem_freemem (arr->gem, arr->slot); arr->slot = HAWK_NULL; arr->capa = 0; } @@ -160,7 +160,7 @@ void hawk_arr_setscale (hawk_arr_t* arr, int scale) { /* The scale should be larger than 0 and less than or equal to the * maximum value that the hawk_uint8_t type can hold */ - HAWK_ASSERT (arr->hawk, scale > 0 && scale <= HAWK_TYPE_MAX(hawk_uint8_t)); + /*HAWK_ASSERT (arr->gem, scale > 0 && scale <= HAWK_TYPE_MAX(hawk_uint8_t));*/ if (scale <= 0) scale = 1; if (scale > HAWK_TYPE_MAX(hawk_uint8_t)) scale = HAWK_TYPE_MAX(hawk_uint8_t); @@ -240,12 +240,12 @@ hawk_arr_t* hawk_arr_setcapa (hawk_arr_t* arr, hawk_oow_t capa) { /* to trigger freeers on the items truncated */ hawk_arr_delete (arr, capa, arr->size - capa); - HAWK_ASSERT (arr->hawk, arr->size <= capa); + /*HAWK_ASSERT (arr->gem, arr->size <= capa);*/ } if (capa > 0) { - tmp = (slot_t**)hawk_reallocmem(arr->hawk, arr->slot, HAWK_SIZEOF(*arr->slot) * capa); + tmp = (slot_t**)hawk_gem_reallocmem(arr->gem, arr->slot, HAWK_SIZEOF(*arr->slot) * capa); if (!tmp) return HAWK_NULL; } else @@ -253,7 +253,7 @@ hawk_arr_t* hawk_arr_setcapa (hawk_arr_t* arr, hawk_oow_t capa) if (arr->slot) { hawk_arr_clear (arr); - hawk_freemem (arr->hawk, arr->slot); + hawk_gem_freemem (arr->gem, arr->slot); } tmp = HAWK_NULL; @@ -272,12 +272,10 @@ hawk_oow_t hawk_arr_search (hawk_arr_t* arr, hawk_oow_t pos, const void* dptr, h for (i = pos; i < arr->size; i++) { if (arr->slot[i] == HAWK_NULL) continue; - - if (arr->comper (arr, - DPTR(arr->slot[i]), DLEN(arr->slot[i]), - dptr, dlen) == 0) return i; + if (arr->comper(arr, DPTR(arr->slot[i]), DLEN(arr->slot[i]), dptr, dlen) == 0) return i; } + hawk_gem_seterrnum (arr->gem, HAWK_NULL, HAWK_ENOENT); return HAWK_ARR_NIL; } @@ -292,20 +290,18 @@ hawk_oow_t hawk_arr_rsearch (hawk_arr_t* arr, hawk_oow_t pos, const void* dptr, for (i = pos + 1; i-- > 0; ) { if (arr->slot[i] == HAWK_NULL) continue; - - if (arr->comper (arr, - DPTR(arr->slot[i]), DLEN(arr->slot[i]), - dptr, dlen) == 0) return i; + if (arr->comper (arr, DPTR(arr->slot[i]), DLEN(arr->slot[i]), dptr, dlen) == 0) return i; } } + hawk_gem_seterrnum (arr->gem, HAWK_NULL, HAWK_ENOENT); return HAWK_ARR_NIL; } hawk_oow_t hawk_arr_upsert (hawk_arr_t* arr, hawk_oow_t pos, void* dptr, hawk_oow_t dlen) { if (pos < arr->size) return hawk_arr_update (arr, pos, dptr, dlen); - return hawk_arr_insert (arr, pos, dptr, dlen); + return hawk_arr_insert(arr, pos, dptr, dlen); } hawk_oow_t hawk_arr_insert (hawk_arr_t* arr, hawk_oow_t pos, void* dptr, hawk_oow_t dlen) @@ -329,44 +325,46 @@ hawk_oow_t hawk_arr_insert (hawk_arr_t* arr, hawk_oow_t pos, void* dptr, hawk_oo if (arr->sizer) { - capa = arr->sizer (arr, mincapa); + capa = arr->sizer(arr, mincapa); } else { if (arr->capa <= 0) { - HAWK_ASSERT (arr->hawk, arr->size <= 0); - capa = (pos < 16)? 16: (pos + 1); + /*HAWK_ASSERT (arr->gem, arr->size <= 0);*/ + capa = HAWK_ALIGN_POW2(pos + 1, 64); } else { hawk_oow_t bound = (pos >= arr->size)? pos: arr->size; + capa = HAWK_ALIGN_POW2(bound + 1, 64); do { capa = arr->capa * 2; } while (capa <= bound); } } - + do { - if (hawk_arr_setcapa(arr,capa) != HAWK_NULL) break; + if (hawk_arr_setcapa(arr, capa) != HAWK_NULL) break; if (capa <= mincapa) { if (arr->freeer) arr->freeer (arr, DPTR(slot), DLEN(slot)); - hawk_freemem (arr->hawk, slot); + hawk_gem_freemem (arr->gem, slot); return HAWK_ARR_NIL; } capa--; /* let it retry after lowering the capacity */ } while (1); - } - if (pos >= arr->capa || arr->size >= arr->capa) - { - /* the buffer is not still enough after resizing */ - if (arr->freeer) arr->freeer (arr, DPTR(slot), DLEN(slot)); - hawk_freemem (arr->hawk, slot); - return HAWK_ARR_NIL; + if (pos >= arr->capa || arr->size >= arr->capa) /* can happen if the sizer() callback isn't good enough */ + { + /* the buffer is not still enough after resizing */ + if (arr->freeer) arr->freeer (arr, DPTR(slot), DLEN(slot)); + hawk_gem_freemem (arr->gem, slot); + hawk_gem_seterrnum (arr->gem, HAWK_NULL, HAWK_EBUFFULL); + return HAWK_ARR_NIL; + } } /* fill in the gap with HAWK_NULL */ @@ -388,13 +386,17 @@ hawk_oow_t hawk_arr_update (hawk_arr_t* arr, hawk_oow_t pos, void* dptr, hawk_oo { slot_t* c; - if (pos >= arr->size) return HAWK_ARR_NIL; + if (pos >= arr->size) + { + hawk_gem_seterrnum (arr->gem, HAWK_NULL, HAWK_EINVAL); + return HAWK_ARR_NIL; + } c = arr->slot[pos]; if (c == HAWK_NULL) { /* no previous data */ - arr->slot[pos] = alloc_slot (arr, dptr, dlen); + arr->slot[pos] = alloc_slot(arr, dptr, dlen); if (arr->slot[pos] == HAWK_NULL) return HAWK_ARR_NIL; } else @@ -407,11 +409,11 @@ hawk_oow_t hawk_arr_update (hawk_arr_t* arr, hawk_oow_t pos, void* dptr, hawk_oo else { /* updated to different data */ - slot_t* slot = alloc_slot (arr, dptr, dlen); + slot_t* slot = alloc_slot(arr, dptr, dlen); if (slot == HAWK_NULL) return HAWK_ARR_NIL; if (arr->freeer) arr->freeer (arr, DPTR(c), DLEN(c)); - hawk_freemem (arr->hawk, c); + hawk_gem_freemem (arr->gem, c); arr->slot[pos] = slot; } @@ -436,8 +438,7 @@ hawk_oow_t hawk_arr_delete (hawk_arr_t* arr, hawk_oow_t index, hawk_oow_t count) if (c != HAWK_NULL) { if (arr->freeer) arr->freeer (arr, DPTR(c), DLEN(c)); - hawk_freemem (arr->hawk, c); - + hawk_gem_freemem (arr->gem, c); arr->slot[i] = HAWK_NULL; } } @@ -468,8 +469,7 @@ hawk_oow_t hawk_arr_uplete (hawk_arr_t* arr, hawk_oow_t index, hawk_oow_t count) if (c != HAWK_NULL) { if (arr->freeer) arr->freeer (arr, DPTR(c), DLEN(c)); - hawk_freemem (arr->hawk, c); - + hawk_gem_freemem (arr->gem, c); arr->slot[i] = HAWK_NULL; } } @@ -486,9 +486,8 @@ void hawk_arr_clear (hawk_arr_t* arr) slot_t* c = arr->slot[i]; if (c != HAWK_NULL) { - if (arr->freeer) - arr->freeer (arr, DPTR(c), DLEN(c)); - hawk_freemem (arr->hawk, c); + if (arr->freeer) arr->freeer (arr, DPTR(c), DLEN(c)); + hawk_gem_freemem (arr->gem, c); arr->slot[i] = HAWK_NULL; } } @@ -568,7 +567,7 @@ hawk_oow_t hawk_arr_pushstack (hawk_arr_t* arr, void* dptr, hawk_oow_t dlen) void hawk_arr_popstack (hawk_arr_t* arr) { - HAWK_ASSERT (arr->hawk, arr->size > 0); + /*HAWK_ASSERT (arr->gem, arr->size > 0);*/ hawk_arr_delete (arr, arr->size - 1, 1); } @@ -679,10 +678,10 @@ hawk_oow_t hawk_arr_pushheap (hawk_arr_t* arr, void* dptr, hawk_oow_t dlen) /* add a value at the back of the array */ index = arr->size; - if (hawk_arr_insert (arr, index, dptr, dlen) == HAWK_ARR_NIL) return HAWK_ARR_NIL; + if (hawk_arr_insert(arr, index, dptr, dlen) == HAWK_ARR_NIL) return HAWK_ARR_NIL; HEAP_UPDATE_POS (arr, index); - HAWK_ASSERT (arr->hawk, arr->size == index + 1); + /*HAWK_ASSERT (arr->gem, arr->size == index + 1);*/ /* move the item upto the top if it's greater than the parent items */ sift_up (arr, index); @@ -691,7 +690,7 @@ hawk_oow_t hawk_arr_pushheap (hawk_arr_t* arr, void* dptr, hawk_oow_t dlen) void hawk_arr_popheap (hawk_arr_t* arr) { - HAWK_ASSERT (arr->hawk, arr->size > 0); + /*HAWK_ASSERT (arr->gem, arr->size > 0);*/ hawk_arr_deleteheap (arr, 0); } @@ -699,8 +698,8 @@ void hawk_arr_deleteheap (hawk_arr_t* arr, hawk_oow_t index) { slot_t* tmp; - HAWK_ASSERT (arr->hawk, arr->size > 0); - HAWK_ASSERT (arr->hawk, index < arr->size); + /*HAWK_ASSERT (arr->gem, arr->size > 0); + HAWK_ASSERT (arr->gem, index < arr->size);*/ /* remember the item to destroy */ tmp = arr->slot[index]; @@ -725,7 +724,7 @@ void hawk_arr_deleteheap (hawk_arr_t* arr, hawk_oow_t index) /* destroy the actual item */ if (arr->freeer) arr->freeer (arr, DPTR(tmp), DLEN(tmp)); - hawk_freemem (arr->hawk, tmp); + hawk_gem_freemem (arr->gem, tmp); /* empty the last slot */ arr->slot[arr->size] = HAWK_NULL; @@ -737,7 +736,7 @@ hawk_oow_t hawk_arr_updateheap (hawk_arr_t* arr, hawk_oow_t index, void* dptr, h int n; tmp = arr->slot[index]; - HAWK_ASSERT (arr->hawk, tmp != HAWK_NULL); + /*HAWK_ASSERT (arr->gem, tmp != HAWK_NULL);*/ n = arr->comper(arr, dptr, dlen, DPTR(tmp), DLEN(tmp)); if (n) diff --git a/hawk/lib/ecs.c b/hawk/lib/ecs.c index 87d046fc..4222f76b 100644 --- a/hawk/lib/ecs.c +++ b/hawk/lib/ecs.c @@ -70,14 +70,12 @@ hawk_oow_t hawk_becs_ncatuchars (hawk_becs_t* str, const hawk_uch_t* s, hawk_oow hawk_oow_t bcslen, ucslen; ucslen = len; - //if (qse_wcsntombsnwithcmgr(s, &ucslen, QSE_NULL, &bcslen, cmgr) <= -1) return (hawk_oow_t)-1; if (hawk_conv_uchars_to_bchars_with_cmgr(s, &ucslen, HAWK_NULL, &bcslen, cmgr) <= -1) return (hawk_oow_t)-1; if (hawk_becs_resize_for_ncat(str, bcslen) <= 0) return -1; ucslen = len; bcslen = str->capa - str->val.len; - //qse_wcsntombsnwithcmgr(s, &ucslen, &str->val.ptr[str->val.len], &bcslen, cmgr); hawk_conv_uchars_to_bchars_with_cmgr (s, &ucslen, &str->val.ptr[str->val.len], &bcslen, cmgr); str->val.len += bcslen; str->val.ptr[str->val.len] = '\0'; @@ -90,14 +88,12 @@ hawk_oow_t hawk_uecs_ncatbchars (hawk_uecs_t* str, const hawk_bch_t* s, hawk_oow hawk_oow_t bcslen, ucslen; bcslen = len; - //if (qse_mbsntowcsnallwithcmgr(s, &bcslen, QSE_NULL, &ucslen, cmgr) <= -1) return (hawk_oow_t)-1; if (hawk_conv_bchars_to_uchars_with_cmgr(s, &bcslen, HAWK_NULL, &ucslen, cmgr, all) <= -1) return (hawk_oow_t)-1; if (hawk_uecs_resize_for_ncat(str, ucslen) <= 0) return -1; bcslen = len; ucslen = str->capa - str->val.len; - //qse_mbsntowcsnallwithcmgr(s, &bcslen, &str->val.ptr[str->val.len], &ucslen, cmgr); hawk_conv_bchars_to_uchars_with_cmgr (s, &bcslen, &str->val.ptr[str->val.len], &ucslen, cmgr, all); str->val.len += ucslen; str->val.ptr[str->val.len] = '\0'; diff --git a/hawk/lib/err.c b/hawk/lib/err.c index bd55fad7..9414e4cd 100644 --- a/hawk/lib/err.c +++ b/hawk/lib/err.c @@ -92,7 +92,7 @@ const hawk_ooch_t* hawk_dflerrstr (hawk_t* awk, hawk_errnum_t errnum) HAWK_T("variable '${0}' redefined"), HAWK_T("duplicate parameter name '${0}'"), HAWK_T("duplicate global variable '${0}'"), - HAWK_T("duplicate local variable '${0}'"), + HAWK_T("duplicate local variable"), HAWK_T("'${0}' not a valid parameter name"), HAWK_T("'${0}' not a valid variable name"), HAWK_T("variable name missing"), diff --git a/hawk/lib/hawk-arr.h b/hawk/lib/hawk-arr.h index 39ed8fd2..af89bc56 100644 --- a/hawk/lib/hawk-arr.h +++ b/hawk/lib/hawk-arr.h @@ -141,7 +141,7 @@ typedef hawk_arr_walk_t (*hawk_arr_walker_t) ( */ struct hawk_arr_t { - hawk_t* hawk; + hawk_gem_t* gem; hawk_arr_copier_t copier; /* data copier */ hawk_arr_freeer_t freeer; /* data freeer */ hawk_arr_comper_t comper; /* data comparator */ @@ -171,7 +171,7 @@ extern "C" { * The hawk_arr_open() function creates a linear dynamic array. */ HAWK_EXPORT hawk_arr_t* hawk_arr_open ( - hawk_t* awk, /**< memory manager */ + hawk_gem_t* gem, hawk_oow_t ext, /**< extension size in bytes */ hawk_oow_t capa /**< initial array capacity */ ); @@ -188,7 +188,7 @@ HAWK_EXPORT void hawk_arr_close ( */ HAWK_EXPORT int hawk_arr_init ( hawk_arr_t* arr, - hawk_t* awk, + hawk_gem_t* gem, hawk_oow_t capa ); diff --git a/hawk/lib/hawk.c b/hawk/lib/hawk.c index e4665d28..647d8965 100644 --- a/hawk/lib/hawk.c +++ b/hawk/lib/hawk.c @@ -201,9 +201,9 @@ int hawk_init (hawk_t* awk, hawk_mmgr_t* mmgr, hawk_cmgr_t* cmgr, const hawk_prm awk->parse.funs = hawk_htb_open(hawk_getgem(awk), HAWK_SIZEOF(awk), 256, 70, HAWK_SIZEOF(hawk_ooch_t), 1); awk->parse.named = hawk_htb_open(hawk_getgem(awk), HAWK_SIZEOF(awk), 256, 70, HAWK_SIZEOF(hawk_ooch_t), 1); - awk->parse.gbls = hawk_arr_open(awk, HAWK_SIZEOF(awk), 128); - awk->parse.lcls = hawk_arr_open(awk, HAWK_SIZEOF(awk), 64); - awk->parse.params = hawk_arr_open(awk, HAWK_SIZEOF(awk), 32); + awk->parse.gbls = hawk_arr_open(hawk_getgem(awk), HAWK_SIZEOF(awk), 128); + awk->parse.lcls = hawk_arr_open(hawk_getgem(awk), HAWK_SIZEOF(awk), 64); + awk->parse.params = hawk_arr_open(hawk_getgem(awk), HAWK_SIZEOF(awk), 32); awk->fnc.sys = HAWK_NULL; awk->fnc.user = hawk_htb_open(hawk_getgem(awk), HAWK_SIZEOF(awk), 512, 70, HAWK_SIZEOF(hawk_ooch_t), 1); diff --git a/hawk/lib/parse.c b/hawk/lib/parse.c index 5526fa73..1bcd8fef 100644 --- a/hawk/lib/parse.c +++ b/hawk/lib/parse.c @@ -1327,7 +1327,7 @@ static hawk_nde_t* parse_function (hawk_t* awk) if (hawk_arr_insert(awk->parse.params, HAWK_ARR_SIZE(awk->parse.params), pa, pal) == HAWK_ARR_NIL) { - SETERR_LOC (awk, HAWK_ENOMEM, &awk->tok.loc); + ADJERR_LOC (awk, &awk->tok.loc); goto oops; } @@ -1977,7 +1977,7 @@ int hawk_addgblwithucstr (hawk_t* awk, const hawk_uch_t* name) #define HAWK_NUM_STATIC_GBLS \ (HAWK_MAX_GBL_ID-HAWK_MIN_GBL_ID+1) -int hawk_delgblwithbcstr (hawk_t* awk, const hawk_bch_t* name) +int hawk_delgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) { hawk_oow_t n; hawk_bcs_t ncs; @@ -1986,31 +1986,31 @@ int hawk_delgblwithbcstr (hawk_t* awk, const hawk_bch_t* name) ncs.ptr = (hawk_bch_t*)name; ncs.len = hawk_count_bcstr(name); - if (awk->tree.ngbls > awk->tree.ngbls_base) + if (hawk->tree.ngbls > hawk->tree.ngbls_base) { /* this function is not allow after hawk_parse is called */ - hawk_seterrnum (awk, HAWK_EPERM, HAWK_NULL); + hawk_seterrnum (hawk, HAWK_EPERM, HAWK_NULL); return -1; } #if defined(HAWK_OOCH_IS_BCH) - n = hawk_arr_search(awk->parse.gbls, HAWK_NUM_STATIC_GBLS, ncs.ptr, ncs.len); + n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, ncs.ptr, ncs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrnum (awk, HAWK_ENOENT, &ncs); + hawk_seterrbfmt (hawk, HAWK_NULL, HAWK_ENOENT "no such global variable - %.*hs", ncs.len, ncs.ptr); return -1; } #else - wcs.ptr = hawk_dupbtoucstr(awk, ncs.ptr, &wcs.len, 0); + wcs.ptr = hawk_dupbtoucstr(hawk, ncs.ptr, &wcs.len, 0); if (!wcs.ptr) return -1; - n = hawk_arr_search(awk->parse.gbls, HAWK_NUM_STATIC_GBLS, wcs.ptr, wcs.len); + n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, wcs.ptr, wcs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrnum (awk, HAWK_ENOENT, &wcs); - hawk_freemem (awk, wcs.ptr); + hawk_seterrbfmt (hawk, HAWK_NULL, HAWK_ENOENT, "no such global variable - %.*ls", wcs.len, wcs.ptr); + hawk_freemem (hawk, wcs.ptr); return -1; } - hawk_freemem (awk, wcs.ptr); + hawk_freemem (hawk, wcs.ptr); #endif /* invalidate the name if deletion is requested. @@ -2019,16 +2019,16 @@ int hawk_delgblwithbcstr (hawk_t* awk, const hawk_bch_t* name) * again, the entry will be appended again. * never call this funciton unless it is really required. */ /* - awk->parse.gbls.buf[n].name.ptr[0] = HAWK_T('\0'); - awk->parse.gbls.buf[n].name.len = 0; + hawk->parse.gbls.buf[n].name.ptr[0] = HAWK_T('\0'); + hawk->parse.gbls.buf[n].name.len = 0; */ - n = hawk_arr_uplete(awk->parse.gbls, n, 1); - HAWK_ASSERT (awk, n == 1); + n = hawk_arr_uplete(hawk->parse.gbls, n, 1); + HAWK_ASSERT (hawk, n == 1); return 0; } -int hawk_delgblwithucstr (hawk_t* awk, const hawk_uch_t* name) +int hawk_delgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) { hawk_oow_t n; hawk_ucs_t ncs; @@ -2037,29 +2037,29 @@ int hawk_delgblwithucstr (hawk_t* awk, const hawk_uch_t* name) ncs.ptr = (hawk_uch_t*)name; ncs.len = hawk_count_ucstr(name); - if (awk->tree.ngbls > awk->tree.ngbls_base) + if (hawk->tree.ngbls > hawk->tree.ngbls_base) { /* this function is not allow after hawk_parse is called */ - hawk_seterrnum (awk, HAWK_EPERM, HAWK_NULL); + hawk_seterrnum (hawk, HAWK_EPERM, HAWK_NULL); return -1; } #if defined(HAWK_OOCH_IS_BCH) - mbs.ptr = hawk_duputobcstr(awk, ncs.ptr, &mbs.len); + mbs.ptr = hawk_duputobcstr(hawk, ncs.ptr, &mbs.len); if (!mbs.ptr) return -1; - n = hawk_arr_search(awk->parse.gbls, HAWK_NUM_STATIC_GBLS, mbs.ptr, mbs.len); + n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, mbs.ptr, mbs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrnum (awk, HAWK_ENOENT, &mbs); - hawk_freemem (awk, mbs.ptr); + hawk_seterrbfmt (hawk, HAWK_NULL, HAWK_ENOENT, "no such global variable - %.*hs", mbs.len, mbs.ptr); + hawk_freemem (hawk, mbs.ptr); return -1; } - hawk_freemem (awk, mbs.ptr); + hawk_freemem (hawk, mbs.ptr); #else - n = hawk_arr_search(awk->parse.gbls, HAWK_NUM_STATIC_GBLS, ncs.ptr, ncs.len); + n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, ncs.ptr, ncs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrnum (awk, HAWK_ENOENT, &ncs); + hawk_seterrbfmt (hawk, HAWK_NULL, HAWK_ENOENT, "no such global variable - %.*ls", ncs.len, ncs.ptr); return -1; } #endif @@ -2070,16 +2070,16 @@ int hawk_delgblwithucstr (hawk_t* awk, const hawk_uch_t* name) * again, the entry will be appended again. * never call this funciton unless it is really required. */ /* - awk->parse.gbls.buf[n].name.ptr[0] = HAWK_T('\0'); - awk->parse.gbls.buf[n].name.len = 0; + hawk->parse.gbls.buf[n].name.ptr[0] = HAWK_T('\0'); + hawk->parse.gbls.buf[n].name.len = 0; */ - n = hawk_arr_uplete(awk->parse.gbls, n, 1); + n = hawk_arr_uplete(hawk->parse.gbls, n, 1); HAWK_ASSERT (awk, n == 1); return 0; } -int hawk_findgblwithbcstr (hawk_t* awk, const hawk_bch_t* name) +int hawk_findgblwithbcstr (hawk_t* hawk, const hawk_bch_t* name) { hawk_oow_t n; hawk_bcs_t ncs; @@ -2089,29 +2089,29 @@ int hawk_findgblwithbcstr (hawk_t* awk, const hawk_bch_t* name) ncs.len = hawk_count_bcstr(name); #if defined(HAWK_OOCH_IS_BCH) - n = hawk_arr_search(awk->parse.gbls, HAWK_NUM_STATIC_GBLS, ncs.ptr, ncs.len); + n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, ncs.ptr, ncs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrnum (awk, HAWK_ENOENT, &ncs); + hawk_seterrbfmt (hawk, HAWK_NULL, HAWK_ENOENT, "no such global variable - %.*hs", ncs.len, ncs.ptr); return -1; } #else - wcs.ptr = hawk_dupbtoucstr(awk, ncs.ptr, &wcs.len, 0); + wcs.ptr = hawk_dupbtoucstr(hawk, ncs.ptr, &wcs.len, 0); if (!wcs.ptr) return -1; - n = hawk_arr_search(awk->parse.gbls, HAWK_NUM_STATIC_GBLS, wcs.ptr, wcs.len); + n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, wcs.ptr, wcs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrnum (awk, HAWK_ENOENT, &wcs); - hawk_freemem (awk, wcs.ptr); + hawk_seterrbfmt (hawk, HAWK_NULL, HAWK_ENOENT, "no such global variable - %.*ls", wcs.len, wcs.ptr); + hawk_freemem (hawk, wcs.ptr); return -1; } - hawk_freemem (awk, wcs.ptr); + hawk_freemem (hawk, wcs.ptr); #endif return (int)n; } -int hawk_findgblwithucstr (hawk_t* awk, const hawk_uch_t* name) +int hawk_findgblwithucstr (hawk_t* hawk, const hawk_uch_t* name) { hawk_oow_t n; hawk_ucs_t ncs; @@ -2121,21 +2121,21 @@ int hawk_findgblwithucstr (hawk_t* awk, const hawk_uch_t* name) ncs.len = hawk_count_ucstr(name); #if defined(HAWK_OOCH_IS_BCH) - mbs.ptr = hawk_duputobcstr(awk, ncs.ptr, &mbs.len); + mbs.ptr = hawk_duputobcstr(hawk, ncs.ptr, &mbs.len); if (!mbs.ptr) return -1; - n = hawk_arr_search(awk->parse.gbls, HAWK_NUM_STATIC_GBLS, mbs.ptr, mbs.len); + n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, mbs.ptr, mbs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrnum (awk, HAWK_ENOENT, &mbs); - hawk_freemem (awk, mbs.ptr); + hawk_seterrbfmt (hawk, HAWK_NULL, HAWK_ENOENT, "no such global variable - %.*hs", mbs.len, mbs.ptr); + hawk_freemem (hawk, mbs.ptr); return -1; } - hawk_freemem (awk, mbs.ptr); + hawk_freemem (hawk, mbs.ptr); #else - n = hawk_arr_search(awk->parse.gbls, HAWK_NUM_STATIC_GBLS, ncs.ptr, ncs.len); + n = hawk_arr_search(hawk->parse.gbls, HAWK_NUM_STATIC_GBLS, ncs.ptr, ncs.len); if (n == HAWK_ARR_NIL) { - hawk_seterrnum (awk, HAWK_ENOENT, &ncs); + hawk_seterrbfmt (hawk, HAWK_NULL, HAWK_ENOENT, "no such global variable - %.*ls", ncs.len, ncs.ptr); return -1; } #endif @@ -2257,32 +2257,32 @@ static hawk_t* collect_locals (hawk_t* awk, hawk_oow_t nlcls, int istop) n = hawk_arr_search(awk->parse.lcls, nlcls, lcl.ptr, lcl.len); if (n != HAWK_ARR_NIL) { - SETERR_ARG_LOC (awk, HAWK_EDUPLCL, lcl.ptr, lcl.len, &awk->tok.loc); + hawk_seterrbfmt (awk, &awk->tok.loc, HAWK_EDUPLCL, "duplicate local variable - %.*js", lcl.len, lcl.ptr); return HAWK_NULL; } /* check if it conflicts with global variable names */ - n = find_global (awk, &lcl); + n = find_global(awk, &lcl); if (n != HAWK_ARR_NIL) { if (n < awk->tree.ngbls_base) { /* it is a conflict only if it is one of a * static global variable */ - SETERR_ARG_LOC (awk, HAWK_EDUPLCL, lcl.ptr, lcl.len, &awk->tok.loc); + hawk_seterrbfmt (awk, &awk->tok.loc, HAWK_EDUPLCL, "duplicate local variable - %.*js", lcl.len, lcl.ptr); return HAWK_NULL; } } if (HAWK_ARR_SIZE(awk->parse.lcls) >= HAWK_MAX_LCLS) { - SETERR_LOC (awk, HAWK_ELCLTM, &awk->tok.loc); + hawk_seterrbfmt (awk, &awk->tok.loc, HAWK_ELCLTM, "too many local variables defined - %.*js", lcl.len, lcl.ptr); return HAWK_NULL; } - if (hawk_arr_insert (awk->parse.lcls, HAWK_ARR_SIZE(awk->parse.lcls), lcl.ptr, lcl.len) == HAWK_ARR_NIL) + if (hawk_arr_insert(awk->parse.lcls, HAWK_ARR_SIZE(awk->parse.lcls), lcl.ptr, lcl.len) == HAWK_ARR_NIL) { - SETERR_LOC (awk, HAWK_ENOMEM, &awk->tok.loc); + ADJERR_LOC (awk, &awk->tok.loc); return HAWK_NULL; } diff --git a/hawk/lib/pma.c b/hawk/lib/pma.c index 1f836548..a22b4f48 100644 --- a/hawk/lib/pma.c +++ b/hawk/lib/pma.c @@ -25,7 +25,7 @@ */ /* - * This is the TRE memory allocator modified for QSE. + * This is the TRE memory allocator modified for Hawk. * See the original license notice below. */