initial import
This commit is contained in:
@ -8,10 +8,10 @@
|
||||
#define _INCLUDE__STDC_A1_SOURCE
|
||||
#endif
|
||||
|
||||
#include <ase/awk/StdAwk.hpp>
|
||||
#include <ase/cmn/str.h>
|
||||
#include <ase/cmn/time.h>
|
||||
#include <ase/utl/stdio.h>
|
||||
#include <qse/awk/StdAwk.hpp>
|
||||
#include <qse/cmn/str.h>
|
||||
#include <qse/cmn/time.h>
|
||||
#include <qse/utl/stdio.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
@ -24,7 +24,7 @@
|
||||
#endif
|
||||
|
||||
/////////////////////////////////
|
||||
ASE_BEGIN_NAMESPACE(ASE)
|
||||
QSE_BEGIN_NAMESPACE(ASE)
|
||||
/////////////////////////////////
|
||||
|
||||
StdAwk::StdAwk ()
|
||||
@ -46,30 +46,30 @@ int StdAwk::open ()
|
||||
int n = Awk::open ();
|
||||
if (n == -1) return n;
|
||||
|
||||
ADD_FUNC (ASE_T("sin"), 1, 1, &StdAwk::sin);
|
||||
ADD_FUNC (ASE_T("cos"), 1, 1, &StdAwk::cos);
|
||||
ADD_FUNC (ASE_T("tan"), 1, 1, &StdAwk::tan);
|
||||
ADD_FUNC (ASE_T("atan"), 1, 1, &StdAwk::atan);
|
||||
ADD_FUNC (ASE_T("atan2"), 2, 2, &StdAwk::atan2);
|
||||
ADD_FUNC (ASE_T("log"), 1, 1, &StdAwk::log);
|
||||
ADD_FUNC (ASE_T("exp"), 1, 1, &StdAwk::exp);
|
||||
ADD_FUNC (ASE_T("sqrt"), 1, 1, &StdAwk::sqrt);
|
||||
ADD_FUNC (ASE_T("int"), 1, 1, &StdAwk::fnint);
|
||||
ADD_FUNC (ASE_T("rand"), 0, 0, &StdAwk::rand);
|
||||
ADD_FUNC (ASE_T("srand"), 0, 1, &StdAwk::srand);
|
||||
ADD_FUNC (ASE_T("systime"), 0, 0, &StdAwk::systime);
|
||||
ADD_FUNC (ASE_T("strftime"), 0, 2, &StdAwk::strftime);
|
||||
ADD_FUNC (ASE_T("strfgmtime"), 0, 2, &StdAwk::strfgmtime);
|
||||
ADD_FUNC (ASE_T("system"), 1, 1, &StdAwk::system);
|
||||
ADD_FUNC (QSE_T("sin"), 1, 1, &StdAwk::sin);
|
||||
ADD_FUNC (QSE_T("cos"), 1, 1, &StdAwk::cos);
|
||||
ADD_FUNC (QSE_T("tan"), 1, 1, &StdAwk::tan);
|
||||
ADD_FUNC (QSE_T("atan"), 1, 1, &StdAwk::atan);
|
||||
ADD_FUNC (QSE_T("atan2"), 2, 2, &StdAwk::atan2);
|
||||
ADD_FUNC (QSE_T("log"), 1, 1, &StdAwk::log);
|
||||
ADD_FUNC (QSE_T("exp"), 1, 1, &StdAwk::exp);
|
||||
ADD_FUNC (QSE_T("sqrt"), 1, 1, &StdAwk::sqrt);
|
||||
ADD_FUNC (QSE_T("int"), 1, 1, &StdAwk::fnint);
|
||||
ADD_FUNC (QSE_T("rand"), 0, 0, &StdAwk::rand);
|
||||
ADD_FUNC (QSE_T("srand"), 0, 1, &StdAwk::srand);
|
||||
ADD_FUNC (QSE_T("systime"), 0, 0, &StdAwk::systime);
|
||||
ADD_FUNC (QSE_T("strftime"), 0, 2, &StdAwk::strftime);
|
||||
ADD_FUNC (QSE_T("strfgmtime"), 0, 2, &StdAwk::strfgmtime);
|
||||
ADD_FUNC (QSE_T("system"), 1, 1, &StdAwk::system);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int StdAwk::run (const char_t* main, const char_t** args, size_t nargs)
|
||||
{
|
||||
ase_ntime_t now;
|
||||
qse_ntime_t now;
|
||||
|
||||
if (ase_gettime(&now) == -1) this->seed = 0;
|
||||
if (qse_gettime(&now) == -1) this->seed = 0;
|
||||
else this->seed = (unsigned int)now;
|
||||
|
||||
::srand (this->seed);
|
||||
@ -224,9 +224,9 @@ int StdAwk::srand (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
|
||||
if (nargs == 0)
|
||||
{
|
||||
ase_ntime_t now;
|
||||
qse_ntime_t now;
|
||||
|
||||
if (ase_gettime (&now) == -1)
|
||||
if (qse_gettime (&now) == -1)
|
||||
this->seed = (unsigned int)now;
|
||||
else this->seed >>= 1;
|
||||
}
|
||||
@ -249,12 +249,12 @@ int StdAwk::srand (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
int StdAwk::systime (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
ase_ntime_t now;
|
||||
qse_ntime_t now;
|
||||
|
||||
if (ase_gettime(&now) == -1)
|
||||
return ret.set (ASE_TYPE_MIN(long_t));
|
||||
if (qse_gettime(&now) == -1)
|
||||
return ret.set (QSE_TYPE_MIN(long_t));
|
||||
else
|
||||
return ret.set ((long_t)now / ASE_MSEC_IN_SEC);
|
||||
return ret.set ((long_t)now / QSE_MSEC_IN_SEC);
|
||||
}
|
||||
|
||||
int StdAwk::strftime (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
@ -263,7 +263,7 @@ int StdAwk::strftime (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* fmt;
|
||||
size_t fln;
|
||||
|
||||
fmt = (nargs < 1)? ASE_T("%c"): args[0].toStr(&fln);
|
||||
fmt = (nargs < 1)? QSE_T("%c"): args[0].toStr(&fln);
|
||||
time_t t = (nargs < 2)? ::time(NULL): (time_t)args[1].toInt();
|
||||
|
||||
char_t buf[128];
|
||||
@ -275,10 +275,10 @@ int StdAwk::strftime (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
tm = ::localtime_r (&t, &tmb);
|
||||
#endif
|
||||
|
||||
#ifdef ASE_CHAR_IS_MCHAR
|
||||
size_t l = ::strftime (buf, ASE_COUNTOF(buf), fmt, tm);
|
||||
#ifdef QSE_CHAR_IS_MCHAR
|
||||
size_t l = ::strftime (buf, QSE_COUNTOF(buf), fmt, tm);
|
||||
#else
|
||||
size_t l = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm);
|
||||
size_t l = ::wcsftime (buf, QSE_COUNTOF(buf), fmt, tm);
|
||||
#endif
|
||||
|
||||
return ret.set (buf, l);
|
||||
@ -290,7 +290,7 @@ int StdAwk::strfgmtime (Run& run, Return& ret, const Argument* args, size_t narg
|
||||
const char_t* fmt;
|
||||
size_t fln;
|
||||
|
||||
fmt = (nargs < 1)? ASE_T("%c"): args[0].toStr(&fln);
|
||||
fmt = (nargs < 1)? QSE_T("%c"): args[0].toStr(&fln);
|
||||
time_t t = (nargs < 2)? ::time(NULL): (time_t)args[1].toInt();
|
||||
|
||||
char_t buf[128];
|
||||
@ -302,10 +302,10 @@ int StdAwk::strfgmtime (Run& run, Return& ret, const Argument* args, size_t narg
|
||||
tm = ::gmtime_r (&t, &tmb);
|
||||
#endif
|
||||
|
||||
#ifdef ASE_CHAR_IS_MCHAR
|
||||
size_t l = ::strftime (buf, ASE_COUNTOF(buf), fmt, tm);
|
||||
#ifdef QSE_CHAR_IS_MCHAR
|
||||
size_t l = ::strftime (buf, QSE_COUNTOF(buf), fmt, tm);
|
||||
#else
|
||||
size_t l = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm);
|
||||
size_t l = ::wcsftime (buf, QSE_COUNTOF(buf), fmt, tm);
|
||||
#endif
|
||||
|
||||
return ret.set (buf, l);
|
||||
@ -319,22 +319,22 @@ int StdAwk::system (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
|
||||
#ifdef _WIN32
|
||||
return ret.set ((long_t)::_tsystem(ptr));
|
||||
#elif defined(ASE_CHAR_IS_MCHAR)
|
||||
#elif defined(QSE_CHAR_IS_MCHAR)
|
||||
return ret.set ((long_t)::system(ptr));
|
||||
#else
|
||||
char* mbs = (char*) ase_awk_alloc (awk, l*5+1);
|
||||
if (mbs == ASE_NULL) return -1;
|
||||
char* mbs = (char*) qse_awk_alloc (awk, l*5+1);
|
||||
if (mbs == QSE_NULL) return -1;
|
||||
|
||||
::size_t mbl = ::wcstombs (mbs, ptr, l*5);
|
||||
if (mbl == (::size_t)-1)
|
||||
{
|
||||
ase_awk_free (awk, mbs);
|
||||
qse_awk_free (awk, mbs);
|
||||
return -1;
|
||||
}
|
||||
mbs[mbl] = '\0';
|
||||
int n = ret.set ((long_t)::system(mbs));
|
||||
|
||||
ase_awk_free (awk, mbs);
|
||||
qse_awk_free (awk, mbs);
|
||||
return n;
|
||||
#endif
|
||||
}
|
||||
@ -347,10 +347,10 @@ int StdAwk::openPipe (Pipe& io)
|
||||
switch (mode)
|
||||
{
|
||||
case Awk::Pipe::READ:
|
||||
fp = ase_popen (io.getName(), ASE_T("r"));
|
||||
fp = qse_popen (io.getName(), QSE_T("r"));
|
||||
break;
|
||||
case Awk::Pipe::WRITE:
|
||||
fp = ase_popen (io.getName(), ASE_T("w"));
|
||||
fp = qse_popen (io.getName(), QSE_T("w"));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -373,15 +373,15 @@ StdAwk::ssize_t StdAwk::readPipe (Pipe& io, char_t* buf, size_t len)
|
||||
|
||||
while (n < (ssize_t)len)
|
||||
{
|
||||
ase_cint_t c = ase_fgetc (fp);
|
||||
if (c == ASE_CHAR_EOF)
|
||||
qse_cint_t c = qse_fgetc (fp);
|
||||
if (c == QSE_CHAR_EOF)
|
||||
{
|
||||
if (ase_ferror(fp)) n = -1;
|
||||
if (qse_ferror(fp)) n = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
buf[n++] = c;
|
||||
if (c == ASE_T('\n')) break;
|
||||
if (c == QSE_T('\n')) break;
|
||||
}
|
||||
|
||||
return n;
|
||||
@ -394,12 +394,12 @@ StdAwk::ssize_t StdAwk::writePipe (Pipe& io, char_t* buf, size_t len)
|
||||
|
||||
while (left > 0)
|
||||
{
|
||||
if (*buf == ASE_T('\0'))
|
||||
if (*buf == QSE_T('\0'))
|
||||
{
|
||||
#if defined(ASE_CHAR_IS_WCHAR) && defined(__linux)
|
||||
#if defined(QSE_CHAR_IS_WCHAR) && defined(__linux)
|
||||
if (fputc ('\0', fp) == EOF)
|
||||
#else
|
||||
if (ase_fputc (*buf, fp) == ASE_CHAR_EOF)
|
||||
if (qse_fputc (*buf, fp) == QSE_CHAR_EOF)
|
||||
#endif
|
||||
{
|
||||
return -1;
|
||||
@ -408,25 +408,25 @@ StdAwk::ssize_t StdAwk::writePipe (Pipe& io, char_t* buf, size_t len)
|
||||
}
|
||||
else
|
||||
{
|
||||
#if defined(ASE_CHAR_IS_WCHAR) && defined(__linux)
|
||||
#if defined(QSE_CHAR_IS_WCHAR) && defined(__linux)
|
||||
// fwprintf seems to return an error with the file
|
||||
// pointer opened by popen, as of this writing.
|
||||
// anyway, hopefully the following replacement
|
||||
// will work all the way.
|
||||
int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left;
|
||||
int chunk = (left > QSE_TYPE_MAX(int))? QSE_TYPE_MAX(int): (int)left;
|
||||
int n = fprintf (fp, "%.*ls", chunk, buf);
|
||||
if (n >= 0)
|
||||
{
|
||||
size_t x;
|
||||
for (x = 0; x < chunk; x++)
|
||||
{
|
||||
if (buf[x] == ASE_T('\0')) break;
|
||||
if (buf[x] == QSE_T('\0')) break;
|
||||
}
|
||||
n = x;
|
||||
}
|
||||
#else
|
||||
int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left;
|
||||
int n = ase_fprintf (fp, ASE_T("%.*s"), chunk, buf);
|
||||
int chunk = (left > QSE_TYPE_MAX(int))? QSE_TYPE_MAX(int): (int)left;
|
||||
int n = qse_fprintf (fp, QSE_T("%.*s"), chunk, buf);
|
||||
#endif
|
||||
|
||||
if (n < 0 || n > chunk) return -1;
|
||||
@ -451,13 +451,13 @@ int StdAwk::openFile (File& io)
|
||||
switch (mode)
|
||||
{
|
||||
case Awk::File::READ:
|
||||
fp = ase_fopen (io.getName(), ASE_T("r"));
|
||||
fp = qse_fopen (io.getName(), QSE_T("r"));
|
||||
break;
|
||||
case Awk::File::WRITE:
|
||||
fp = ase_fopen (io.getName(), ASE_T("w"));
|
||||
fp = qse_fopen (io.getName(), QSE_T("w"));
|
||||
break;
|
||||
case Awk::File::APPEND:
|
||||
fp = ase_fopen (io.getName(), ASE_T("a"));
|
||||
fp = qse_fopen (io.getName(), QSE_T("a"));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -480,15 +480,15 @@ StdAwk::ssize_t StdAwk::readFile (File& io, char_t* buf, size_t len)
|
||||
|
||||
while (n < (ssize_t)len)
|
||||
{
|
||||
ase_cint_t c = ase_fgetc (fp);
|
||||
if (c == ASE_CHAR_EOF)
|
||||
qse_cint_t c = qse_fgetc (fp);
|
||||
if (c == QSE_CHAR_EOF)
|
||||
{
|
||||
if (ase_ferror(fp)) n = -1;
|
||||
if (qse_ferror(fp)) n = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
buf[n++] = c;
|
||||
if (c == ASE_T('\n')) break;
|
||||
if (c == QSE_T('\n')) break;
|
||||
}
|
||||
|
||||
return n;
|
||||
@ -501,15 +501,15 @@ StdAwk::ssize_t StdAwk::writeFile (File& io, char_t* buf, size_t len)
|
||||
|
||||
while (left > 0)
|
||||
{
|
||||
if (*buf == ASE_T('\0'))
|
||||
if (*buf == QSE_T('\0'))
|
||||
{
|
||||
if (ase_fputc (*buf, fp) == ASE_CHAR_EOF) return -1;
|
||||
if (qse_fputc (*buf, fp) == QSE_CHAR_EOF) return -1;
|
||||
left -= 1; buf += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
int chunk = (left > ASE_TYPE_MAX(int))? ASE_TYPE_MAX(int): (int)left;
|
||||
int n = ase_fprintf (fp, ASE_T("%.*s"), chunk, buf);
|
||||
int chunk = (left > QSE_TYPE_MAX(int))? QSE_TYPE_MAX(int): (int)left;
|
||||
int n = qse_fprintf (fp, QSE_T("%.*s"), chunk, buf);
|
||||
if (n < 0 || n > chunk) return -1;
|
||||
left -= n; buf += n;
|
||||
}
|
||||
@ -542,12 +542,12 @@ void StdAwk::freeMem (void* ptr)
|
||||
// character handling primitive
|
||||
Awk::bool_t StdAwk::isType (cint_t c, ccls_type_t type)
|
||||
{
|
||||
return ase_ccls_is (c, (ase_ccls_type_t)type);
|
||||
return qse_ccls_is (c, (qse_ccls_type_t)type);
|
||||
}
|
||||
|
||||
Awk::cint_t StdAwk::transCase (cint_t c, ccls_type_t type)
|
||||
{
|
||||
return ase_ccls_to (c, (ase_ccls_type_t)type);
|
||||
return qse_ccls_to (c, (qse_ccls_type_t)type);
|
||||
}
|
||||
|
||||
// miscellaneous primitive
|
||||
@ -559,10 +559,10 @@ StdAwk::real_t StdAwk::pow (real_t x, real_t y)
|
||||
int StdAwk::vsprintf (
|
||||
char_t* buf, size_t size, const char_t* fmt, va_list arg)
|
||||
{
|
||||
return ase_vsprintf (buf, size, fmt, arg);
|
||||
return qse_vsprintf (buf, size, fmt, arg);
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
ASE_END_NAMESPACE(ASE)
|
||||
QSE_END_NAMESPACE(ASE)
|
||||
/////////////////////////////////
|
||||
|
||||
|
Reference in New Issue
Block a user