prefixed many functions and classes with QSE_EXPORT
This commit is contained in:
@ -36,6 +36,10 @@
|
||||
#if defined(_WIN32)
|
||||
# include <windows.h>
|
||||
# include <tchar.h>
|
||||
# if defined(QSE_HAVE_CONFIG_H)
|
||||
# include <ltdl.h>
|
||||
# define USE_LTDL
|
||||
# endif
|
||||
#elif defined(__OS2__)
|
||||
# define INCL_DOSPROCESS
|
||||
# define INCL_DOSERRORS
|
||||
@ -420,19 +424,11 @@ int StdAwk::make_additional_globals (Run* run)
|
||||
int StdAwk::rand (Run& run, Value& ret, const Value* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
#if (QSE_SIZEOF_ULONG_T == 2)
|
||||
# define RANDV_MAX 0x7FFFl
|
||||
#elif (QSE_SIZEOF_ULONG_T == 4)
|
||||
# define RANDV_MAX 0x7FFFFFFFl
|
||||
#elif (QSE_SIZEOF_ULONG_T == 8)
|
||||
# define RANDV_MAX 0x7FFFFFFFFFFFFFFl
|
||||
#else
|
||||
# error Unsupported
|
||||
#endif
|
||||
|
||||
#define RANDV_MAX QSE_TYPE_MAX(long_t)
|
||||
this->prand = qse_randxsulong (this->prand);
|
||||
long_t randv = this->prand % RANDV_MAX;
|
||||
return ret.setFlt ((flt_t)randv / RANDV_MAX);
|
||||
#undef RANDV_MAX
|
||||
}
|
||||
|
||||
int StdAwk::srand (Run& run, Value& ret, const Value* args, size_t nargs,
|
||||
@ -1400,19 +1396,7 @@ StdAwk::flt_t StdAwk::sqrt (flt_t x)
|
||||
|
||||
void* StdAwk::modopen (const qse_char_t* dir, const qse_char_t* name)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
/*TODO: implemente this - use LoadLibrary... */
|
||||
this->setError (QSE_AWK_ENOIMPL);
|
||||
return -1;
|
||||
#elif defined(__OS2__)
|
||||
/*TODO: implemente this */
|
||||
this->setError (QSE_AWK_ENOIMPL);
|
||||
return -1;
|
||||
#elif defined(__DOS__)
|
||||
/*TODO: implemente this */
|
||||
this->setError (QSE_AWK_ENOIMPL);
|
||||
return -1;
|
||||
#else
|
||||
#if defined(USE_LTDL)
|
||||
|
||||
void* h;
|
||||
qse_mchar_t* modpath;
|
||||
@ -1445,32 +1429,43 @@ void* StdAwk::modopen (const qse_char_t* dir, const qse_char_t* name)
|
||||
|
||||
return h;
|
||||
|
||||
#elif defined(_WIN32)
|
||||
/*TODO: implemente this - use LoadLibrary... */
|
||||
this->setError (QSE_AWK_ENOIMPL);
|
||||
return QSE_NULL;
|
||||
#elif defined(__OS2__)
|
||||
/*TODO: implemente this */
|
||||
this->setError (QSE_AWK_ENOIMPL);
|
||||
return QSE_NULL;
|
||||
#elif defined(__DOS__)
|
||||
/*TODO: implemente this */
|
||||
this->setError (QSE_AWK_ENOIMPL);
|
||||
return QSE_NULL;
|
||||
#else
|
||||
|
||||
this->setError (QSE_AWK_ENOIMPL);
|
||||
return QSE_NULL;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
void StdAwk::modclose (void* handle)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
/*TODO: implemente this */
|
||||
#if defined(USE_LTDL)
|
||||
lt_dlclose ((lt_dlhandle)handle);
|
||||
#elif defined(_WIN32)
|
||||
FreeLibrary ((HMODULE)handle);
|
||||
#elif defined(__OS2__)
|
||||
/*TODO: implemente this */
|
||||
#elif defined(__DOS__)
|
||||
/*TODO: implemente this */
|
||||
#else
|
||||
lt_dlclose ((lt_dlhandle)handle);
|
||||
/* nothing to do */
|
||||
#endif
|
||||
}
|
||||
|
||||
void* StdAwk::modsym (void* handle, const qse_char_t* name)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
/*TODO: implemente this */
|
||||
#elif defined(__OS2__)
|
||||
/*TODO: implemente this */
|
||||
#elif defined(__DOS__)
|
||||
/*TODO: implemente this */
|
||||
#else
|
||||
|
||||
void* s;
|
||||
qse_mchar_t* mname;
|
||||
|
||||
@ -1485,7 +1480,19 @@ void* StdAwk::modsym (void* handle, const qse_char_t* name)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(USE_LTDL)
|
||||
s = lt_dlsym ((lt_dlhandle)handle, mname);
|
||||
#elif defined(_WIN32)
|
||||
s = (void*)GetProcAddress ((HMODULE)handle, mname);
|
||||
#elif defined(__OS2__)
|
||||
/*TODO: implemente this */
|
||||
s = QSE_NULL;
|
||||
#elif defined(__DOS__)
|
||||
/*TODO: implemente this */
|
||||
s = QSE_NULL;
|
||||
#else
|
||||
s = QSE_NULL;
|
||||
#endif
|
||||
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
/* nothing to do */
|
||||
@ -1495,7 +1502,6 @@ void* StdAwk::modsym (void* handle, const qse_char_t* name)
|
||||
|
||||
return s;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
int StdAwk::SourceFile::open (Data& io)
|
||||
|
@ -20,8 +20,6 @@
|
||||
|
||||
#include "awk.h"
|
||||
|
||||
QSE_IMPLEMENT_COMMON_FUNCTIONS (awk)
|
||||
|
||||
static void free_fun (qse_htb_t* map, void* vptr, qse_size_t vlen)
|
||||
{
|
||||
qse_awk_t* awk = *(qse_awk_t**)QSE_XTN(map);
|
||||
@ -410,6 +408,21 @@ int qse_awk_clear (qse_awk_t* awk)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void qse_awk_setmmgr (qse_awk_t* awk, qse_mmgr_t* mmgr)
|
||||
{
|
||||
awk->mmgr = mmgr;
|
||||
}
|
||||
|
||||
qse_mmgr_t* qse_awk_getmmgr (qse_awk_t* awk)
|
||||
{
|
||||
return awk->mmgr;
|
||||
}
|
||||
|
||||
void* qse_awk_getxtn (qse_awk_t* awk)
|
||||
{
|
||||
return QSE_XTN (awk);
|
||||
}
|
||||
|
||||
qse_awk_prm_t* qse_awk_getprm (qse_awk_t* awk)
|
||||
{
|
||||
return &awk->prm;
|
||||
|
@ -114,7 +114,7 @@ struct qse_awk_tok_t
|
||||
|
||||
struct qse_awk_t
|
||||
{
|
||||
QSE_DEFINE_COMMON_FIELDS (sed)
|
||||
qse_mmgr_t* mmgr;
|
||||
|
||||
/* primitive functions */
|
||||
qse_awk_prm_t prm;
|
||||
|
@ -4278,9 +4278,9 @@ static qse_awk_nde_t* parse_primary_rex (qse_awk_t* awk, const qse_awk_loc_t* x
|
||||
|
||||
nde->type = QSE_AWK_NDE_REX;
|
||||
nde->loc = *xloc;
|
||||
nde->len = QSE_STR_LEN(awk->tok.name);
|
||||
nde->ptr = qse_awk_cstrdup (awk, QSE_STR_CSTR(awk->tok.name));
|
||||
if (nde->ptr == QSE_NULL) goto oops;
|
||||
nde->str.len = QSE_STR_LEN(awk->tok.name);
|
||||
nde->str.ptr = qse_awk_cstrdup (awk, QSE_STR_CSTR(awk->tok.name));
|
||||
if (nde->str.ptr == QSE_NULL) goto oops;
|
||||
|
||||
nde->code = QSE_AWK_BUILDREX (awk,
|
||||
QSE_STR_PTR(awk->tok.name), QSE_STR_LEN(awk->tok.name),
|
||||
@ -4298,7 +4298,7 @@ static qse_awk_nde_t* parse_primary_rex (qse_awk_t* awk, const qse_awk_loc_t* x
|
||||
oops:
|
||||
QSE_ASSERT (nde != QSE_NULL);
|
||||
if (nde->code) QSE_AWK_FREEREX (awk, nde->code);
|
||||
if (nde->ptr) QSE_AWK_FREE (awk, nde->ptr);
|
||||
if (nde->str.ptr) QSE_AWK_FREE (awk, nde->str.ptr);
|
||||
QSE_AWK_FREE (awk, nde);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
@ -1511,7 +1511,7 @@ qse_awk_fun_t* qse_awk_rtx_findfun (qse_awk_rtx_t* rtx, const qse_char_t* name)
|
||||
/* call an AWK function by the function structure */
|
||||
qse_awk_val_t* qse_awk_rtx_callfun (
|
||||
qse_awk_rtx_t* rtx, qse_awk_fun_t* fun,
|
||||
qse_awk_val_t** args, qse_size_t nargs)
|
||||
qse_awk_val_t* args[], qse_size_t nargs)
|
||||
{
|
||||
struct capture_retval_data_t crdata;
|
||||
qse_awk_val_t* v;
|
||||
@ -1583,7 +1583,7 @@ qse_awk_val_t* qse_awk_rtx_callfun (
|
||||
/* call an AWK function by name */
|
||||
qse_awk_val_t* qse_awk_rtx_call (
|
||||
qse_awk_rtx_t* rtx, const qse_char_t* name,
|
||||
qse_awk_val_t** args, qse_size_t nargs)
|
||||
qse_awk_val_t* args[], qse_size_t nargs)
|
||||
{
|
||||
qse_awk_fun_t* fun;
|
||||
|
||||
@ -1595,7 +1595,7 @@ qse_awk_val_t* qse_awk_rtx_call (
|
||||
|
||||
qse_awk_val_t* qse_awk_rtx_callwithstrs (
|
||||
qse_awk_rtx_t* rtx, const qse_char_t* name,
|
||||
const qse_char_t** args, qse_size_t nargs)
|
||||
const qse_char_t* args[], qse_size_t nargs)
|
||||
{
|
||||
qse_size_t i;
|
||||
qse_awk_val_t** v, * ret;
|
||||
@ -6157,12 +6157,8 @@ static qse_awk_val_t* eval_int (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||
qse_awk_val_t* val;
|
||||
|
||||
val = qse_awk_rtx_makeintval (run, ((qse_awk_nde_int_t*)nde)->val);
|
||||
if (val == QSE_NULL)
|
||||
{
|
||||
ADJERR_LOC (run, &nde->loc);
|
||||
return QSE_NULL;
|
||||
}
|
||||
((qse_awk_val_int_t*)val)->nde = nde;
|
||||
if (val == QSE_NULL) ADJERR_LOC (run, &nde->loc);
|
||||
else ((qse_awk_val_int_t*)val)->nde = nde;
|
||||
|
||||
return val;
|
||||
}
|
||||
@ -6172,12 +6168,8 @@ static qse_awk_val_t* eval_real (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||
qse_awk_val_t* val;
|
||||
|
||||
val = qse_awk_rtx_makefltval (run, ((qse_awk_nde_flt_t*)nde)->val);
|
||||
if (val == QSE_NULL)
|
||||
{
|
||||
ADJERR_LOC (run, &nde->loc);
|
||||
return QSE_NULL;
|
||||
}
|
||||
((qse_awk_val_flt_t*)val)->nde = nde;
|
||||
if (val == QSE_NULL) ADJERR_LOC (run, &nde->loc);
|
||||
else ((qse_awk_val_flt_t*)val)->nde = nde;
|
||||
|
||||
return val;
|
||||
}
|
||||
@ -6189,11 +6181,7 @@ static qse_awk_val_t* eval_str (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||
val = qse_awk_rtx_makestrval (run,
|
||||
((qse_awk_nde_str_t*)nde)->ptr,
|
||||
((qse_awk_nde_str_t*)nde)->len);
|
||||
if (val == QSE_NULL)
|
||||
{
|
||||
ADJERR_LOC (run, &nde->loc);
|
||||
return QSE_NULL;
|
||||
}
|
||||
if (val == QSE_NULL) ADJERR_LOC (run, &nde->loc);
|
||||
|
||||
return val;
|
||||
}
|
||||
@ -6203,14 +6191,9 @@ static qse_awk_val_t* eval_rex (qse_awk_rtx_t* run, qse_awk_nde_t* nde)
|
||||
qse_awk_val_t* val;
|
||||
|
||||
val = qse_awk_rtx_makerexval (run,
|
||||
((qse_awk_nde_rex_t*)nde)->ptr,
|
||||
((qse_awk_nde_rex_t*)nde)->len,
|
||||
&((qse_awk_nde_rex_t*)nde)->str,
|
||||
((qse_awk_nde_rex_t*)nde)->code);
|
||||
if (val == QSE_NULL)
|
||||
{
|
||||
ADJERR_LOC (run, &nde->loc);
|
||||
return QSE_NULL;
|
||||
}
|
||||
if (val == QSE_NULL) ADJERR_LOC (run, &nde->loc);
|
||||
|
||||
return val;
|
||||
}
|
||||
@ -6558,7 +6541,7 @@ read_again:
|
||||
|
||||
#ifdef DEBUG_RUN
|
||||
qse_dprintf (QSE_T("record len = %d str=[%.*s]\n"),
|
||||
(int)QSE_STR_LEN(buf), (int)QSE_STR_LEN(buf), QSE_STR_PTR(buf));
|
||||
(int)QSE_STR_LEN(buf), (int)QSE_STR_LEN(buf), QSE_STR_PTR(buf));
|
||||
#endif
|
||||
if (n == 0)
|
||||
{
|
||||
|
@ -40,8 +40,12 @@
|
||||
#if defined(_WIN32)
|
||||
# include <windows.h>
|
||||
# include <tchar.h>
|
||||
# if defined(QSE_HAVE_CONFIG_H)
|
||||
# include <ltdl.h>
|
||||
# define USE_LTDL
|
||||
# endif
|
||||
#elif defined(__OS2__)
|
||||
# define INCL_DOSPROCESS
|
||||
# define INCL_DOSMODULEMGR
|
||||
# define INCL_DOSERRORS
|
||||
# include <os2.h>
|
||||
#elif defined(__DOS__)
|
||||
@ -52,7 +56,7 @@
|
||||
# define USE_LTDL
|
||||
#endif
|
||||
|
||||
#ifndef QSE_HAVE_CONFIG_H
|
||||
#if !defined(QSE_HAVE_CONFIG_H)
|
||||
# if defined(_WIN32) || defined(__OS2__) || defined(__DOS__)
|
||||
# define HAVE_POW
|
||||
# define HAVE_FMOD
|
||||
@ -313,25 +317,13 @@ static int custom_awk_sprintf (
|
||||
static void* custom_awk_modopen (
|
||||
qse_awk_t* awk, const qse_char_t* dir, const qse_char_t* name)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
/*TODO: implemente this - use LoadLibrary... */
|
||||
qse_awk_seterrnum (awk, QSE_AWK_ENOIMPL, QSE_NULL);
|
||||
return -1;
|
||||
#elif defined(__OS2__)
|
||||
/*TODO: implemente this */
|
||||
qse_awk_seterrnum (awk, QSE_AWK_ENOIMPL, QSE_NULL);
|
||||
return -1;
|
||||
#elif defined(__DOS__)
|
||||
/*TODO: implemente this */
|
||||
qse_awk_seterrnum (awk, QSE_AWK_ENOIMPL, QSE_NULL);
|
||||
return -1;
|
||||
#else
|
||||
|
||||
#if defined(USE_LTDL)
|
||||
void* h;
|
||||
qse_mchar_t* modpath;
|
||||
const qse_char_t* tmp[5];
|
||||
int count = 0;
|
||||
const qse_char_t* tmp[6];
|
||||
int count;
|
||||
|
||||
count = 0;
|
||||
if (dir && dir[0] != QSE_T('\0'))
|
||||
{
|
||||
tmp[count++] = dir;
|
||||
@ -358,38 +350,102 @@ static void* custom_awk_modopen (
|
||||
|
||||
return h;
|
||||
|
||||
#elif defined(_WIN32)
|
||||
HMODULE h;
|
||||
qse_char_t* path;
|
||||
const qse_char_t* tmp[5];
|
||||
int count = 0;
|
||||
|
||||
if (dir && dir[0] != QSE_T('\0'))
|
||||
{
|
||||
tmp[count++] = dir;
|
||||
tmp[count++] = QSE_T("/");
|
||||
}
|
||||
|
||||
tmp[count++] = QSE_T("libawk");
|
||||
tmp[count++] = name;
|
||||
tmp[count] = QSE_NULL;
|
||||
|
||||
path = qse_stradup (tmp, QSE_NULL, awk->mmgr);
|
||||
if (!path)
|
||||
{
|
||||
qse_awk_seterrnum (awk, QSE_AWK_ENOMEM, QSE_NULL);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
h = LoadLibrary (path);
|
||||
|
||||
QSE_MMGR_FREE (awk->mmgr, path);
|
||||
|
||||
return h;
|
||||
#elif defined(__OS2__)
|
||||
HMODULE h;
|
||||
qse_mchar_t* modpath;
|
||||
const qse_char_t* tmp[6];
|
||||
int count;
|
||||
|
||||
count = 0;
|
||||
if (dir && dir[0] != QSE_T('\0'))
|
||||
{
|
||||
tmp[count++] = dir;
|
||||
tmp[count++] = QSE_T("/");
|
||||
}
|
||||
tmp[count++] = QSE_T("libawk");
|
||||
tmp[count++] = name;
|
||||
tmp[count] = QSE_NULL;
|
||||
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
modpath = qse_mbsadup (tmp, QSE_NULL, awk->mmgr);
|
||||
#else
|
||||
modpath = qse_wcsatombsdup (tmp, QSE_NULL, awk->mmgr);
|
||||
#endif
|
||||
if (!modpath)
|
||||
{
|
||||
qse_awk_seterrnum (awk, QSE_AWK_ENOMEM, QSE_NULL);
|
||||
return QSE_NULL;
|
||||
}
|
||||
|
||||
if (DosLoadModule (errbuf, QSE_COUNTOF(errbuf), modpath, &h) != NO_ERROR) h = QSE_NULL;
|
||||
|
||||
QSE_MMGR_FREE (awk->mmgr, modpath);
|
||||
|
||||
return h;
|
||||
|
||||
#elif defined(__DOS__)
|
||||
|
||||
/*TODO: implemente this */
|
||||
qse_awk_seterrnum (awk, QSE_AWK_ENOIMPL, QSE_NULL);
|
||||
return -1;
|
||||
|
||||
#else
|
||||
qse_awk_seterrnum (awk, QSE_AWK_ENOIMPL, QSE_NULL);
|
||||
return QSE_NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void custom_awk_modclose (qse_awk_t* awk, void* handle)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
/*TODO: implemente this */
|
||||
#if defined(USE_LTDL)
|
||||
lt_dlclose (handle);
|
||||
#elif defined(_WIN32)
|
||||
FreeLibrary ((HMODULE)handle);
|
||||
#elif defined(__OS2__)
|
||||
/*TODO: implemente this */
|
||||
DosFreeModule ((HMODULE)handle);
|
||||
#elif defined(__DOS__)
|
||||
/*TODO: implemente this */
|
||||
#else
|
||||
lt_dlclose (handle);
|
||||
/* nothing to do */
|
||||
#endif
|
||||
}
|
||||
|
||||
static void* custom_awk_modsym (qse_awk_t* awk, void* handle, const qse_char_t* name)
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
/*TODO: implemente this */
|
||||
#elif defined(__OS2__)
|
||||
/*TODO: implemente this */
|
||||
#elif defined(__DOS__)
|
||||
/*TODO: implemente this */
|
||||
#else
|
||||
|
||||
void* s;
|
||||
qse_mchar_t* mname;
|
||||
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
mname = name;
|
||||
#else
|
||||
#else
|
||||
mname = qse_wcstombsdup (name, QSE_NULL, awk->mmgr);
|
||||
if (!mname)
|
||||
{
|
||||
@ -398,17 +454,30 @@ static void* custom_awk_modsym (qse_awk_t* awk, void* handle, const qse_char_t*
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(USE_LTDL)
|
||||
s = lt_dlsym (handle, mname);
|
||||
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
#elif defined(_WIN32)
|
||||
s = GetProcAddress ((HMODULE)handle, mname);
|
||||
|
||||
#elif defined(__OS2__)
|
||||
if (DosQueryProcAddr ((HMODULE)handle, 0, mname, (PFN*)&s) != NO_ERROR) s = QSE_NULL;
|
||||
|
||||
#elif defined(__DOS__)
|
||||
/*TODO: implemente this */
|
||||
s = QSE_NULL;
|
||||
#else
|
||||
s = QSE_NULL;
|
||||
#endif
|
||||
|
||||
#if defined(QSE_CHAR_IS_MCHAR)
|
||||
/* nothing to do */
|
||||
#else
|
||||
#else
|
||||
QSE_MMGR_FREE (awk->mmgr, mname);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return s;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
static int add_globals (qse_awk_t* awk);
|
||||
@ -2098,16 +2167,7 @@ void* qse_awk_rtx_getxtnstd (qse_awk_rtx_t* rtx)
|
||||
|
||||
static int fnc_rand (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi)
|
||||
{
|
||||
#if (QSE_SIZEOF_ULONG_T == 2)
|
||||
# define RANDV_MAX 0x7FFFl
|
||||
#elif (QSE_SIZEOF_ULONG_T == 4)
|
||||
# define RANDV_MAX 0x7FFFFFFFl
|
||||
#elif (QSE_SIZEOF_ULONG_T == 8)
|
||||
# define RANDV_MAX 0x7FFFFFFFFFFFFFFl
|
||||
#else
|
||||
# error Unsupported
|
||||
#endif
|
||||
|
||||
#define RANDV_MAX QSE_TYPE_MAX(qse_long_t)
|
||||
qse_awk_val_t* r;
|
||||
qse_long_t randv;
|
||||
rxtn_t* rxtn;
|
||||
@ -2122,6 +2182,7 @@ static int fnc_rand (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi)
|
||||
|
||||
qse_awk_rtx_setretval (rtx, r);
|
||||
return 0;
|
||||
#undef RANDV_MAX
|
||||
}
|
||||
|
||||
static int fnc_srand (qse_awk_rtx_t* rtx, const qse_awk_fnc_info_t* fi)
|
||||
|
@ -406,8 +406,8 @@ static int print_expr (qse_awk_t* awk, qse_awk_nde_t* nde)
|
||||
{
|
||||
PUT_SRCSTR (awk, QSE_T("/"));
|
||||
PUT_SRCSTRN (awk,
|
||||
((qse_awk_nde_rex_t*)nde)->ptr,
|
||||
((qse_awk_nde_rex_t*)nde)->len);
|
||||
((qse_awk_nde_rex_t*)nde)->str.ptr,
|
||||
((qse_awk_nde_rex_t*)nde)->str.len);
|
||||
PUT_SRCSTR (awk, QSE_T("/"));
|
||||
break;
|
||||
}
|
||||
@ -1306,7 +1306,7 @@ void qse_awk_clrpt (qse_awk_t* awk, qse_awk_nde_t* tree)
|
||||
case QSE_AWK_NDE_REX:
|
||||
{
|
||||
QSE_AWK_FREEREX (awk, ((qse_awk_nde_rex_t*)p)->code);
|
||||
QSE_AWK_FREE (awk, ((qse_awk_nde_rex_t*)p)->ptr);
|
||||
QSE_AWK_FREE (awk, ((qse_awk_nde_rex_t*)p)->str.ptr);
|
||||
QSE_AWK_FREE (awk, p);
|
||||
break;
|
||||
}
|
||||
|
@ -154,8 +154,7 @@ struct qse_awk_nde_str_t
|
||||
struct qse_awk_nde_rex_t
|
||||
{
|
||||
QSE_AWK_NDE_HDR;
|
||||
qse_char_t* ptr;
|
||||
qse_size_t len;
|
||||
qse_xstr_t str;
|
||||
void* code;
|
||||
};
|
||||
|
||||
|
@ -416,7 +416,7 @@ qse_awk_val_t* qse_awk_rtx_makenstrvalwithcstr (qse_awk_rtx_t* rtx, const qse_cs
|
||||
}
|
||||
|
||||
qse_awk_val_t* qse_awk_rtx_makerexval (
|
||||
qse_awk_rtx_t* rtx, const qse_char_t* buf, qse_size_t len, void* code)
|
||||
qse_awk_rtx_t* rtx, const qse_cstr_t* str, void* code)
|
||||
{
|
||||
qse_awk_val_rex_t* val;
|
||||
qse_size_t totsz;
|
||||
@ -426,7 +426,7 @@ qse_awk_val_t* qse_awk_rtx_makerexval (
|
||||
* - a raw string plus with added a terminating '\0'
|
||||
* the total size is just large enough for all these.
|
||||
*/
|
||||
totsz = QSE_SIZEOF(*val) + (QSE_SIZEOF(*buf) * (len + 1));
|
||||
totsz = QSE_SIZEOF(*val) + (QSE_SIZEOF(*str->ptr) * (str->len + 1));
|
||||
val = (qse_awk_val_rex_t*) QSE_AWK_ALLOC (rtx->awk, totsz);
|
||||
if (val == QSE_NULL)
|
||||
{
|
||||
@ -437,10 +437,10 @@ qse_awk_val_t* qse_awk_rtx_makerexval (
|
||||
val->type = QSE_AWK_VAL_REX;
|
||||
val->ref = 0;
|
||||
val->nstr = 0;
|
||||
val->len = len;
|
||||
val->str.len = str->len;
|
||||
|
||||
val->ptr = (qse_char_t*)(val + 1);
|
||||
qse_strncpy (val->ptr, buf, len);
|
||||
val->str.ptr = (qse_char_t*)(val + 1);
|
||||
qse_strncpy (val->str.ptr, str->ptr, str->len);
|
||||
|
||||
val->code = code;
|
||||
|
||||
@ -898,7 +898,7 @@ int qse_awk_rtx_valtobool (qse_awk_rtx_t* run, const qse_awk_val_t* val)
|
||||
case QSE_AWK_VAL_STR:
|
||||
return ((qse_awk_val_str_t*)val)->val.len > 0;
|
||||
case QSE_AWK_VAL_REX: /* TODO: is this correct? */
|
||||
return ((qse_awk_val_rex_t*)val)->len > 0;
|
||||
return ((qse_awk_val_rex_t*)val)->str.len > 0;
|
||||
case QSE_AWK_VAL_MAP:
|
||||
return 0; /* TODO: is this correct? */
|
||||
case QSE_AWK_VAL_REF:
|
||||
|
Reference in New Issue
Block a user