cleaned up code

This commit is contained in:
2009-07-19 06:02:24 +00:00
parent 07af9f53fb
commit 35e65743ab
8 changed files with 399 additions and 690 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: Awk.cpp 236 2009-07-16 08:27:53Z hyunghwan.chung $
* $Id: Awk.cpp 239 2009-07-18 12:02:24Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -1579,42 +1579,28 @@ int Awk::deleteFunction (const char_t* name)
return n;
}
int Awk::getWord (
const char_t* ow, qse_size_t owl,
const char_t** nw, qse_size_t* nwl)
int Awk::getWord (const cstr_t* ow, cstr_t* nw)
{
QSE_ASSERT (awk != QSE_NULL);
return qse_awk_getword (awk, ow, owl, nw, nwl);
return qse_awk_getword (awk, ow, nw);
}
int Awk::setWord (const char_t* ow, const char_t* nw)
{
return setWord (ow, qse_strlen(ow), nw, qse_strlen(nw));
}
int Awk::setWord (
const char_t* ow, qse_size_t owl,
const char_t* nw, qse_size_t nwl)
int Awk::setWord (const cstr_t* ow, const cstr_t* nw)
{
QSE_ASSERT (awk != QSE_NULL);
return qse_awk_setword (awk, ow, owl, nw, nwl);
return qse_awk_setword (awk, ow, nw);
}
int Awk::unsetWord (const char_t* ow)
{
return unsetWord (ow, qse_strlen(ow));
}
int Awk::unsetWord (const char_t* ow, qse_size_t owl)
int Awk::unsetWord (const cstr_t* w)
{
QSE_ASSERT (awk != QSE_NULL);
return qse_awk_setword (awk, ow, owl, QSE_NULL, 0);
return qse_awk_unsetword (awk, w);
}
int Awk::unsetAllWords ()
void Awk::unsetAllWords ()
{
QSE_ASSERT (awk != QSE_NULL);
return qse_awk_setword (awk, QSE_NULL, 0, QSE_NULL, 0);
qse_awk_unsetallwords (awk);
}
Awk::ssize_t Awk::readSource (

View File

@ -1,5 +1,5 @@
/*
* $Id: awk.c 232 2009-07-14 08:06:14Z hyunghwan.chung $
* $Id: awk.c 239 2009-07-18 12:02:24Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -27,14 +27,6 @@ QSE_IMPLEMENT_COMMON_FUNCTIONS (awk)
#define SETERR(awk,code) qse_awk_seterrnum(awk,code)
#define SETERRARG(awk,code,line,arg,leng) \
do { \
qse_cstr_t errarg; \
errarg.len = (leng); \
errarg.ptr = (arg); \
qse_awk_seterror ((awk), (code), (line), &errarg); \
} while (0)
static void free_fun (qse_map_t* map, void* vptr, qse_size_t vlen)
{
qse_awk_t* awk = *(qse_awk_t**)QSE_XTN(map);
@ -360,34 +352,34 @@ void qse_awk_stopall (qse_awk_t* awk)
awk->stopall = QSE_TRUE;
}
int qse_awk_getword (qse_awk_t* awk,
const qse_char_t* okw, qse_size_t olen,
const qse_char_t** nkw, qse_size_t* nlen)
int qse_awk_getword (qse_awk_t* awk, const qse_cstr_t* okw, qse_cstr_t* nkw)
{
qse_map_pair_t* p;
p = qse_map_search (awk->wtab, okw, olen);
p = qse_map_search (awk->wtab, okw->ptr, okw->len);
if (p == QSE_NULL) return -1;
*nkw = ((qse_cstr_t*)p->vptr)->ptr;
*nlen = ((qse_cstr_t*)p->vptr)->len;
nkw->ptr = ((qse_cstr_t*)p->vptr)->ptr;
nkw->len = ((qse_cstr_t*)p->vptr)->len;
return 0;
}
int qse_awk_unsetword (qse_awk_t* awk, const qse_char_t* kw, qse_size_t len)
int qse_awk_unsetword (qse_awk_t* awk, const qse_cstr_t* kw)
{
qse_map_pair_t* p;
p = qse_map_search (awk->wtab, kw, len);
QSE_ASSERT (kw->ptr != QSE_NULL);
p = qse_map_search (awk->wtab, kw->ptr, kw->len);
if (p == QSE_NULL)
{
SETERRARG (awk, QSE_AWK_ENOENT, 0, kw, len);
qse_awk_seterror (awk, QSE_AWK_ENOENT, 0, kw);
return -1;
}
qse_map_delete (awk->rwtab, QSE_MAP_VPTR(p), QSE_MAP_VLEN(p));
qse_map_delete (awk->wtab, kw, len);
qse_map_delete (awk->wtab, kw->ptr, kw->len);
return 0;
}
@ -397,39 +389,45 @@ void qse_awk_unsetallwords (qse_awk_t* awk)
qse_map_clear (awk->rwtab);
}
int qse_awk_setword (qse_awk_t* awk,
const qse_char_t* okw, qse_size_t olen,
const qse_char_t* nkw, qse_size_t nlen)
int qse_awk_setword (
qse_awk_t* awk, const qse_cstr_t* okw, const qse_cstr_t* nkw)
{
if (nkw == QSE_NULL || nlen == 0)
if (nkw == QSE_NULL)
{
if (okw == QSE_NULL || olen == 0)
if (okw == QSE_NULL)
{
/* clear the entire table */
qse_awk_unsetallwords (awk);
return 0;
}
return qse_awk_unsetword (awk, okw, olen);
return qse_awk_unsetword (awk, okw);
}
else if (okw == QSE_NULL || olen == 0)
else if (okw == QSE_NULL)
{
SETERR (awk, QSE_AWK_EINVAL);
return -1;
}
QSE_ASSERT (okw->ptr != QSE_NULL);
QSE_ASSERT (nkw->ptr != QSE_NULL);
/* set the word */
if (qse_map_upsert (awk->wtab,
(qse_char_t*)okw, olen, (qse_char_t*)nkw, nlen) == QSE_NULL)
if (qse_map_upsert (
awk->wtab,
(qse_char_t*)okw->ptr, okw->len,
(qse_char_t*)nkw->ptr, nkw->len) == QSE_NULL)
{
SETERR (awk, QSE_AWK_ENOMEM);
return -1;
}
if (qse_map_upsert (awk->rwtab,
(qse_char_t*)nkw, nlen, (qse_char_t*)okw, olen) == QSE_NULL)
if (qse_map_upsert (
awk->rwtab,
(qse_char_t*)nkw->ptr, nkw->len,
(qse_char_t*)okw->ptr, okw->len) == QSE_NULL)
{
qse_map_delete (awk->wtab, okw, olen);
qse_map_delete (awk->wtab, okw->ptr, okw->len);
SETERR (awk, QSE_AWK_ENOMEM);
return -1;
}

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
/*
* $Id: parse.h 75 2009-02-22 14:10:34Z hyunghwan.chung $
* $Id: parse.h 239 2009-07-18 12:02:24Z hyunghwan.chung $
*
Copyright 2006-2009 Chung, Hyung-Hwan.
@ -36,6 +36,7 @@ enum kw_t
KW_GLOBAL,
KW_IF,
KW_IN,
KW_INCLUDE,
KW_LOCAL,
KW_NEXT,
KW_NEXTFILE,