initial import

This commit is contained in:
2008-12-21 21:35:07 +00:00
parent 4c01ea1604
commit 4803bd861a
384 changed files with 24572 additions and 53621 deletions

View File

@ -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)
/////////////////////////////////