renamed ase to qse
This commit is contained in:
1782
qse/lib/awk/Awk.cpp
Normal file
1782
qse/lib/awk/Awk.cpp
Normal file
File diff suppressed because it is too large
Load Diff
568
qse/lib/awk/StdAwk.cpp
Normal file
568
qse/lib/awk/StdAwk.cpp
Normal file
@ -0,0 +1,568 @@
|
||||
/*
|
||||
* $Id: StdAwk.cpp 501 2008-12-17 08:39:15Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#if defined(hpux) || defined(__hpux) || defined(__hpux__)
|
||||
#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 <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <time.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <tchar.h>
|
||||
#else
|
||||
#include <wchar.h>
|
||||
#endif
|
||||
|
||||
/////////////////////////////////
|
||||
ASE_BEGIN_NAMESPACE(ASE)
|
||||
/////////////////////////////////
|
||||
|
||||
StdAwk::StdAwk ()
|
||||
{
|
||||
}
|
||||
|
||||
#define ADD_FUNC(name,min,max,impl) \
|
||||
do { \
|
||||
if (addFunction (name, min, max, \
|
||||
(FunctionHandler)impl) == -1) \
|
||||
{ \
|
||||
Awk::close (); \
|
||||
return -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
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);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int StdAwk::run (const char_t* main, const char_t** args, size_t nargs)
|
||||
{
|
||||
ase_ntime_t now;
|
||||
|
||||
if (ase_gettime(&now) == -1) this->seed = 0;
|
||||
else this->seed = (unsigned int)now;
|
||||
|
||||
::srand (this->seed);
|
||||
|
||||
return Awk::run (main, args, nargs);
|
||||
}
|
||||
|
||||
int StdAwk::sin (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
return ret.set (
|
||||
#if defined(HAVE_SINL)
|
||||
(real_t)::sinl(args[0].toReal())
|
||||
#elif defined(HAVE_SIN)
|
||||
(real_t)::sin(args[0].toReal())
|
||||
#elif defined(HAVE_SINF)
|
||||
(real_t)::sinf(args[0].toReal())
|
||||
#else
|
||||
#error ### no sin function available ###
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
int StdAwk::cos (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
return ret.set (
|
||||
#if defined(HAVE_COSL)
|
||||
(real_t)::cosl(args[0].toReal())
|
||||
#elif defined(HAVE_COS)
|
||||
(real_t)::cos(args[0].toReal())
|
||||
#elif defined(HAVE_COSF)
|
||||
(real_t)::cosf(args[0].toReal())
|
||||
#else
|
||||
#error ### no cos function available ###
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
int StdAwk::tan (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
return ret.set (
|
||||
#if defined(HAVE_TANL)
|
||||
(real_t)::tanl(args[0].toReal())
|
||||
#elif defined(HAVE_TAN)
|
||||
(real_t)::tan(args[0].toReal())
|
||||
#elif defined(HAVE_TANF)
|
||||
(real_t)::tanf(args[0].toReal())
|
||||
#else
|
||||
#error ### no tan function available ###
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
int StdAwk::atan (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
return ret.set (
|
||||
#if defined(HAVE_ATANL)
|
||||
(real_t)::atanl(args[0].toReal())
|
||||
#elif defined(HAVE_ATAN)
|
||||
(real_t)::atan(args[0].toReal())
|
||||
#elif defined(HAVE_ATANF)
|
||||
(real_t)::atanf(args[0].toReal())
|
||||
#else
|
||||
#error ### no atan function available ###
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
int StdAwk::atan2 (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
return ret.set (
|
||||
#if defined(HAVE_ATAN2L)
|
||||
(real_t)::atan2l(args[0].toReal(), args[1].toReal())
|
||||
#elif defined(HAVE_ATAN2)
|
||||
(real_t)::atan2(args[0].toReal(), args[1].toReal())
|
||||
#elif defined(HAVE_ATAN2F)
|
||||
(real_t)::atan2f(args[0].toReal(), args[1].toReal())
|
||||
#else
|
||||
#error ### no atan2 function available ###
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
int StdAwk::log (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
return ret.set (
|
||||
#if defined(HAVE_LOGL)
|
||||
(real_t)::logl(args[0].toReal())
|
||||
#elif defined(HAVE_LOG)
|
||||
(real_t)::log(args[0].toReal())
|
||||
#elif defined(HAVE_LOGF)
|
||||
(real_t)::logf(args[0].toReal())
|
||||
#else
|
||||
#error ### no log function available ###
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
int StdAwk::exp (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
return ret.set (
|
||||
#if defined(HAVE_EXPL)
|
||||
(real_t)::expl(args[0].toReal())
|
||||
#elif defined(HAVE_EXP)
|
||||
(real_t)::exp(args[0].toReal())
|
||||
#elif defined(HAVE_EXPF)
|
||||
(real_t)::expf(args[0].toReal())
|
||||
#else
|
||||
#error ### no exp function available ###
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
int StdAwk::sqrt (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
return ret.set (
|
||||
#if defined(HAVE_SQRTL)
|
||||
(real_t)::sqrtl(args[0].toReal())
|
||||
#elif defined(HAVE_SQRT)
|
||||
(real_t)::sqrt(args[0].toReal())
|
||||
#elif defined(HAVE_SQRTF)
|
||||
(real_t)::sqrtf(args[0].toReal())
|
||||
#else
|
||||
#error ### no sqrt function available ###
|
||||
#endif
|
||||
);
|
||||
}
|
||||
|
||||
int StdAwk::fnint (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
return ret.set (args[0].toInt());
|
||||
}
|
||||
|
||||
int StdAwk::rand (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
return ret.set ((long_t)::rand());
|
||||
}
|
||||
|
||||
int StdAwk::srand (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
unsigned int prevSeed = this->seed;
|
||||
|
||||
if (nargs == 0)
|
||||
{
|
||||
ase_ntime_t now;
|
||||
|
||||
if (ase_gettime (&now) == -1)
|
||||
this->seed = (unsigned int)now;
|
||||
else this->seed >>= 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->seed = (unsigned int)args[0].toInt();
|
||||
}
|
||||
|
||||
::srand (this->seed);
|
||||
return ret.set ((long_t)prevSeed);
|
||||
}
|
||||
|
||||
#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER>=1400)
|
||||
#define time_t __time64_t
|
||||
#define time _time64
|
||||
#define localtime _localtime64
|
||||
#define gmtime _gmtime64
|
||||
#endif
|
||||
|
||||
int StdAwk::systime (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
ase_ntime_t now;
|
||||
|
||||
if (ase_gettime(&now) == -1)
|
||||
return ret.set (ASE_TYPE_MIN(long_t));
|
||||
else
|
||||
return ret.set ((long_t)now / ASE_MSEC_IN_SEC);
|
||||
}
|
||||
|
||||
int StdAwk::strftime (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
const char_t* fmt;
|
||||
size_t fln;
|
||||
|
||||
fmt = (nargs < 1)? ASE_T("%c"): args[0].toStr(&fln);
|
||||
time_t t = (nargs < 2)? ::time(NULL): (time_t)args[1].toInt();
|
||||
|
||||
char_t buf[128];
|
||||
struct tm* tm;
|
||||
#ifdef _WIN32
|
||||
tm = ::localtime (&t);
|
||||
#else
|
||||
struct tm tmb;
|
||||
tm = ::localtime_r (&t, &tmb);
|
||||
#endif
|
||||
|
||||
#ifdef ASE_CHAR_IS_MCHAR
|
||||
size_t l = ::strftime (buf, ASE_COUNTOF(buf), fmt, tm);
|
||||
#else
|
||||
size_t l = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm);
|
||||
#endif
|
||||
|
||||
return ret.set (buf, l);
|
||||
}
|
||||
|
||||
int StdAwk::strfgmtime (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
const char_t* fmt;
|
||||
size_t fln;
|
||||
|
||||
fmt = (nargs < 1)? ASE_T("%c"): args[0].toStr(&fln);
|
||||
time_t t = (nargs < 2)? ::time(NULL): (time_t)args[1].toInt();
|
||||
|
||||
char_t buf[128];
|
||||
struct tm* tm;
|
||||
#ifdef _WIN32
|
||||
tm = ::gmtime (&t);
|
||||
#else
|
||||
struct tm tmb;
|
||||
tm = ::gmtime_r (&t, &tmb);
|
||||
#endif
|
||||
|
||||
#ifdef ASE_CHAR_IS_MCHAR
|
||||
size_t l = ::strftime (buf, ASE_COUNTOF(buf), fmt, tm);
|
||||
#else
|
||||
size_t l = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm);
|
||||
#endif
|
||||
|
||||
return ret.set (buf, l);
|
||||
}
|
||||
|
||||
int StdAwk::system (Run& run, Return& ret, const Argument* args, size_t nargs,
|
||||
const char_t* name, size_t len)
|
||||
{
|
||||
size_t l;
|
||||
const char_t* ptr = args[0].toStr(&l);
|
||||
|
||||
#ifdef _WIN32
|
||||
return ret.set ((long_t)::_tsystem(ptr));
|
||||
#elif defined(ASE_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;
|
||||
|
||||
::size_t mbl = ::wcstombs (mbs, ptr, l*5);
|
||||
if (mbl == (::size_t)-1)
|
||||
{
|
||||
ase_awk_free (awk, mbs);
|
||||
return -1;
|
||||
}
|
||||
mbs[mbl] = '\0';
|
||||
int n = ret.set ((long_t)::system(mbs));
|
||||
|
||||
ase_awk_free (awk, mbs);
|
||||
return n;
|
||||
#endif
|
||||
}
|
||||
|
||||
int StdAwk::openPipe (Pipe& io)
|
||||
{
|
||||
Awk::Pipe::Mode mode = io.getMode();
|
||||
FILE* fp = NULL;
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case Awk::Pipe::READ:
|
||||
fp = ase_popen (io.getName(), ASE_T("r"));
|
||||
break;
|
||||
case Awk::Pipe::WRITE:
|
||||
fp = ase_popen (io.getName(), ASE_T("w"));
|
||||
break;
|
||||
}
|
||||
|
||||
if (fp == NULL) return -1;
|
||||
|
||||
io.setHandle (fp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int StdAwk::closePipe (Pipe& io)
|
||||
{
|
||||
fclose ((FILE*)io.getHandle());
|
||||
return 0;
|
||||
}
|
||||
|
||||
StdAwk::ssize_t StdAwk::readPipe (Pipe& io, char_t* buf, size_t len)
|
||||
{
|
||||
FILE* fp = (FILE*)io.getHandle();
|
||||
ssize_t n = 0;
|
||||
|
||||
while (n < (ssize_t)len)
|
||||
{
|
||||
ase_cint_t c = ase_fgetc (fp);
|
||||
if (c == ASE_CHAR_EOF)
|
||||
{
|
||||
if (ase_ferror(fp)) n = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
buf[n++] = c;
|
||||
if (c == ASE_T('\n')) break;
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
StdAwk::ssize_t StdAwk::writePipe (Pipe& io, char_t* buf, size_t len)
|
||||
{
|
||||
FILE* fp = (FILE*)io.getHandle();
|
||||
size_t left = len;
|
||||
|
||||
while (left > 0)
|
||||
{
|
||||
if (*buf == ASE_T('\0'))
|
||||
{
|
||||
#if defined(ASE_CHAR_IS_WCHAR) && defined(__linux)
|
||||
if (fputc ('\0', fp) == EOF)
|
||||
#else
|
||||
if (ase_fputc (*buf, fp) == ASE_CHAR_EOF)
|
||||
#endif
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
left -= 1; buf += 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
#if defined(ASE_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 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;
|
||||
}
|
||||
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);
|
||||
#endif
|
||||
|
||||
if (n < 0 || n > chunk) return -1;
|
||||
left -= n; buf += n;
|
||||
}
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
int StdAwk::flushPipe (Pipe& io)
|
||||
{
|
||||
return ::fflush ((FILE*)io.getHandle());
|
||||
}
|
||||
|
||||
// file io handlers
|
||||
int StdAwk::openFile (File& io)
|
||||
{
|
||||
Awk::File::Mode mode = io.getMode();
|
||||
FILE* fp = NULL;
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case Awk::File::READ:
|
||||
fp = ase_fopen (io.getName(), ASE_T("r"));
|
||||
break;
|
||||
case Awk::File::WRITE:
|
||||
fp = ase_fopen (io.getName(), ASE_T("w"));
|
||||
break;
|
||||
case Awk::File::APPEND:
|
||||
fp = ase_fopen (io.getName(), ASE_T("a"));
|
||||
break;
|
||||
}
|
||||
|
||||
if (fp == NULL) return -1;
|
||||
|
||||
io.setHandle (fp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int StdAwk::closeFile (File& io)
|
||||
{
|
||||
fclose ((FILE*)io.getHandle());
|
||||
return 0;
|
||||
}
|
||||
|
||||
StdAwk::ssize_t StdAwk::readFile (File& io, char_t* buf, size_t len)
|
||||
{
|
||||
FILE* fp = (FILE*)io.getHandle();
|
||||
ssize_t n = 0;
|
||||
|
||||
while (n < (ssize_t)len)
|
||||
{
|
||||
ase_cint_t c = ase_fgetc (fp);
|
||||
if (c == ASE_CHAR_EOF)
|
||||
{
|
||||
if (ase_ferror(fp)) n = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
buf[n++] = c;
|
||||
if (c == ASE_T('\n')) break;
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
StdAwk::ssize_t StdAwk::writeFile (File& io, char_t* buf, size_t len)
|
||||
{
|
||||
FILE* fp = (FILE*)io.getHandle();
|
||||
size_t left = len;
|
||||
|
||||
while (left > 0)
|
||||
{
|
||||
if (*buf == ASE_T('\0'))
|
||||
{
|
||||
if (ase_fputc (*buf, fp) == ASE_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);
|
||||
if (n < 0 || n > chunk) return -1;
|
||||
left -= n; buf += n;
|
||||
}
|
||||
}
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
int StdAwk::flushFile (File& io)
|
||||
{
|
||||
return ::fflush ((FILE*)io.getHandle());
|
||||
}
|
||||
|
||||
// memory allocation primitives
|
||||
void* StdAwk::allocMem (size_t n)
|
||||
{
|
||||
return ::malloc (n);
|
||||
}
|
||||
|
||||
void* StdAwk::reallocMem (void* ptr, size_t n)
|
||||
{
|
||||
return ::realloc (ptr, n);
|
||||
}
|
||||
|
||||
void StdAwk::freeMem (void* ptr)
|
||||
{
|
||||
::free (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);
|
||||
}
|
||||
|
||||
Awk::cint_t StdAwk::transCase (cint_t c, ccls_type_t type)
|
||||
{
|
||||
return ase_ccls_to (c, (ase_ccls_type_t)type);
|
||||
}
|
||||
|
||||
// miscellaneous primitive
|
||||
StdAwk::real_t StdAwk::pow (real_t x, real_t y)
|
||||
{
|
||||
return ::pow (x, y);
|
||||
}
|
||||
|
||||
int StdAwk::vsprintf (
|
||||
char_t* buf, size_t size, const char_t* fmt, va_list arg)
|
||||
{
|
||||
return ase_vsprintf (buf, size, fmt, arg);
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
ASE_END_NAMESPACE(ASE)
|
||||
/////////////////////////////////
|
||||
|
265
qse/lib/awk/aseawk++.bdsproj
Normal file
265
qse/lib/awk/aseawk++.bdsproj
Normal file
@ -0,0 +1,265 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<PersonalityInfo>
|
||||
<Option>
|
||||
<Option Name="Personality">CPlusPlusBuilder.Personality</Option>
|
||||
<Option Name="ProjectType">CppStaticLibrary</Option>
|
||||
<Option Name="Version">1.0</Option>
|
||||
<Option Name="GUID">{EDEF16CC-0C39-4E6B-A3CC-3DBF585BBD77}</Option>
|
||||
</Option>
|
||||
</PersonalityInfo>
|
||||
<CPlusPlusBuilder.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">Awk.cpp</Source>
|
||||
</Source>
|
||||
<BCBPROJECT>
|
||||
<project version="10.0">
|
||||
<property category="build.config" name="active" value="0"/>
|
||||
<property category="build.config" name="count" value="1"/>
|
||||
<property category="build.config" name="excludedefaultforzero" value="0"/>
|
||||
<property category="build.config.0" name="builddir" value="Debug"/>
|
||||
<property category="build.config.0" name="key" value="Debug_Build"/>
|
||||
<property category="build.config.0" name="name" value="Debug Build"/>
|
||||
<property category="build.config.0" name="settings.win32b" value="default"/>
|
||||
<property category="build.config.0" name="type" value="Toolset"/>
|
||||
<property category="build.config.0" name="win32.win32b.builddir" value="debug"/>
|
||||
<property category="build.config.1" name="key" value="Release_Build"/>
|
||||
<property category="build.config.1" name="name" value="Release Build"/>
|
||||
<property category="build.config.1" name="settings.win32b" value="default"/>
|
||||
<property category="build.config.1" name="type" value="Toolset"/>
|
||||
<property category="build.config.1" name="win32.win32b.builddir" value="release"/>
|
||||
<property category="build.node" name="lastconfig" value="Debug_Build"/>
|
||||
<property category="build.node" name="libraries" value="vcl.lib rtl.lib"/>
|
||||
<property category="build.node" name="name" value="aseawk++.lib"/>
|
||||
<property category="build.node" name="packages" value="vclx;vcl;rtl;dbrtl;vcldb;adortl;dbxcds;dbexpress;xmlrtl;vclie;inet;inetdbbde;inetdbxpress;soaprtl;dsnap;bdertl;vcldbx"/>
|
||||
<property category="build.node" name="sparelibs" value="rtl.lib vcl.lib"/>
|
||||
<property category="build.node" name="use_packages" value="0"/>
|
||||
<property category="build.platform" name="active" value="win32"/>
|
||||
<property category="build.platform" name="win32.Debug_Build.toolset" value="win32b"/>
|
||||
<property category="build.platform" name="win32.Release_Build.toolset" value="win32b"/>
|
||||
<property category="build.platform" name="win32.config2.toolset" value="win32b"/>
|
||||
<property category="build.platform" name="win32.default" value="win32b"/>
|
||||
<property category="build.platform" name="win32.enabled" value="1"/>
|
||||
<property category="build.platform" name="win32.win32b.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="param.filenames.merge" value="1"/>
|
||||
<property category="win32.*.win32b.tasm32" name="param.listfile.merge" value="1"/>
|
||||
<property category="win32.*.win32b.tasm32" name="param.objfile.merge" value="1"/>
|
||||
<property category="win32.*.win32b.tasm32" name="param.xreffile.merge" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="container.SelectedOptimizations.containerenabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="container.SelectedWarnings.containerenabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.1" value="_DEBUG"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.merge" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.D.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.Od.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.k.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.n.arg.1" value="debug\cpp"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.n.arg.merge" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.n.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.r.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.v.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.vi.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.y.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.brcc32" name="option.16.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.brcc32" name="option.31.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.$D.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.$O.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.D.arg.1" value="DEBUG"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.D.arg.merge" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.D.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.V.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.D.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.Gn.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.L.arg.1" value="$(BDS)\lib\debug"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.L.arg.merge" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.L.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.v.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.tasm32" name="option.z.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.tasm32" name="option.zd.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.tasm32" name="option.zi.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.tlib" name="option.E.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.tlib" name="option.outputdir.arg.1" value="..\debug\lib"/>
|
||||
<property category="win32.Debug_Build.win32b.tlib" name="option.outputdir.arg.merge" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.tlib" name="option.outputdir.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.D.arg.1" value="NDEBUG"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.D.arg.merge" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.D.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.O2.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.k.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.n.arg.1" value="release\cpp"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.n.arg.merge" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.n.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.r.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.vi.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.dcc32" name="option.$D.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.dcc32" name="option.$O.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.dcc32" name="option.V.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.ilink32" name="option.L.arg.1" value="$(BDS)\lib\release"/>
|
||||
<property category="win32.Release_Build.win32b.ilink32" name="option.L.arg.merge" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.ilink32" name="option.L.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.tasm32" name="option.z.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.tasm32" name="option.zd.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.tasm32" name="option.zi.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.tasm32" name="option.zn.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.tlib" name="option.outputdir.arg.1" value="..\release\lib"/>
|
||||
<property category="win32.Release_Build.win32b.tlib" name="option.outputdir.arg.merge" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.tlib" name="option.outputdir.enabled" value="1"/>
|
||||
<optionset name="all_configurations">
|
||||
<property category="node" name="displayname" value="All Configurations"/>
|
||||
<property category="win32.*.win32b.bcc32" name="container.SelectedOptimizations.containerenabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="container.SelectedWarnings.containerenabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.4.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.5.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.6.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.A.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.AK.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.AT.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.AU.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.H=.arg.1" value="$(BDS)\lib\vcl100.csm"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.H=.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.H=.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Hc.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.He.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Hs.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.arg.1" value="..\.."/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.arg.2" value="$(BDS)\include"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.arg.3" value="$(BDS)\include\dinkumware"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.arg.4" value="$(BDS)\include\vcl"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Jgi.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Jgx.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.O1.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.O2.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Od.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.V0.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.V1.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Vmd.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Vmm.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Vms.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.align-1.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.align-2.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.align-3.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.align-5.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.b.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.disablewarns.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.noregistervars.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.p.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.pm.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.pr.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.ps.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.rd.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.sysdefines.arg.1" value="_RTLDLL"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.sysdefines.arg.2" value="NO_STRICT"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.sysdefines.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.sysdefines.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.tW.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.tWC.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.tWD.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.tWM.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.vG.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.w.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.I.arg.1" value="C:\projects\ase\awk"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.I.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.I.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.O.arg.1" value="C:\projects\ase\awk"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.O.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.O.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.R.arg.1" value="C:\projects\ase\awk"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.R.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.R.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.arg.1" value="C:\projects\ase\awk"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.arg.2" value="C:\Documents and Settings\evi\My Documents\Borland Studio Projects"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.arg.3" value="$(BDS)\lib"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.arg.4" value="$(BDS)\lib\obj"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="param.filenames.merge" value="1"/>
|
||||
<property category="win32.*.win32b.idl2cpp" name="option.I.arg.1" value="C:\projects\ase\awk"/>
|
||||
<property category="win32.*.win32b.idl2cpp" name="option.I.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.idl2cpp" name="option.I.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.Gi.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.L.arg.1" value="$(BDS)\lib"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.L.arg.2" value="$(BDS)\lib\obj"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.L.arg.3" value="$(BDS)\lib\psdk"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.L.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.L.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.Tpd.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.Tpe.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.Tpp.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.aa.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.ap.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.dynamicrtl.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.tlib" name="option.E.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.tlib" name="option.dynamicrtl.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.tlib" name="option.outputdir.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.tlib" name="option.outputdir.enabled" value="0"/>
|
||||
</optionset>
|
||||
</project>
|
||||
<FILELIST>
|
||||
<FILE FILENAME="Awk.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="Awk" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="StdAwk.cpp" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="err" FORMNAME="" DESIGNCLASS=""/>
|
||||
</FILELIST>
|
||||
<IDEOPTIONS>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1033</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||
</VersionInfoKeys>
|
||||
<Debugging>
|
||||
<Debugging Name="DebugSourceDirs"></Debugging>
|
||||
</Debugging>
|
||||
<Parameters>
|
||||
<Parameters Name="RunParams"></Parameters>
|
||||
<Parameters Name="Launcher"></Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="DebugCWD"></Parameters>
|
||||
<Parameters Name="HostApplication"></Parameters>
|
||||
<Parameters Name="RemoteHost"></Parameters>
|
||||
<Parameters Name="RemotePath"></Parameters>
|
||||
<Parameters Name="RemoteParams"></Parameters>
|
||||
<Parameters Name="RemoteLauncher"></Parameters>
|
||||
<Parameters Name="UseRemoteLauncher">False</Parameters>
|
||||
<Parameters Name="RemoteCWD"></Parameters>
|
||||
<Parameters Name="RemoteDebug">False</Parameters>
|
||||
<Parameters Name="Debug Symbols Search Path"></Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<Linker>
|
||||
<Linker Name="LibPrefix"></Linker>
|
||||
<Linker Name="LibSuffix"></Linker>
|
||||
<Linker Name="LibVersion"></Linker>
|
||||
</Linker>
|
||||
</IDEOPTIONS>
|
||||
</BCBPROJECT>
|
||||
<buildevents>
|
||||
<buildevent file="aseawk++.bdsproj">
|
||||
<precompile mode="0" cancancel="0" capture="-1" showconsole="0">mkdir $(PROJECTDIR)..\release\lib
|
||||
mkdir $(PROJECTDIR)..\debug\lib
|
||||
</precompile>
|
||||
</buildevent>
|
||||
</buildevents>
|
||||
</CPlusPlusBuilder.Personality>
|
||||
</BorlandProject>
|
122
qse/lib/awk/aseawk++.dsp
Normal file
122
qse/lib/awk/aseawk++.dsp
Normal file
@ -0,0 +1,122 @@
|
||||
# Microsoft Developer Studio Project File - Name="aseawk++" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||
|
||||
CFG=aseawk++ - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "aseawk++.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "aseawk++.mak" CFG="aseawk++ - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "aseawk++ - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "aseawk++ - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "aseawk++ - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "../release/lib"
|
||||
# PROP Intermediate_Dir "release/cpp"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
MTL=midl.exe
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MT /Za /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_UNICODE" /FD /c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "aseawk++ - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "../debug/lib"
|
||||
# PROP Intermediate_Dir "debug/cpp"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
MTL=midl.exe
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /Za /W3 /Gm /GX /ZI /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_UNICODE" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "aseawk++ - Win32 Release"
|
||||
# Name "aseawk++ - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Awk.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAwk.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Awk.hpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\StdAwk.hpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
376
qse/lib/awk/aseawk++.vcproj
Normal file
376
qse/lib/awk/aseawk++.vcproj
Normal file
@ -0,0 +1,376 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="aseawk++"
|
||||
ProjectGUID="{E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}"
|
||||
RootNamespace="aseawk++"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)\cpp"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\.."
|
||||
PreprocessorDefinitions="_DEBUG;WIN32"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DisableLanguageExtensions="true"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)\cpp"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\.."
|
||||
PreprocessorDefinitions="_DEBUG;WIN32"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DisableLanguageExtensions="true"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)\cpp"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\.."
|
||||
PreprocessorDefinitions="NDEBUG;WIN32"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
DisableLanguageExtensions="true"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)\cpp"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\.."
|
||||
PreprocessorDefinitions="NDEBUG;WIN32"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
DisableLanguageExtensions="true"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
>
|
||||
<File
|
||||
RelativePath="Awk.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\StdAwk.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl"
|
||||
>
|
||||
<File
|
||||
RelativePath="Awk.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\StdAwk.hpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
275
qse/lib/awk/aseawk.bdsproj
Normal file
275
qse/lib/awk/aseawk.bdsproj
Normal file
@ -0,0 +1,275 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<BorlandProject>
|
||||
<PersonalityInfo>
|
||||
<Option>
|
||||
<Option Name="Personality">CPlusPlusBuilder.Personality</Option>
|
||||
<Option Name="ProjectType">CppStaticLibrary</Option>
|
||||
<Option Name="Version">1.0</Option>
|
||||
<Option Name="GUID">{EDEF16CC-0C39-4E6B-A3CC-3DBF585BBD77}</Option>
|
||||
</Option>
|
||||
</PersonalityInfo>
|
||||
<CPlusPlusBuilder.Personality>
|
||||
<Source>
|
||||
<Source Name="MainSource">awk.c</Source>
|
||||
</Source>
|
||||
<BCBPROJECT>
|
||||
<project version="10.0">
|
||||
<property category="build.config" name="active" value="0"/>
|
||||
<property category="build.config" name="count" value="1"/>
|
||||
<property category="build.config" name="excludedefaultforzero" value="0"/>
|
||||
<property category="build.config.0" name="builddir" value="Debug"/>
|
||||
<property category="build.config.0" name="key" value="Debug_Build"/>
|
||||
<property category="build.config.0" name="name" value="Debug Build"/>
|
||||
<property category="build.config.0" name="settings.win32b" value="default"/>
|
||||
<property category="build.config.0" name="type" value="Toolset"/>
|
||||
<property category="build.config.0" name="win32.win32b.builddir" value="debug"/>
|
||||
<property category="build.config.1" name="key" value="Release_Build"/>
|
||||
<property category="build.config.1" name="name" value="Release Build"/>
|
||||
<property category="build.config.1" name="settings.win32b" value="default"/>
|
||||
<property category="build.config.1" name="type" value="Toolset"/>
|
||||
<property category="build.config.1" name="win32.win32b.builddir" value="release"/>
|
||||
<property category="build.node" name="lastconfig" value="Debug_Build"/>
|
||||
<property category="build.node" name="libraries" value="vcl.lib rtl.lib"/>
|
||||
<property category="build.node" name="name" value="aseawk.lib"/>
|
||||
<property category="build.node" name="packages" value="vclx;vcl;rtl;dbrtl;vcldb;adortl;dbxcds;dbexpress;xmlrtl;vclie;inet;inetdbbde;inetdbxpress;soaprtl;dsnap;bdertl;vcldbx"/>
|
||||
<property category="build.node" name="sparelibs" value="rtl.lib vcl.lib"/>
|
||||
<property category="build.node" name="use_packages" value="0"/>
|
||||
<property category="build.platform" name="active" value="win32"/>
|
||||
<property category="build.platform" name="win32.Debug_Build.toolset" value="win32b"/>
|
||||
<property category="build.platform" name="win32.Release_Build.toolset" value="win32b"/>
|
||||
<property category="build.platform" name="win32.config2.toolset" value="win32b"/>
|
||||
<property category="build.platform" name="win32.default" value="win32b"/>
|
||||
<property category="build.platform" name="win32.enabled" value="1"/>
|
||||
<property category="build.platform" name="win32.win32b.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="param.filenames.merge" value="1"/>
|
||||
<property category="win32.*.win32b.tasm32" name="param.listfile.merge" value="1"/>
|
||||
<property category="win32.*.win32b.tasm32" name="param.objfile.merge" value="1"/>
|
||||
<property category="win32.*.win32b.tasm32" name="param.xreffile.merge" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="container.SelectedOptimizations.containerenabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="container.SelectedWarnings.containerenabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.1" value="_DEBUG"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.D.arg.merge" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.D.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.Od.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.k.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.n.arg.1" value="debug"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.n.arg.merge" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.n.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.r.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.v.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.vG.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.vG0.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.vi.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.bcc32" name="option.y.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.brcc32" name="option.16.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.brcc32" name="option.31.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.$D.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.$O.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.D.arg.1" value="DEBUG"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.D.arg.merge" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.D.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.dcc32" name="option.V.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.D.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.Gn.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.L.arg.1" value="$(BDS)\lib\debug"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.L.arg.merge" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.L.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.ilink32" name="option.v.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.tasm32" name="option.z.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.tasm32" name="option.zd.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.tasm32" name="option.zi.enabled" value="1"/>
|
||||
<property category="win32.Debug_Build.win32b.tlib" name="option.E.enabled" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.tlib" name="option.outputdir.arg.1" value="..\debug\lib"/>
|
||||
<property category="win32.Debug_Build.win32b.tlib" name="option.outputdir.arg.merge" value="0"/>
|
||||
<property category="win32.Debug_Build.win32b.tlib" name="option.outputdir.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.D.arg.1" value="NDEBUG"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.D.arg.merge" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.D.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.O2.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.k.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.n.arg.1" value="release"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.n.arg.merge" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.n.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.r.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.bcc32" name="option.vi.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.dcc32" name="option.$D.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.dcc32" name="option.$O.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.dcc32" name="option.V.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.ilink32" name="option.L.arg.1" value="$(BDS)\lib\release"/>
|
||||
<property category="win32.Release_Build.win32b.ilink32" name="option.L.arg.merge" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.ilink32" name="option.L.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.tasm32" name="option.z.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.tasm32" name="option.zd.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.tasm32" name="option.zi.enabled" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.tasm32" name="option.zn.enabled" value="1"/>
|
||||
<property category="win32.Release_Build.win32b.tlib" name="option.outputdir.arg.1" value="..\release\lib"/>
|
||||
<property category="win32.Release_Build.win32b.tlib" name="option.outputdir.arg.merge" value="0"/>
|
||||
<property category="win32.Release_Build.win32b.tlib" name="option.outputdir.enabled" value="1"/>
|
||||
<optionset name="all_configurations">
|
||||
<property category="node" name="displayname" value="All Configurations"/>
|
||||
<property category="win32.*.win32b.bcc32" name="container.SelectedOptimizations.containerenabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="container.SelectedWarnings.containerenabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.4.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.5.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.6.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.A.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.AK.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.AU.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.H=.arg.1" value="$(BDS)\lib\vcl100.csm"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.H=.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.H=.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Hc.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.He.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Hs.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.arg.1" value="..\.."/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.arg.2" value="$(BDS)\include"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.arg.3" value="$(BDS)\include\dinkumware"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.arg.4" value="$(BDS)\include\vcl"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.I.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Jgi.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Jgx.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.O1.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.O2.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Od.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.V0.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.V1.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Vmd.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Vmm.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.Vms.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.align-1.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.align-2.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.align-3.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.align-5.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.b.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.disablewarns.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.noregistervars.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.p.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.pm.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.pr.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.ps.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.rd.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.sysdefines.arg.1" value="_RTLDLL"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.sysdefines.arg.2" value="NO_STRICT"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.sysdefines.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.sysdefines.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.tW.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.tWC.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.tWD.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.tWM.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.bcc32" name="option.w.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.I.arg.1" value="C:\projects\ase\awk"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.I.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.I.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.O.arg.1" value="C:\projects\ase\awk"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.O.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.O.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.R.arg.1" value="C:\projects\ase\awk"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.R.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.R.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.arg.1" value="C:\projects\ase\awk"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.arg.2" value="C:\Documents and Settings\evi\My Documents\Borland Studio Projects"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.arg.3" value="$(BDS)\lib"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.arg.4" value="$(BDS)\lib\obj"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="option.U.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.dcc32" name="param.filenames.merge" value="1"/>
|
||||
<property category="win32.*.win32b.idl2cpp" name="option.I.arg.1" value="C:\projects\ase\awk"/>
|
||||
<property category="win32.*.win32b.idl2cpp" name="option.I.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.idl2cpp" name="option.I.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.Gi.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.L.arg.1" value="$(BDS)\lib"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.L.arg.2" value="$(BDS)\lib\obj"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.L.arg.3" value="$(BDS)\lib\psdk"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.L.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.L.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.Tpd.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.Tpe.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.Tpp.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.aa.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.ap.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.ilink32" name="option.dynamicrtl.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.tlib" name="option.E.enabled" value="1"/>
|
||||
<property category="win32.*.win32b.tlib" name="option.dynamicrtl.enabled" value="0"/>
|
||||
<property category="win32.*.win32b.tlib" name="option.outputdir.arg.merge" value="1"/>
|
||||
<property category="win32.*.win32b.tlib" name="option.outputdir.enabled" value="0"/>
|
||||
</optionset>
|
||||
</project>
|
||||
<FILELIST>
|
||||
<FILE FILENAME="awk.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="awk" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="err.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="err" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="extio.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="extio" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="func.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="func" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="misc.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="misc" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="parse.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="parse" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="rec.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="rec" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="rex.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="rex" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="run.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="run" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="tab.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="tab" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="tree.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="tree" FORMNAME="" DESIGNCLASS=""/>
|
||||
<FILE FILENAME="val.c" CONTAINERID="CCompiler" LOCALCOMMAND="" UNITNAME="val" FORMNAME="" DESIGNCLASS=""/>
|
||||
</FILELIST>
|
||||
<IDEOPTIONS>
|
||||
<VersionInfo>
|
||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||
<VersionInfo Name="MajorVer">1</VersionInfo>
|
||||
<VersionInfo Name="MinorVer">0</VersionInfo>
|
||||
<VersionInfo Name="Release">0</VersionInfo>
|
||||
<VersionInfo Name="Build">0</VersionInfo>
|
||||
<VersionInfo Name="Debug">False</VersionInfo>
|
||||
<VersionInfo Name="PreRelease">False</VersionInfo>
|
||||
<VersionInfo Name="Special">False</VersionInfo>
|
||||
<VersionInfo Name="Private">False</VersionInfo>
|
||||
<VersionInfo Name="DLL">False</VersionInfo>
|
||||
<VersionInfo Name="Locale">1033</VersionInfo>
|
||||
<VersionInfo Name="CodePage">1252</VersionInfo>
|
||||
</VersionInfo>
|
||||
<VersionInfoKeys>
|
||||
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
|
||||
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
|
||||
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
|
||||
</VersionInfoKeys>
|
||||
<Debugging>
|
||||
<Debugging Name="DebugSourceDirs"></Debugging>
|
||||
</Debugging>
|
||||
<Parameters>
|
||||
<Parameters Name="RunParams"></Parameters>
|
||||
<Parameters Name="Launcher"></Parameters>
|
||||
<Parameters Name="UseLauncher">False</Parameters>
|
||||
<Parameters Name="DebugCWD"></Parameters>
|
||||
<Parameters Name="HostApplication"></Parameters>
|
||||
<Parameters Name="RemoteHost"></Parameters>
|
||||
<Parameters Name="RemotePath"></Parameters>
|
||||
<Parameters Name="RemoteParams"></Parameters>
|
||||
<Parameters Name="RemoteLauncher"></Parameters>
|
||||
<Parameters Name="UseRemoteLauncher">False</Parameters>
|
||||
<Parameters Name="RemoteCWD"></Parameters>
|
||||
<Parameters Name="RemoteDebug">False</Parameters>
|
||||
<Parameters Name="Debug Symbols Search Path"></Parameters>
|
||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||
</Parameters>
|
||||
<Linker>
|
||||
<Linker Name="LibPrefix"></Linker>
|
||||
<Linker Name="LibSuffix"></Linker>
|
||||
<Linker Name="LibVersion"></Linker>
|
||||
</Linker>
|
||||
</IDEOPTIONS>
|
||||
</BCBPROJECT>
|
||||
<buildevents>
|
||||
<buildevent file="aseawk.bdsproj">
|
||||
<precompile mode="0" cancancel="0" capture="-1" showconsole="0">mkdir $(PROJECTDIR)..\release\lib
|
||||
mkdir $(PROJECTDIR)..\debug\lib
|
||||
</precompile>
|
||||
</buildevent>
|
||||
</buildevents>
|
||||
</CPlusPlusBuilder.Personality>
|
||||
</BorlandProject>
|
186
qse/lib/awk/aseawk.dsp
Normal file
186
qse/lib/awk/aseawk.dsp
Normal file
@ -0,0 +1,186 @@
|
||||
# Microsoft Developer Studio Project File - Name="aseawk" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||
|
||||
CFG=aseawk - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "aseawk.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "aseawk.mak" CFG="aseawk - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "aseawk - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "aseawk - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "aseawk - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "../release/lib"
|
||||
# PROP Intermediate_Dir "release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
MTL=midl.exe
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /c
|
||||
# ADD CPP /nologo /MT /Za /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_UNICODE" /FD /c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "aseawk - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "../debug/lib"
|
||||
# PROP Intermediate_Dir "debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
MTL=midl.exe
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /Yu"stdafx.h" /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /Za /W3 /Gm /GX /ZI /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_UNICODE" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX /Yc /Yu
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "aseawk - Win32 Release"
|
||||
# Name "aseawk - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\awk.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\err.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\extio.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\func.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\misc.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\parse.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\rec.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\run.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\tab.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\tree.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\val.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\awk.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\awk_i.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\extio.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\func.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\parse.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\run.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\tab.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\tree.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\val.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
800
qse/lib/awk/aseawk.vcproj
Normal file
800
qse/lib/awk/aseawk.vcproj
Normal file
@ -0,0 +1,800 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="aseawk"
|
||||
ProjectGUID="{5F2E77D5-1485-48D1-9371-987BC55FEE83}"
|
||||
RootNamespace="aseawk"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\.."
|
||||
PreprocessorDefinitions="NDEBUG;WIN32"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
DisableLanguageExtensions="true"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\.."
|
||||
PreprocessorDefinitions="NDEBUG;WIN32"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
DisableLanguageExtensions="true"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\.."
|
||||
PreprocessorDefinitions="_DEBUG;WIN32"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DisableLanguageExtensions="true"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
TargetEnvironment="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\.."
|
||||
PreprocessorDefinitions="_DEBUG;WIN32"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DisableLanguageExtensions="true"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
>
|
||||
<File
|
||||
RelativePath="awk.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="err.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="extio.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="func.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="misc.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="parse.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="rec.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="run.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="tab.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="tree.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="val.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl"
|
||||
>
|
||||
<File
|
||||
RelativePath="awk.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="awk_i.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="extio.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="func.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="parse.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="run.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="tab.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="tree.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="val.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
113
qse/lib/awk/aseawk_jni.dsp
Normal file
113
qse/lib/awk/aseawk_jni.dsp
Normal file
@ -0,0 +1,113 @@
|
||||
# Microsoft Developer Studio Project File - Name="aseawk_jni" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
|
||||
|
||||
CFG=aseawk_jni - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "aseawk_jni.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "aseawk_jni.mak" CFG="aseawk_jni - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "aseawk_jni - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE "aseawk_jni - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "aseawk_jni - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "../release/lib"
|
||||
# PROP Intermediate_Dir "release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JNI_EXPORTS" /YX /FD /c
|
||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\.." /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
||||
# ADD LINK32 asecmn.lib aseawk.lib aseutl.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /implib:"release/aseawk_jni.lib" /libpath:"$(OutDir)"
|
||||
|
||||
!ELSEIF "$(CFG)" == "aseawk_jni - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "../debug/lib"
|
||||
# PROP Intermediate_Dir "debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "JNI_EXPORTS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\.." /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "_USRDLL" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 asecmn.lib aseawk.lib aseutl.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /implib:"debug/aseawk_jni.lib" /pdbtype:sept /libpath:"$(OutDir)"
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "aseawk_jni - Win32 Release"
|
||||
# Name "aseawk_jni - Win32 Debug"
|
||||
# Begin Group "Source Files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\jni.c
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header Files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\jni.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
442
qse/lib/awk/aseawk_jni.vcproj
Normal file
442
qse/lib/awk/aseawk_jni.vcproj
Normal file
@ -0,0 +1,442 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="aseawk_jni"
|
||||
ProjectGUID="{23B58791-FD44-4F95-9F77-34E4AF45A296}"
|
||||
RootNamespace="aseawk_jni"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
<Platform
|
||||
Name="x64"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)\jni"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
SuppressStartupBanner="true"
|
||||
TargetEnvironment="1"
|
||||
TypeLibraryName=".\../release/lib/aseawk_jni.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..,$(JAVA_HOME)\include,$(JAVA_HOME)\include\win32"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="asecmn.lib aseawk.lib aseutl.lib odbc32.lib odbccp32.lib"
|
||||
OutputFile="$(OutDir)\aseawk_jni.dll"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
AdditionalLibraryDirectories="$(OutDir)"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|x64"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)\jni"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
SuppressStartupBanner="true"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\../release/lib/aseawk_jni.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..,$(JAVA_HOME)\include,$(JAVA_HOME)\include\win32"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="NDEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="asecmn.lib aseawk.lib aseutl.lib odbc32.lib odbccp32.lib"
|
||||
OutputFile="$(OutDir)\aseawk_jni.dll"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
AdditionalLibraryDirectories="$(OutDir)"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)\jni"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
SuppressStartupBanner="true"
|
||||
TargetEnvironment="1"
|
||||
TypeLibraryName=".\../debug/lib/aseawk_jni.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..,$(JAVA_HOME)\include,$(JAVA_HOME)\include\win32"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="asecmn.lib aseawk.lib aseutl.lib odbc32.lib odbccp32.lib"
|
||||
OutputFile="$(OutDir)\aseawk_jni.dll"
|
||||
LinkIncremental="2"
|
||||
SuppressStartupBanner="true"
|
||||
AdditionalLibraryDirectories="$(OutDir)"
|
||||
GenerateDebugInformation="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Debug|x64"
|
||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)\lib"
|
||||
IntermediateDirectory="$(ConfigurationName)\jni"
|
||||
ConfigurationType="2"
|
||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
MkTypLibCompatible="true"
|
||||
SuppressStartupBanner="true"
|
||||
TargetEnvironment="3"
|
||||
TypeLibraryName=".\../debug/lib/aseawk_jni.tlb"
|
||||
HeaderFileName=""
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..,$(JAVA_HOME)\include,$(JAVA_HOME)\include\win32"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
PreprocessorDefinitions="_DEBUG"
|
||||
Culture="1033"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="asecmn.lib aseawk.lib aseutl.lib odbc32.lib odbccp32.lib"
|
||||
OutputFile="$(OutDir)\aseawk_jni.dll"
|
||||
LinkIncremental="2"
|
||||
SuppressStartupBanner="true"
|
||||
AdditionalLibraryDirectories="$(OutDir)"
|
||||
GenerateDebugInformation="true"
|
||||
TargetMachine="17"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
SuppressStartupBanner="true"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
>
|
||||
<File
|
||||
RelativePath="jni.c"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Release|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="Debug|x64"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories=""
|
||||
PreprocessorDefinitions=""
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl"
|
||||
>
|
||||
<File
|
||||
RelativePath="jni.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
|
||||
>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
471
qse/lib/awk/awk.c
Normal file
471
qse/lib/awk/awk.c
Normal file
@ -0,0 +1,471 @@
|
||||
/*
|
||||
* $Id: awk.c 501 2008-12-17 08:39:15Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#if defined(__BORLANDC__)
|
||||
#pragma hdrstop
|
||||
#define Library
|
||||
#endif
|
||||
|
||||
#include "awk.h"
|
||||
|
||||
#define SETERR(awk,code) ase_awk_seterrnum(awk,code)
|
||||
|
||||
#define SETERRARG(awk,code,line,arg,leng) \
|
||||
do { \
|
||||
ase_cstr_t errarg; \
|
||||
errarg.len = (leng); \
|
||||
errarg.ptr = (arg); \
|
||||
ase_awk_seterror ((awk), (code), (line), &errarg, 1); \
|
||||
} while (0)
|
||||
|
||||
static void free_afn (ase_map_t* map, void* vptr, ase_size_t vlen)
|
||||
{
|
||||
ase_awk_t* awk = *(ase_awk_t**)ASE_MAP_XTN(map);
|
||||
ase_awk_afn_t* f = (ase_awk_afn_t*)vptr;
|
||||
|
||||
/* f->name doesn't have to be freed */
|
||||
/*ASE_AWK_FREE (awk, f->name);*/
|
||||
|
||||
ase_awk_clrpt (awk, f->body);
|
||||
ASE_AWK_FREE (awk, f);
|
||||
}
|
||||
|
||||
static void free_bfn (ase_map_t* map, void* vptr, ase_size_t vlen)
|
||||
{
|
||||
ase_awk_t* awk = *(ase_awk_t**)ASE_MAP_XTN(map);
|
||||
ase_awk_bfn_t* f = (ase_awk_bfn_t*)vptr;
|
||||
|
||||
ASE_AWK_FREE (awk, f);
|
||||
}
|
||||
|
||||
ase_awk_t* ase_awk_open (ase_mmgr_t* mmgr, ase_size_t ext)
|
||||
{
|
||||
ase_awk_t* awk;
|
||||
|
||||
if (mmgr == ASE_NULL)
|
||||
{
|
||||
mmgr = ASE_MMGR_GETDFL();
|
||||
|
||||
ASE_ASSERTX (mmgr != ASE_NULL,
|
||||
"Set the memory manager with ASE_MMGR_SETDFL()");
|
||||
|
||||
if (mmgr == ASE_NULL) return ASE_NULL;
|
||||
}
|
||||
|
||||
awk = ASE_MMGR_ALLOC (mmgr, ASE_SIZEOF(ase_awk_t) + ext);
|
||||
if (awk == ASE_NULL) return ASE_NULL;
|
||||
|
||||
ASE_MEMSET (awk, 0, ASE_SIZEOF(ase_awk_t) + ext);
|
||||
awk->mmgr = mmgr;
|
||||
|
||||
awk->token.name = ase_str_open (mmgr, 0, 128);
|
||||
if (awk->token.name == ASE_NULL) goto oops;
|
||||
|
||||
awk->wtab = ase_map_open (mmgr, ASE_SIZEOF(awk), 512, 70);
|
||||
if (awk->wtab == ASE_NULL) goto oops;
|
||||
*(ase_awk_t**)ASE_MAP_XTN(awk->wtab) = awk;
|
||||
ase_map_setcopier (awk->wtab, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE);
|
||||
ase_map_setcopier (awk->wtab, ASE_MAP_VAL, ASE_MAP_COPIER_INLINE);
|
||||
ase_map_setscale (awk->wtab, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t));
|
||||
ase_map_setscale (awk->wtab, ASE_MAP_VAL, ASE_SIZEOF(ase_char_t));
|
||||
|
||||
awk->rwtab = ase_map_open (mmgr, ASE_SIZEOF(awk), 512, 70);
|
||||
if (awk->rwtab == ASE_NULL) goto oops;
|
||||
*(ase_awk_t**)ASE_MAP_XTN(awk->rwtab) = awk;
|
||||
ase_map_setcopier (awk->rwtab, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE);
|
||||
ase_map_setcopier (awk->rwtab, ASE_MAP_VAL, ASE_MAP_COPIER_INLINE);
|
||||
ase_map_setscale (awk->rwtab, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t));
|
||||
ase_map_setscale (awk->rwtab, ASE_MAP_VAL, ASE_SIZEOF(ase_char_t));
|
||||
|
||||
/* TODO: initial map size?? */
|
||||
awk->tree.afns = ase_map_open (mmgr, ASE_SIZEOF(awk), 512, 70);
|
||||
if (awk->tree.afns == ASE_NULL) goto oops;
|
||||
*(ase_awk_t**)ASE_MAP_XTN(awk->tree.afns) = awk;
|
||||
ase_map_setcopier (awk->tree.afns, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE);
|
||||
ase_map_setfreeer (awk->tree.afns, ASE_MAP_VAL, free_afn);
|
||||
ase_map_setscale (awk->tree.afns, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t));
|
||||
|
||||
awk->parse.afns = ase_map_open (mmgr, ASE_SIZEOF(awk), 256, 70);
|
||||
if (awk->parse.afns == ASE_NULL) goto oops;
|
||||
*(ase_awk_t**)ASE_MAP_XTN(awk->parse.afns) = awk;
|
||||
ase_map_setcopier (awk->parse.afns, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE);
|
||||
ase_map_setcopier (awk->parse.afns, ASE_MAP_VAL, ASE_MAP_COPIER_INLINE);
|
||||
ase_map_setscale (awk->parse.afns, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t));
|
||||
|
||||
awk->parse.named = ase_map_open (mmgr, ASE_SIZEOF(awk), 256, 70);
|
||||
if (awk->parse.named == ASE_NULL) goto oops;
|
||||
*(ase_awk_t**)ASE_MAP_XTN(awk->parse.named) = awk;
|
||||
ase_map_setcopier (awk->parse.named, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE);
|
||||
ase_map_setcopier (awk->parse.named, ASE_MAP_VAL, ASE_MAP_COPIER_INLINE);
|
||||
ase_map_setscale (awk->parse.named, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t));
|
||||
|
||||
awk->parse.globals = ase_lda_open (mmgr, ASE_SIZEOF(awk), 128);
|
||||
awk->parse.locals = ase_lda_open (mmgr, ASE_SIZEOF(awk), 64);
|
||||
awk->parse.params = ase_lda_open (mmgr, ASE_SIZEOF(awk), 32);
|
||||
|
||||
if (awk->parse.globals == ASE_NULL ||
|
||||
awk->parse.locals == ASE_NULL ||
|
||||
awk->parse.params == ASE_NULL) goto oops;
|
||||
|
||||
*(ase_awk_t**)ASE_LDA_XTN(awk->parse.globals) = awk;
|
||||
ase_lda_setcopier (awk->parse.globals, ASE_LDA_COPIER_INLINE);
|
||||
ase_lda_setscale (awk->parse.globals, ASE_SIZEOF(ase_char_t));
|
||||
|
||||
*(ase_awk_t**)ASE_LDA_XTN(awk->parse.locals) = awk;
|
||||
ase_lda_setcopier (awk->parse.locals, ASE_LDA_COPIER_INLINE);
|
||||
ase_lda_setscale (awk->parse.locals, ASE_SIZEOF(ase_char_t));
|
||||
|
||||
*(ase_awk_t**)ASE_LDA_XTN(awk->parse.params) = awk;
|
||||
ase_lda_setcopier (awk->parse.params, ASE_LDA_COPIER_INLINE);
|
||||
ase_lda_setscale (awk->parse.params, ASE_SIZEOF(ase_char_t));
|
||||
|
||||
awk->option = 0;
|
||||
awk->errnum = ASE_AWK_ENOERR;
|
||||
awk->errlin = 0;
|
||||
awk->stopall = ASE_FALSE;
|
||||
|
||||
awk->parse.nlocals_max = 0;
|
||||
|
||||
awk->tree.nglobals = 0;
|
||||
awk->tree.nbglobals = 0;
|
||||
awk->tree.begin = ASE_NULL;
|
||||
awk->tree.begin_tail = ASE_NULL;
|
||||
awk->tree.end = ASE_NULL;
|
||||
awk->tree.end_tail = ASE_NULL;
|
||||
awk->tree.chain = ASE_NULL;
|
||||
awk->tree.chain_tail = ASE_NULL;
|
||||
awk->tree.chain_size = 0;
|
||||
|
||||
awk->token.prev.type = 0;
|
||||
awk->token.prev.line = 0;
|
||||
awk->token.prev.column = 0;
|
||||
awk->token.type = 0;
|
||||
awk->token.line = 0;
|
||||
awk->token.column = 0;
|
||||
|
||||
awk->src.lex.curc = ASE_CHAR_EOF;
|
||||
awk->src.lex.ungotc_count = 0;
|
||||
awk->src.lex.line = 1;
|
||||
awk->src.lex.column = 1;
|
||||
awk->src.shared.buf_pos = 0;
|
||||
awk->src.shared.buf_len = 0;
|
||||
|
||||
awk->bfn.sys = ASE_NULL;
|
||||
awk->bfn.user = ase_map_open (mmgr, ASE_SIZEOF(awk), 512, 70);
|
||||
if (awk->bfn.user == ASE_NULL) goto oops;
|
||||
*(ase_awk_t**)ASE_MAP_XTN(awk->bfn.user) = awk;
|
||||
ase_map_setcopier (awk->bfn.user, ASE_MAP_KEY, ASE_MAP_COPIER_INLINE);
|
||||
ase_map_setfreeer (awk->bfn.user, ASE_MAP_VAL, free_bfn);
|
||||
ase_map_setscale (awk->bfn.user, ASE_MAP_KEY, ASE_SIZEOF(ase_char_t));
|
||||
|
||||
awk->parse.depth.cur.block = 0;
|
||||
awk->parse.depth.cur.loop = 0;
|
||||
awk->parse.depth.cur.expr = 0;
|
||||
|
||||
ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_BLOCK_PARSE, 0);
|
||||
ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_BLOCK_RUN, 0);
|
||||
ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_EXPR_PARSE, 0);
|
||||
ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_EXPR_RUN, 0);
|
||||
ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_REX_BUILD, 0);
|
||||
ase_awk_setmaxdepth (awk, ASE_AWK_DEPTH_REX_MATCH, 0);
|
||||
|
||||
awk->assoc_data = ASE_NULL;
|
||||
|
||||
if (ase_awk_initglobals (awk) == -1) goto oops;
|
||||
|
||||
return awk;
|
||||
|
||||
|
||||
oops:
|
||||
if (awk->bfn.user) ase_map_close (awk->bfn.user);
|
||||
if (awk->parse.params) ase_lda_close (awk->parse.params);
|
||||
if (awk->parse.locals) ase_lda_close (awk->parse.locals);
|
||||
if (awk->parse.globals) ase_lda_close (awk->parse.globals);
|
||||
if (awk->parse.named) ase_map_close (awk->parse.named);
|
||||
if (awk->parse.afns) ase_map_close (awk->parse.afns);
|
||||
if (awk->tree.afns) ase_map_close (awk->tree.afns);
|
||||
if (awk->rwtab) ase_map_close (awk->rwtab);
|
||||
if (awk->wtab) ase_map_close (awk->wtab);
|
||||
if (awk->token.name) ase_str_close (awk->token.name);
|
||||
ASE_AWK_FREE (awk, awk);
|
||||
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
|
||||
int ase_awk_close (ase_awk_t* awk)
|
||||
{
|
||||
ase_size_t i;
|
||||
|
||||
if (ase_awk_clear (awk) == -1) return -1;
|
||||
/*ase_awk_clrbfn (awk);*/
|
||||
ase_map_close (awk->bfn.user);
|
||||
|
||||
ase_lda_close (awk->parse.params);
|
||||
ase_lda_close (awk->parse.locals);
|
||||
ase_lda_close (awk->parse.globals);
|
||||
ase_map_close (awk->parse.named);
|
||||
ase_map_close (awk->parse.afns);
|
||||
|
||||
ase_map_close (awk->tree.afns);
|
||||
ase_map_close (awk->rwtab);
|
||||
ase_map_close (awk->wtab);
|
||||
|
||||
ase_str_close (awk->token.name);
|
||||
|
||||
for (i = 0; i < ASE_COUNTOF(awk->errstr); i++)
|
||||
{
|
||||
if (awk->errstr[i] != ASE_NULL)
|
||||
{
|
||||
ASE_AWK_FREE (awk, awk->errstr[i]);
|
||||
awk->errstr[i] = ASE_NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* ASE_AWK_ALLOC, ASE_AWK_FREE, etc can not be used
|
||||
* from the next line onwards */
|
||||
ASE_AWK_FREE (awk, awk);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ase_awk_clear (ase_awk_t* awk)
|
||||
{
|
||||
awk->stopall = ASE_FALSE;
|
||||
|
||||
ASE_MEMSET (&awk->src.ios, 0, ASE_SIZEOF(awk->src.ios));
|
||||
awk->src.lex.curc = ASE_CHAR_EOF;
|
||||
awk->src.lex.ungotc_count = 0;
|
||||
awk->src.lex.line = 1;
|
||||
awk->src.lex.column = 1;
|
||||
awk->src.shared.buf_pos = 0;
|
||||
awk->src.shared.buf_len = 0;
|
||||
|
||||
ASE_ASSERT (ASE_LDA_SIZE(awk->parse.globals) == awk->tree.nglobals);
|
||||
/* delete all non-builtin global variables */
|
||||
ase_lda_delete (
|
||||
awk->parse.globals, awk->tree.nbglobals,
|
||||
ASE_LDA_SIZE(awk->parse.globals) - awk->tree.nbglobals);
|
||||
|
||||
ase_lda_clear (awk->parse.locals);
|
||||
ase_lda_clear (awk->parse.params);
|
||||
ase_map_clear (awk->parse.named);
|
||||
ase_map_clear (awk->parse.afns);
|
||||
|
||||
awk->parse.nlocals_max = 0;
|
||||
awk->parse.depth.cur.block = 0;
|
||||
awk->parse.depth.cur.loop = 0;
|
||||
awk->parse.depth.cur.expr = 0;
|
||||
|
||||
/* clear parse trees */
|
||||
awk->tree.ok = 0;
|
||||
/*awk->tree.nbglobals = 0;
|
||||
awk->tree.nglobals = 0; */
|
||||
awk->tree.nglobals = awk->tree.nbglobals;
|
||||
|
||||
awk->tree.cur_afn.ptr = ASE_NULL;
|
||||
awk->tree.cur_afn.len = 0;
|
||||
ase_map_clear (awk->tree.afns);
|
||||
|
||||
if (awk->tree.begin != ASE_NULL)
|
||||
{
|
||||
ase_awk_nde_t* next = awk->tree.begin->next;
|
||||
/*ASE_ASSERT (awk->tree.begin->next == ASE_NULL);*/
|
||||
ase_awk_clrpt (awk, awk->tree.begin);
|
||||
awk->tree.begin = ASE_NULL;
|
||||
awk->tree.begin_tail = ASE_NULL;
|
||||
}
|
||||
|
||||
if (awk->tree.end != ASE_NULL)
|
||||
{
|
||||
/*ASE_ASSERT (awk->tree.end->next == ASE_NULL);*/
|
||||
ase_awk_clrpt (awk, awk->tree.end);
|
||||
awk->tree.end = ASE_NULL;
|
||||
awk->tree.end_tail = ASE_NULL;
|
||||
}
|
||||
|
||||
while (awk->tree.chain != ASE_NULL)
|
||||
{
|
||||
ase_awk_chain_t* next = awk->tree.chain->next;
|
||||
|
||||
if (awk->tree.chain->pattern != ASE_NULL)
|
||||
ase_awk_clrpt (awk, awk->tree.chain->pattern);
|
||||
if (awk->tree.chain->action != ASE_NULL)
|
||||
ase_awk_clrpt (awk, awk->tree.chain->action);
|
||||
ASE_AWK_FREE (awk, awk->tree.chain);
|
||||
awk->tree.chain = next;
|
||||
}
|
||||
|
||||
awk->tree.chain_tail = ASE_NULL;
|
||||
awk->tree.chain_size = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void* ase_awk_getxtn (ase_awk_t* awk)
|
||||
{
|
||||
return (void*)(awk + 1);
|
||||
}
|
||||
|
||||
ase_mmgr_t* ase_awk_getmmgr (ase_awk_t* awk)
|
||||
{
|
||||
return awk->mmgr;
|
||||
}
|
||||
|
||||
void ase_awk_setmmgr (ase_awk_t* awk, ase_mmgr_t* mmgr)
|
||||
{
|
||||
awk->mmgr = mmgr;
|
||||
}
|
||||
|
||||
ase_ccls_t* ase_awk_getccls (ase_awk_t* awk)
|
||||
{
|
||||
return awk->ccls;
|
||||
}
|
||||
|
||||
void ase_awk_setccls (ase_awk_t* awk, ase_ccls_t* ccls)
|
||||
{
|
||||
ASE_ASSERT (ccls->is_upper != ASE_NULL);
|
||||
ASE_ASSERT (ccls->is_lower != ASE_NULL);
|
||||
ASE_ASSERT (ccls->is_alpha != ASE_NULL);
|
||||
ASE_ASSERT (ccls->is_digit != ASE_NULL);
|
||||
ASE_ASSERT (ccls->is_xdigit != ASE_NULL);
|
||||
ASE_ASSERT (ccls->is_alnum != ASE_NULL);
|
||||
ASE_ASSERT (ccls->is_space != ASE_NULL);
|
||||
ASE_ASSERT (ccls->is_print != ASE_NULL);
|
||||
ASE_ASSERT (ccls->is_graph != ASE_NULL);
|
||||
ASE_ASSERT (ccls->is_cntrl != ASE_NULL);
|
||||
ASE_ASSERT (ccls->is_punct != ASE_NULL);
|
||||
ASE_ASSERT (ccls->to_upper != ASE_NULL);
|
||||
ASE_ASSERT (ccls->to_lower != ASE_NULL);
|
||||
|
||||
awk->ccls = ccls;
|
||||
}
|
||||
|
||||
ase_awk_prmfns_t* ase_awk_getprmfns (ase_awk_t* awk)
|
||||
{
|
||||
return awk->prmfns;
|
||||
}
|
||||
|
||||
void ase_awk_setprmfns (ase_awk_t* awk, ase_awk_prmfns_t* prmfns)
|
||||
{
|
||||
ASE_ASSERT (prmfns->pow != ASE_NULL);
|
||||
ASE_ASSERT (prmfns->sprintf != ASE_NULL);
|
||||
ASE_ASSERT (prmfns->dprintf != ASE_NULL);
|
||||
|
||||
awk->prmfns = prmfns;
|
||||
}
|
||||
|
||||
int ase_awk_getoption (ase_awk_t* awk)
|
||||
{
|
||||
return awk->option;
|
||||
}
|
||||
|
||||
void ase_awk_setoption (ase_awk_t* awk, int opt)
|
||||
{
|
||||
awk->option = opt;
|
||||
}
|
||||
|
||||
|
||||
void ase_awk_stopall (ase_awk_t* awk)
|
||||
{
|
||||
awk->stopall = ASE_TRUE;
|
||||
}
|
||||
|
||||
int ase_awk_getword (ase_awk_t* awk,
|
||||
const ase_char_t* okw, ase_size_t olen,
|
||||
const ase_char_t** nkw, ase_size_t* nlen)
|
||||
{
|
||||
ase_map_pair_t* p;
|
||||
|
||||
p = ase_map_search (awk->wtab, okw, olen);
|
||||
if (p == ASE_NULL) return -1;
|
||||
|
||||
*nkw = ((ase_cstr_t*)p->vptr)->ptr;
|
||||
*nlen = ((ase_cstr_t*)p->vptr)->len;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ase_awk_unsetword (ase_awk_t* awk, const ase_char_t* kw, ase_size_t len)
|
||||
{
|
||||
ase_map_pair_t* p;
|
||||
|
||||
p = ase_map_search (awk->wtab, kw, len);
|
||||
if (p == ASE_NULL)
|
||||
{
|
||||
SETERRARG (awk, ASE_AWK_ENOENT, 0, kw, len);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ase_map_delete (awk->rwtab, ASE_MAP_VPTR(p), ASE_MAP_VLEN(p));
|
||||
ase_map_delete (awk->wtab, kw, len);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void ase_awk_unsetallwords (ase_awk_t* awk)
|
||||
{
|
||||
ase_map_clear (awk->wtab);
|
||||
ase_map_clear (awk->rwtab);
|
||||
}
|
||||
|
||||
int ase_awk_setword (ase_awk_t* awk,
|
||||
const ase_char_t* okw, ase_size_t olen,
|
||||
const ase_char_t* nkw, ase_size_t nlen)
|
||||
{
|
||||
ase_cstr_t* vn, * vo;
|
||||
|
||||
if (nkw == ASE_NULL || nlen == 0)
|
||||
{
|
||||
ase_map_pair_t* p;
|
||||
|
||||
if (okw == ASE_NULL || olen == 0)
|
||||
{
|
||||
/* clear the entire table */
|
||||
ase_awk_unsetallwords (awk);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ase_awk_unsetword (awk, okw, olen);
|
||||
}
|
||||
else if (okw == ASE_NULL || olen == 0)
|
||||
{
|
||||
SETERR (awk, ASE_AWK_EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* set the word */
|
||||
if (ase_map_upsert (awk->wtab,
|
||||
(ase_char_t*)okw, olen, (ase_char_t*)nkw, nlen) == ASE_NULL)
|
||||
{
|
||||
SETERR (awk, ASE_AWK_ENOMEM);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ase_map_upsert (awk->rwtab,
|
||||
(ase_char_t*)nkw, nlen, (ase_char_t*)okw, olen) == ASE_NULL)
|
||||
{
|
||||
ase_map_delete (awk->wtab, okw, olen);
|
||||
SETERR (awk, ASE_AWK_ENOMEM);
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* TODO: XXXX */
|
||||
int ase_awk_setrexfns (ase_awk_t* awk, ase_awk_rexfns_t* rexfns)
|
||||
{
|
||||
if (rexfns->build == ASE_NULL ||
|
||||
rexfns->match == ASE_NULL ||
|
||||
rexfns->free == ASE_NULL ||
|
||||
rexfns->isempty == ASE_NULL)
|
||||
{
|
||||
SETERR (awk, ASE_AWK_EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
awk->rexfns = rexfns;
|
||||
return 0;
|
||||
}
|
382
qse/lib/awk/awk.h
Normal file
382
qse/lib/awk/awk.h
Normal file
@ -0,0 +1,382 @@
|
||||
/*
|
||||
* $Id: awk_i.h 332 2008-08-18 11:21:48Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#ifndef _ASE_LIB_AWK_AWK_H_
|
||||
#define _ASE_LIB_AWK_AWK_H_
|
||||
|
||||
#include "../cmn/mem.h"
|
||||
#include "../cmn/chr.h"
|
||||
#include <ase/cmn/str.h>
|
||||
#include <ase/cmn/map.h>
|
||||
#include <ase/cmn/lda.h>
|
||||
#include <ase/cmn/rex.h>
|
||||
|
||||
typedef struct ase_awk_chain_t ase_awk_chain_t;
|
||||
typedef struct ase_awk_tree_t ase_awk_tree_t;
|
||||
|
||||
#include <ase/awk/awk.h>
|
||||
#include "tree.h"
|
||||
#include "func.h"
|
||||
#include "parse.h"
|
||||
#include "run.h"
|
||||
#include "extio.h"
|
||||
#include "misc.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning (disable: 4996)
|
||||
#pragma warning (disable: 4296)
|
||||
#endif
|
||||
|
||||
#define ASE_AWK_MAX_GLOBALS 9999
|
||||
#define ASE_AWK_MAX_LOCALS 9999
|
||||
#define ASE_AWK_MAX_PARAMS 9999
|
||||
|
||||
#define ASE_AWK_ALLOC(awk,size) ASE_MMGR_ALLOC((awk)->mmgr,size)
|
||||
#define ASE_AWK_REALLOC(awk,ptr,size) ASE_MMGR_REALLOC((awk)->mmgr,ptr,size)
|
||||
#define ASE_AWK_FREE(awk,ptr) ASE_MMGR_FREE((awk)->mmgr,ptr)
|
||||
|
||||
#define ASE_AWK_ISUPPER(awk,c) ASE_CCLS_ISUPPER((awk)->ccls,c)
|
||||
#define ASE_AWK_ISLOWER(awk,c) ASE_CCLS_ISLOWER((awk)->ccls,c)
|
||||
#define ASE_AWK_ISALPHA(awk,c) ASE_CCLS_ISALPHA((awk)->ccls,c)
|
||||
#define ASE_AWK_ISDIGIT(awk,c) ASE_CCLS_ISDIGIT((awk)->ccls,c)
|
||||
#define ASE_AWK_ISXDIGIT(awk,c) ASE_CCLS_ISXDIGIT((awk)->ccls,c)
|
||||
#define ASE_AWK_ISALNUM(awk,c) ASE_CCLS_ISALNUM((awk)->ccls,c)
|
||||
#define ASE_AWK_ISSPACE(awk,c) ASE_CCLS_ISSPACE((awk)->ccls,c)
|
||||
#define ASE_AWK_ISPRINT(awk,c) ASE_CCLS_ISPRINT((awk)->ccls,c)
|
||||
#define ASE_AWK_ISGRAPH(awk,c) ASE_CCLS_ISGRAPH((awk)->ccls,c)
|
||||
#define ASE_AWK_ISCNTRL(awk,c) ASE_CCLS_ISCNTRL((awk)->ccls,c)
|
||||
#define ASE_AWK_ISPUNCT(awk,c) ASE_CCLS_ISPUNCT((awk)->ccls,c)
|
||||
#define ASE_AWK_TOUPPER(awk,c) ASE_CCLS_TOUPPER((awk)->ccls,c)
|
||||
#define ASE_AWK_TOLOWER(awk,c) ASE_CCLS_TOLOWER((awk)->ccls,c)
|
||||
|
||||
#define ASE_AWK_STRDUP(awk,str) (ase_strdup(str,(awk)->mmgr))
|
||||
#define ASE_AWK_STRXDUP(awk,str,len) (ase_strxdup(str,len,(awk)->mmgr))
|
||||
|
||||
struct ase_awk_tree_t
|
||||
{
|
||||
ase_size_t nglobals; /* total number of globals */
|
||||
ase_size_t nbglobals; /* number of intrinsic globals */
|
||||
ase_cstr_t cur_afn;
|
||||
ase_map_t* afns; /* awk function map */
|
||||
|
||||
ase_awk_nde_t* begin;
|
||||
ase_awk_nde_t* begin_tail;
|
||||
|
||||
ase_awk_nde_t* end;
|
||||
ase_awk_nde_t* end_tail;
|
||||
|
||||
ase_awk_chain_t* chain;
|
||||
ase_awk_chain_t* chain_tail;
|
||||
ase_size_t chain_size; /* number of nodes in the chain */
|
||||
|
||||
int ok;
|
||||
};
|
||||
|
||||
struct ase_awk_t
|
||||
{
|
||||
ase_mmgr_t* mmgr;
|
||||
ase_ccls_t* ccls;
|
||||
ase_awk_prmfns_t* prmfns;
|
||||
|
||||
void* assoc_data;
|
||||
|
||||
/* options */
|
||||
int option;
|
||||
|
||||
/* word table */
|
||||
ase_map_t* wtab;
|
||||
/* reverse word table */
|
||||
ase_map_t* rwtab;
|
||||
|
||||
/* regular expression processing routines */
|
||||
ase_awk_rexfns_t* rexfns;
|
||||
|
||||
/* parse tree */
|
||||
ase_awk_tree_t tree;
|
||||
|
||||
/* temporary information that the parser needs */
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
int block;
|
||||
int loop;
|
||||
int stmnt; /* statement */
|
||||
} id;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
ase_size_t block;
|
||||
ase_size_t loop;
|
||||
ase_size_t expr; /* expression */
|
||||
} cur;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_size_t block;
|
||||
ase_size_t expr;
|
||||
} max;
|
||||
} depth;
|
||||
|
||||
/* function calls */
|
||||
ase_map_t* afns;
|
||||
|
||||
/* named variables */
|
||||
ase_map_t* named;
|
||||
|
||||
/* global variables */
|
||||
ase_lda_t* globals;
|
||||
|
||||
/* local variables */
|
||||
ase_lda_t* locals;
|
||||
|
||||
/* parameters to a function */
|
||||
ase_lda_t* params;
|
||||
|
||||
/* maximum number of local variables */
|
||||
ase_size_t nlocals_max;
|
||||
|
||||
ase_awk_nde_t* (*parse_block) (
|
||||
ase_awk_t*,ase_size_t,ase_bool_t);
|
||||
|
||||
} parse;
|
||||
|
||||
/* source code management */
|
||||
struct
|
||||
{
|
||||
ase_awk_srcios_t ios;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_cint_t curc;
|
||||
ase_cint_t ungotc[5];
|
||||
ase_size_t ungotc_line[5];
|
||||
ase_size_t ungotc_column[5];
|
||||
ase_size_t ungotc_count;
|
||||
|
||||
ase_size_t line;
|
||||
ase_size_t column;
|
||||
} lex;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_char_t buf[512];
|
||||
ase_size_t buf_pos;
|
||||
ase_size_t buf_len;
|
||||
} shared;
|
||||
} src;
|
||||
|
||||
/* token */
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
int type;
|
||||
ase_size_t line;
|
||||
ase_size_t column;
|
||||
} prev;
|
||||
|
||||
int type;
|
||||
ase_str_t* name;
|
||||
ase_size_t line;
|
||||
ase_size_t column;
|
||||
} token;
|
||||
|
||||
/* intrinsic functions */
|
||||
struct
|
||||
{
|
||||
ase_awk_bfn_t* sys;
|
||||
ase_map_t* user;
|
||||
} bfn;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
ase_size_t block;
|
||||
ase_size_t expr;
|
||||
} max;
|
||||
} depth;
|
||||
} run;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
ase_size_t build;
|
||||
ase_size_t match;
|
||||
} max;
|
||||
} depth;
|
||||
} rex;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_char_t fmt[1024];
|
||||
} tmp;
|
||||
|
||||
/* housekeeping */
|
||||
int errnum;
|
||||
ase_size_t errlin;
|
||||
ase_char_t errmsg[256];
|
||||
ase_char_t* errstr[ASE_AWK_NUMERRNUM];
|
||||
|
||||
ase_bool_t stopall;
|
||||
};
|
||||
|
||||
struct ase_awk_chain_t
|
||||
{
|
||||
ase_awk_nde_t* pattern;
|
||||
ase_awk_nde_t* action;
|
||||
ase_awk_chain_t* next;
|
||||
};
|
||||
|
||||
struct ase_awk_run_t
|
||||
{
|
||||
int id;
|
||||
ase_map_t* named;
|
||||
|
||||
void** stack;
|
||||
ase_size_t stack_top;
|
||||
ase_size_t stack_base;
|
||||
ase_size_t stack_limit;
|
||||
int exit_level;
|
||||
|
||||
ase_awk_val_ref_t* fcache[128];
|
||||
/*ase_awk_val_str_t* scache32[128];
|
||||
ase_awk_val_str_t* scache64[128];*/
|
||||
ase_size_t fcache_count;
|
||||
/*ase_size_t scache32_count;
|
||||
ase_size_t scache64_count;*/
|
||||
|
||||
struct
|
||||
{
|
||||
ase_awk_val_int_t* ifree;
|
||||
ase_awk_val_chunk_t* ichunk;
|
||||
ase_awk_val_real_t* rfree;
|
||||
ase_awk_val_chunk_t* rchunk;
|
||||
} vmgr;
|
||||
|
||||
ase_awk_nde_blk_t* active_block;
|
||||
ase_byte_t* pattern_range_state;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_char_t buf[1024];
|
||||
ase_size_t buf_pos;
|
||||
ase_size_t buf_len;
|
||||
ase_bool_t eof;
|
||||
|
||||
ase_str_t line;
|
||||
ase_awk_val_t* d0; /* $0 */
|
||||
|
||||
ase_size_t maxflds;
|
||||
ase_size_t nflds; /* NF */
|
||||
struct
|
||||
{
|
||||
ase_char_t* ptr;
|
||||
ase_size_t len;
|
||||
ase_awk_val_t* val; /* $1 .. $NF */
|
||||
}* flds;
|
||||
|
||||
} inrec;
|
||||
|
||||
struct
|
||||
{
|
||||
void* rs;
|
||||
void* fs;
|
||||
int ignorecase;
|
||||
|
||||
ase_long_t nr;
|
||||
ase_long_t fnr;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_char_t* ptr;
|
||||
ase_size_t len;
|
||||
} convfmt;
|
||||
struct
|
||||
{
|
||||
ase_char_t* ptr;
|
||||
ase_size_t len;
|
||||
} ofmt;
|
||||
struct
|
||||
{
|
||||
ase_char_t* ptr;
|
||||
ase_size_t len;
|
||||
} ofs;
|
||||
struct
|
||||
{
|
||||
ase_char_t* ptr;
|
||||
ase_size_t len;
|
||||
} ors;
|
||||
struct
|
||||
{
|
||||
ase_char_t* ptr;
|
||||
ase_size_t len;
|
||||
} subsep;
|
||||
} global;
|
||||
|
||||
/* extio chain */
|
||||
struct
|
||||
{
|
||||
ase_awk_io_t handler[ASE_AWK_EXTIO_NUM];
|
||||
void* data;
|
||||
ase_awk_extio_t* chain;
|
||||
} extio;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_str_t fmt;
|
||||
ase_str_t out;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_char_t* ptr;
|
||||
ase_size_t len; /* length */
|
||||
ase_size_t inc; /* increment */
|
||||
} tmp;
|
||||
} format;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
ase_size_t block;
|
||||
ase_size_t expr; /* expression */
|
||||
} cur;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_size_t block;
|
||||
ase_size_t expr;
|
||||
} max;
|
||||
} depth;
|
||||
|
||||
int errnum;
|
||||
ase_size_t errlin;
|
||||
ase_char_t errmsg[256];
|
||||
|
||||
void* data;
|
||||
|
||||
ase_awk_t* awk;
|
||||
ase_awk_runcbs_t* cbs;
|
||||
};
|
||||
|
||||
|
||||
#define ASE_AWK_FREEREX(awk,code) ase_freerex((awk)->mmgr,code)
|
||||
#define ASE_AWK_ISEMPTYREX(awk,code) ase_isemptyrex(code)
|
||||
#define ASE_AWK_BUILDREX(awk,ptn,len,errnum) \
|
||||
ase_awk_buildrex(awk,ptn,len,errnum)
|
||||
#define ASE_AWK_MATCHREX(awk,code,option,str,len,match_ptr,match_len,errnum) \
|
||||
ase_awk_matchrex(awk,code,option,str,len,match_ptr,match_len,errnum)
|
||||
|
||||
#endif
|
71
qse/lib/awk/awk.txt
Normal file
71
qse/lib/awk/awk.txt
Normal file
@ -0,0 +1,71 @@
|
||||
Programs
|
||||
|
||||
pattern { action }
|
||||
function name (parameter-list) { statement }
|
||||
|
||||
Patterns
|
||||
BEGIN
|
||||
END
|
||||
expresion
|
||||
/regular expression/
|
||||
pattern && pattern
|
||||
pattern || pattern
|
||||
!pattern
|
||||
(pattern)
|
||||
pattern, pattern -> range pattern
|
||||
|
||||
Actions
|
||||
break
|
||||
continue
|
||||
delete array-element
|
||||
do statement while (expression)
|
||||
exit [expression]
|
||||
expression
|
||||
if (expression) statement [else statement]
|
||||
input-output statement
|
||||
for (expression; expression; expression) statement
|
||||
for (variable in array) statement
|
||||
next
|
||||
return [expression]
|
||||
while (expression) statement
|
||||
{ statements }
|
||||
|
||||
Variables
|
||||
|
||||
global variables (enabled when awk->opt & ASE_AWK_OPT_VARDCL)
|
||||
|
||||
global x;
|
||||
global x, y;
|
||||
|
||||
local variables (enabled when awk->opt & ASE_AWK_OPT_VARDCL)
|
||||
|
||||
local x;
|
||||
local x, y;
|
||||
|
||||
function arguments (enabled always)
|
||||
|
||||
function funca (x, y)
|
||||
|
||||
|
||||
local variables in function declaration (enabled when awk->opt & ASE_AWK_OPT_FUNCLOCAL)
|
||||
|
||||
function funca (x, y, v1, v2)
|
||||
|
||||
|
||||
variables without any declarations (enabled when awk->opt & ASE_AWK_OPT_NAMEDVAR)
|
||||
|
||||
x = 10; // x is put into the global hash table.
|
||||
|
||||
|
||||
Optimization
|
||||
|
||||
constant folding
|
||||
2 * 10 => 20
|
||||
|
||||
loop
|
||||
remove while (0) { ... }
|
||||
|
||||
if
|
||||
remove if (0) {}
|
||||
use else_part only
|
||||
|
25
qse/lib/awk/descrip.mms
Normal file
25
qse/lib/awk/descrip.mms
Normal file
@ -0,0 +1,25 @@
|
||||
#
|
||||
# OpenVMS MMS/MMK
|
||||
#
|
||||
|
||||
objects = awk.obj,err.obj,tree.obj,tab.obj,parse.obj,run.obj,rec.obj,val.obj,func.obj,misc.obj,extio.obj
|
||||
|
||||
CFLAGS = /include="../.."
|
||||
#CFLAGS = /pointer_size=long /include="../.."
|
||||
LIBRFLAGS =
|
||||
|
||||
aseawk.olb : $(objects)
|
||||
$(LIBR)/create $(MMS$TARGET) $(objects)
|
||||
# $(LIBR)/replace $(LIBRFLAGS) $(MMS$TARGET),$(objects)
|
||||
|
||||
awk.obj depends_on awk.c
|
||||
err.obj depends_on err.c
|
||||
tree.obj depends_on tree.c
|
||||
tab.obj depends_on tab.c
|
||||
parse.obj depends_on parse.c
|
||||
run.obj depends_on run.c
|
||||
rec.obj depends_on rec.c
|
||||
val.obj depends_on val.c
|
||||
func.obj depends_on func.c
|
||||
misc.obj depends_on misc.c
|
||||
extio.obj depends_on extio.c
|
490
qse/lib/awk/err.c
Normal file
490
qse/lib/awk/err.c
Normal file
@ -0,0 +1,490 @@
|
||||
/*
|
||||
* $Id: err.c 337 2008-08-20 09:17:25Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#include "awk.h"
|
||||
|
||||
static const ase_char_t* __geterrstr (int errnum)
|
||||
{
|
||||
static const ase_char_t* errstr[] =
|
||||
{
|
||||
ASE_T("no error"),
|
||||
ASE_T("custom error"),
|
||||
|
||||
ASE_T("invalid parameter or data"),
|
||||
ASE_T("out of memory"),
|
||||
ASE_T("not supported"),
|
||||
ASE_T("operation not allowed"),
|
||||
ASE_T("no such device"),
|
||||
ASE_T("no space left on device"),
|
||||
ASE_T("too many open files"),
|
||||
ASE_T("too many links"),
|
||||
ASE_T("resource temporarily unavailable"),
|
||||
ASE_T("'%.*s' not existing"),
|
||||
ASE_T("'%.*s' already exists"),
|
||||
ASE_T("file or data too big"),
|
||||
ASE_T("system too busy"),
|
||||
ASE_T("is a directory"),
|
||||
ASE_T("i/o error"),
|
||||
|
||||
ASE_T("cannot open '%.*s'"),
|
||||
ASE_T("cannot read '%.*s'"),
|
||||
ASE_T("cannot write '%.*s'"),
|
||||
ASE_T("cannot close '%.*s'"),
|
||||
|
||||
ASE_T("internal error that should never have happened"),
|
||||
ASE_T("general run-time error"),
|
||||
ASE_T("block nested too deeply"),
|
||||
ASE_T("expressio nested too deeply"),
|
||||
|
||||
ASE_T("cannot open source input"),
|
||||
ASE_T("cannot close source input"),
|
||||
ASE_T("cannot read source input"),
|
||||
|
||||
ASE_T("cannot open source output"),
|
||||
ASE_T("cannot close source output"),
|
||||
ASE_T("cannot write source output"),
|
||||
|
||||
ASE_T("invalid character '%.*s'"),
|
||||
ASE_T("invalid digit '%.*s'"),
|
||||
ASE_T("cannot unget character"),
|
||||
|
||||
ASE_T("unexpected end of source"),
|
||||
ASE_T("a comment not closed properly"),
|
||||
ASE_T("a string not closed with a quote"),
|
||||
ASE_T("unexpected end of a regular expression"),
|
||||
ASE_T("a left brace expected in place of '%.*s'"),
|
||||
ASE_T("a left parenthesis expected in place of '%.*s'"),
|
||||
ASE_T("a right parenthesis expected in place of '%.*s'"),
|
||||
ASE_T("a right bracket expected in place of '%.*s'"),
|
||||
ASE_T("a comma expected in place of '%.*s'"),
|
||||
ASE_T("a semicolon expected in place of '%.*s'"),
|
||||
ASE_T("a colon expected in place of '%.*s'"),
|
||||
ASE_T("statement not ending with a semicolon"),
|
||||
ASE_T("'in' expected in place of '%.*s'"),
|
||||
ASE_T("right-hand side of the 'in' operator not a variable"),
|
||||
ASE_T("invalid expression"),
|
||||
|
||||
ASE_T("keyword 'function' expected in place of '%.*s'"),
|
||||
ASE_T("keyword 'while' expected in place of '%.*s'"),
|
||||
ASE_T("invalid assignment statement"),
|
||||
ASE_T("an identifier expected in place of '%.*s'"),
|
||||
ASE_T("'%.*s' not a valid function name"),
|
||||
ASE_T("BEGIN not followed by a left bracket on the same line"),
|
||||
ASE_T("END not followed by a left bracket on the same line"),
|
||||
ASE_T("duplicate BEGIN"),
|
||||
ASE_T("duplicate END"),
|
||||
ASE_T("intrinsic function '%.*s' redefined"),
|
||||
ASE_T("function '%.*s' redefined"),
|
||||
ASE_T("global variable '%.*s' redefined"),
|
||||
ASE_T("parameter '%.*s' redefined"),
|
||||
ASE_T("variable '%.*s' redefined"),
|
||||
ASE_T("duplicate parameter name '%.*s'"),
|
||||
ASE_T("duplicate global variable '%.*s'"),
|
||||
ASE_T("duplicate local variable '%.*s'"),
|
||||
ASE_T("'%.*s' not a valid parameter name"),
|
||||
ASE_T("'%.*s' not a valid variable name"),
|
||||
ASE_T("undefined identifier '%.*s'"),
|
||||
ASE_T("l-value required"),
|
||||
ASE_T("too many global variables"),
|
||||
ASE_T("too many local variables"),
|
||||
ASE_T("too many parameters"),
|
||||
ASE_T("delete statement not followed by a normal variable"),
|
||||
ASE_T("reset statement not followed by a normal variable"),
|
||||
ASE_T("break statement outside a loop"),
|
||||
ASE_T("continue statement outside a loop"),
|
||||
ASE_T("next statement illegal in the BEGIN block"),
|
||||
ASE_T("next statement illegal in the END block"),
|
||||
ASE_T("nextfile statement illegal in the BEGIN block"),
|
||||
ASE_T("nextfile statement illegal in the END block"),
|
||||
ASE_T("printf not followed by any arguments"),
|
||||
ASE_T("both prefix and postfix increment/decrement operator present"),
|
||||
ASE_T("coprocess not supported by getline"),
|
||||
|
||||
ASE_T("divide by zero"),
|
||||
ASE_T("invalid operand"),
|
||||
ASE_T("wrong position index"),
|
||||
ASE_T("too few arguments"),
|
||||
ASE_T("too many arguments"),
|
||||
ASE_T("function '%.*s' not found"),
|
||||
ASE_T("variable not indexable"),
|
||||
ASE_T("variable '%.*s' not deletable"),
|
||||
ASE_T("value not a map"),
|
||||
ASE_T("right-hand side of the 'in' operator not a map"),
|
||||
ASE_T("right-hand side of the 'in' operator not a map nor nil"),
|
||||
ASE_T("value not referenceable"),
|
||||
ASE_T("value not assignable"),
|
||||
ASE_T("an indexed value cannot be assigned a map"),
|
||||
ASE_T("a positional value cannot be assigned a map"),
|
||||
ASE_T("map '%.*s' not assignable with a scalar"),
|
||||
ASE_T("cannot change a scalar value to a map"),
|
||||
ASE_T("a map is not allowed"),
|
||||
ASE_T("invalid value type"),
|
||||
ASE_T("delete statement called with a wrong target"),
|
||||
ASE_T("reset statement called with a wrong target"),
|
||||
ASE_T("next statement called from the BEGIN block"),
|
||||
ASE_T("next statement called from the END block"),
|
||||
ASE_T("nextfile statement called from the BEGIN block"),
|
||||
ASE_T("nextfile statement called from the END block"),
|
||||
ASE_T("wrong implementation of intrinsic function handler"),
|
||||
ASE_T("intrinsic function handler returned an error"),
|
||||
ASE_T("wrong implementation of user-defined io handler"),
|
||||
ASE_T("no such io name found"),
|
||||
ASE_T("i/o handler returned an error"),
|
||||
ASE_T("i/o name empty"),
|
||||
ASE_T("i/o name containing a null character"),
|
||||
ASE_T("not sufficient arguments to formatting sequence"),
|
||||
ASE_T("recursion detected in format conversion"),
|
||||
ASE_T("invalid character in CONVFMT"),
|
||||
ASE_T("invalid character in OFMT"),
|
||||
|
||||
ASE_T("recursion too deep in the regular expression"),
|
||||
ASE_T("a right parenthesis expected in the regular expression"),
|
||||
ASE_T("a right bracket expected in the regular expression"),
|
||||
ASE_T("a right brace expected in the regular expression"),
|
||||
ASE_T("unbalanced parenthesis in the regular expression"),
|
||||
ASE_T("a colon expected in the regular expression"),
|
||||
ASE_T("invalid character range in the regular expression"),
|
||||
ASE_T("invalid character class in the regular expression"),
|
||||
ASE_T("invalid boundary range in the regular expression"),
|
||||
ASE_T("unexpected end of the regular expression"),
|
||||
ASE_T("garbage after the regular expression")
|
||||
};
|
||||
|
||||
if (errnum >= 0 && errnum < ASE_COUNTOF(errstr))
|
||||
{
|
||||
return errstr[errnum];
|
||||
}
|
||||
|
||||
return ASE_T("unknown error");
|
||||
}
|
||||
|
||||
const ase_char_t* ase_awk_geterrstr (ase_awk_t* awk, int num)
|
||||
{
|
||||
if (awk != ASE_NULL &&
|
||||
awk->errstr[num] != ASE_NULL) return awk->errstr[num];
|
||||
return __geterrstr (num);
|
||||
}
|
||||
|
||||
int ase_awk_seterrstr (ase_awk_t* awk, int num, const ase_char_t* str)
|
||||
{
|
||||
ase_char_t* dup;
|
||||
|
||||
if (str == ASE_NULL) dup = ASE_NULL;
|
||||
else
|
||||
{
|
||||
dup = ASE_AWK_STRDUP (awk, str);
|
||||
if (dup == ASE_NULL) return -1;
|
||||
}
|
||||
|
||||
if (awk->errstr[num] != ASE_NULL)
|
||||
ASE_AWK_FREE (awk, awk->errstr[num]);
|
||||
else awk->errstr[num] = dup;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ase_awk_geterrnum (ase_awk_t* awk)
|
||||
{
|
||||
return awk->errnum;
|
||||
}
|
||||
|
||||
ase_size_t ase_awk_geterrlin (ase_awk_t* awk)
|
||||
{
|
||||
return awk->errlin;
|
||||
}
|
||||
|
||||
const ase_char_t* ase_awk_geterrmsg (ase_awk_t* awk)
|
||||
{
|
||||
if (awk->errmsg[0] == ASE_T('\0'))
|
||||
return ase_awk_geterrstr (awk, awk->errnum);
|
||||
return awk->errmsg;
|
||||
}
|
||||
|
||||
void ase_awk_geterror (
|
||||
ase_awk_t* awk, int* errnum,
|
||||
ase_size_t* errlin, const ase_char_t** errmsg)
|
||||
{
|
||||
if (errnum != ASE_NULL) *errnum = awk->errnum;
|
||||
if (errlin != ASE_NULL) *errlin = awk->errlin;
|
||||
if (errmsg != ASE_NULL)
|
||||
{
|
||||
if (awk->errmsg[0] == ASE_T('\0'))
|
||||
*errmsg = ase_awk_geterrstr (awk, awk->errnum);
|
||||
else
|
||||
*errmsg = awk->errmsg;
|
||||
}
|
||||
}
|
||||
|
||||
void ase_awk_seterrnum (ase_awk_t* awk, int errnum)
|
||||
{
|
||||
awk->errnum = errnum;
|
||||
awk->errlin = 0;
|
||||
awk->errmsg[0] = ASE_T('\0');
|
||||
}
|
||||
|
||||
void ase_awk_seterrmsg (ase_awk_t* awk,
|
||||
int errnum, ase_size_t errlin, const ase_char_t* errmsg)
|
||||
{
|
||||
awk->errnum = errnum;
|
||||
awk->errlin = errlin;
|
||||
ase_strxcpy (awk->errmsg, ASE_COUNTOF(awk->errmsg), errmsg);
|
||||
}
|
||||
|
||||
void ase_awk_seterror (
|
||||
ase_awk_t* awk, int errnum, ase_size_t errlin,
|
||||
const ase_cstr_t* errarg, ase_size_t argcnt)
|
||||
{
|
||||
const ase_char_t* errfmt;
|
||||
ase_size_t fmtlen;
|
||||
|
||||
ASE_ASSERT (argcnt <= 5);
|
||||
|
||||
awk->errnum = errnum;
|
||||
awk->errlin = errlin;
|
||||
|
||||
errfmt = ase_awk_geterrstr (awk, errnum);
|
||||
fmtlen = ase_strlen(errfmt);
|
||||
|
||||
switch (argcnt)
|
||||
{
|
||||
case 0:
|
||||
awk->prmfns->sprintf (
|
||||
awk->prmfns->data,
|
||||
awk->errmsg,
|
||||
ASE_COUNTOF(awk->errmsg),
|
||||
errfmt);
|
||||
return;
|
||||
|
||||
case 1:
|
||||
{
|
||||
ase_char_t tmp[ASE_COUNTOF(awk->errmsg)];
|
||||
ase_size_t len, tl;
|
||||
|
||||
if (fmtlen < ASE_COUNTOF(awk->errmsg) &&
|
||||
errarg[0].len + fmtlen >= ASE_COUNTOF(awk->errmsg))
|
||||
{
|
||||
len = ASE_COUNTOF(awk->errmsg) - fmtlen - 3 - 1;
|
||||
tl = ase_strxncpy (tmp, ASE_COUNTOF(tmp), errarg[0].ptr, len);
|
||||
tmp[tl] = ASE_T('.');
|
||||
tmp[tl+1] = ASE_T('.');
|
||||
tmp[tl+2] = ASE_T('.');
|
||||
len += 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
len = errarg[0].len;
|
||||
ase_strxncpy (tmp, ASE_COUNTOF(tmp), errarg[0].ptr, len);
|
||||
}
|
||||
|
||||
awk->prmfns->sprintf (
|
||||
awk->prmfns->data,
|
||||
awk->errmsg,
|
||||
ASE_COUNTOF(awk->errmsg),
|
||||
errfmt, (int)len, tmp);
|
||||
return;
|
||||
}
|
||||
|
||||
case 2:
|
||||
awk->prmfns->sprintf (
|
||||
awk->prmfns->data,
|
||||
awk->errmsg,
|
||||
ASE_COUNTOF(awk->errmsg),
|
||||
errfmt,
|
||||
(int)errarg[0].len, errarg[0].ptr,
|
||||
(int)errarg[1].len, errarg[1].ptr);
|
||||
return;
|
||||
|
||||
case 3:
|
||||
awk->prmfns->sprintf (
|
||||
awk->prmfns->data,
|
||||
awk->errmsg,
|
||||
ASE_COUNTOF(awk->errmsg),
|
||||
errfmt,
|
||||
(int)errarg[0].len, errarg[0].ptr,
|
||||
(int)errarg[1].len, errarg[1].ptr,
|
||||
(int)errarg[2].len, errarg[2].ptr);
|
||||
return;
|
||||
|
||||
case 4:
|
||||
awk->prmfns->sprintf (
|
||||
awk->prmfns->data,
|
||||
awk->errmsg,
|
||||
ASE_COUNTOF(awk->errmsg),
|
||||
errfmt,
|
||||
(int)errarg[0].len, errarg[0].ptr,
|
||||
(int)errarg[1].len, errarg[1].ptr,
|
||||
(int)errarg[2].len, errarg[2].ptr,
|
||||
(int)errarg[3].len, errarg[3].ptr);
|
||||
return;
|
||||
|
||||
case 5:
|
||||
awk->prmfns->sprintf (
|
||||
awk->prmfns->data,
|
||||
awk->errmsg,
|
||||
ASE_COUNTOF(awk->errmsg),
|
||||
errfmt,
|
||||
(int)errarg[0].len, errarg[0].ptr,
|
||||
(int)errarg[1].len, errarg[1].ptr,
|
||||
(int)errarg[2].len, errarg[2].ptr,
|
||||
(int)errarg[3].len, errarg[3].ptr,
|
||||
(int)errarg[4].len, errarg[4].ptr);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
int ase_awk_getrunerrnum (ase_awk_run_t* run)
|
||||
{
|
||||
return run->errnum;
|
||||
}
|
||||
|
||||
ase_size_t ase_awk_getrunerrlin (ase_awk_run_t* run)
|
||||
{
|
||||
return run->errlin;
|
||||
}
|
||||
|
||||
const ase_char_t* ase_awk_getrunerrmsg (ase_awk_run_t* run)
|
||||
{
|
||||
if (run->errmsg[0] == ASE_T('\0'))
|
||||
return ase_awk_geterrstr (run->awk, run->errnum);
|
||||
|
||||
return run->errmsg;
|
||||
}
|
||||
|
||||
void ase_awk_setrunerrnum (ase_awk_run_t* run, int errnum)
|
||||
{
|
||||
run->errnum = errnum;
|
||||
run->errlin = 0;
|
||||
run->errmsg[0] = ASE_T('\0');
|
||||
}
|
||||
|
||||
void ase_awk_setrunerrmsg (ase_awk_run_t* run,
|
||||
int errnum, ase_size_t errlin, const ase_char_t* errmsg)
|
||||
{
|
||||
run->errnum = errnum;
|
||||
run->errlin = errlin;
|
||||
ase_strxcpy (run->errmsg, ASE_COUNTOF(run->errmsg), errmsg);
|
||||
}
|
||||
|
||||
void ase_awk_getrunerror (
|
||||
ase_awk_run_t* run, int* errnum,
|
||||
ase_size_t* errlin, const ase_char_t** errmsg)
|
||||
{
|
||||
if (errnum != ASE_NULL) *errnum = run->errnum;
|
||||
if (errlin != ASE_NULL) *errlin = run->errlin;
|
||||
if (errmsg != ASE_NULL)
|
||||
{
|
||||
if (run->errmsg[0] == ASE_T('\0'))
|
||||
*errmsg = ase_awk_geterrstr (run->awk, run->errnum);
|
||||
else
|
||||
*errmsg = run->errmsg;
|
||||
}
|
||||
}
|
||||
|
||||
void ase_awk_setrunerror (
|
||||
ase_awk_run_t* run, int errnum, ase_size_t errlin,
|
||||
const ase_cstr_t* errarg, ase_size_t argcnt)
|
||||
{
|
||||
const ase_char_t* errfmt;
|
||||
ase_size_t fmtlen;
|
||||
|
||||
ASE_ASSERT (argcnt <= 5);
|
||||
|
||||
run->errnum = errnum;
|
||||
run->errlin = errlin;
|
||||
|
||||
errfmt = ase_awk_geterrstr (run->awk, errnum);
|
||||
fmtlen = ase_strlen (errfmt);
|
||||
|
||||
switch (argcnt)
|
||||
{
|
||||
case 0:
|
||||
/* TODO: convert % to %% if the original % is not
|
||||
* the first % of the %% sequence */
|
||||
run->awk->prmfns->sprintf (
|
||||
run->awk->prmfns->data,
|
||||
run->errmsg,
|
||||
ASE_COUNTOF(run->errmsg),
|
||||
errfmt);
|
||||
return;
|
||||
|
||||
case 1:
|
||||
{
|
||||
/* TODO: what if the argument contains a null character?
|
||||
* handle the case more gracefully than now... */
|
||||
|
||||
ase_char_t tmp[ASE_COUNTOF(run->errmsg)];
|
||||
ase_size_t len, tl;
|
||||
|
||||
if (fmtlen < ASE_COUNTOF(run->errmsg) &&
|
||||
errarg[0].len + fmtlen >= ASE_COUNTOF(run->errmsg))
|
||||
{
|
||||
len = ASE_COUNTOF(run->errmsg) - fmtlen - 3 - 1;
|
||||
tl = ase_strxncpy (tmp, ASE_COUNTOF(tmp), errarg[0].ptr, len);
|
||||
tmp[tl] = ASE_T('.');
|
||||
tmp[tl+1] = ASE_T('.');
|
||||
tmp[tl+2] = ASE_T('.');
|
||||
len += 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
len = errarg[0].len;
|
||||
ase_strxncpy (tmp, ASE_COUNTOF(tmp), errarg[0].ptr, len);
|
||||
}
|
||||
|
||||
run->awk->prmfns->sprintf (
|
||||
run->awk->prmfns->data,
|
||||
run->errmsg,
|
||||
ASE_COUNTOF(run->errmsg),
|
||||
errfmt, len, tmp);
|
||||
return;
|
||||
}
|
||||
|
||||
case 2:
|
||||
run->awk->prmfns->sprintf (
|
||||
run->awk->prmfns->data,
|
||||
run->errmsg,
|
||||
ASE_COUNTOF(run->errmsg),
|
||||
errfmt,
|
||||
errarg[0].len, errarg[0].ptr,
|
||||
errarg[1].len, errarg[1].ptr);
|
||||
return;
|
||||
|
||||
case 3:
|
||||
run->awk->prmfns->sprintf (
|
||||
run->awk->prmfns->data,
|
||||
run->errmsg,
|
||||
ASE_COUNTOF(run->errmsg),
|
||||
errfmt,
|
||||
errarg[0].len, errarg[0].ptr,
|
||||
errarg[1].len, errarg[1].ptr,
|
||||
errarg[2].len, errarg[2].ptr);
|
||||
return;
|
||||
|
||||
case 4:
|
||||
run->awk->prmfns->sprintf (
|
||||
run->awk->prmfns->data,
|
||||
run->errmsg,
|
||||
ASE_COUNTOF(run->errmsg),
|
||||
errfmt,
|
||||
errarg[0].len, errarg[0].ptr,
|
||||
errarg[1].len, errarg[1].ptr,
|
||||
errarg[2].len, errarg[2].ptr,
|
||||
errarg[3].len, errarg[3].ptr);
|
||||
return;
|
||||
|
||||
case 5:
|
||||
run->awk->prmfns->sprintf (
|
||||
run->awk->prmfns->data,
|
||||
run->errmsg,
|
||||
ASE_COUNTOF(run->errmsg),
|
||||
errfmt,
|
||||
errarg[0].len, errarg[0].ptr,
|
||||
errarg[1].len, errarg[1].ptr,
|
||||
errarg[2].len, errarg[2].ptr,
|
||||
errarg[3].len, errarg[3].ptr,
|
||||
errarg[4].len, errarg[4].ptr);
|
||||
return;
|
||||
}
|
||||
}
|
963
qse/lib/awk/extio.c
Normal file
963
qse/lib/awk/extio.c
Normal file
@ -0,0 +1,963 @@
|
||||
/*
|
||||
* $Id: extio.c 466 2008-12-09 09:50:40Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#include "awk.h"
|
||||
|
||||
enum
|
||||
{
|
||||
MASK_READ = 0x0100,
|
||||
MASK_WRITE = 0x0200,
|
||||
MASK_RDWR = 0x0400,
|
||||
|
||||
MASK_CLEAR = 0x00FF
|
||||
};
|
||||
|
||||
static int in_type_map[] =
|
||||
{
|
||||
/* the order should match the order of the
|
||||
* ASE_AWK_IN_XXX values in tree.h */
|
||||
ASE_AWK_EXTIO_PIPE,
|
||||
ASE_AWK_EXTIO_COPROC,
|
||||
ASE_AWK_EXTIO_FILE,
|
||||
ASE_AWK_EXTIO_CONSOLE
|
||||
};
|
||||
|
||||
static int in_mode_map[] =
|
||||
{
|
||||
/* the order should match the order of the
|
||||
* ASE_AWK_IN_XXX values in tree.h */
|
||||
ASE_AWK_EXTIO_PIPE_READ,
|
||||
0,
|
||||
ASE_AWK_EXTIO_FILE_READ,
|
||||
ASE_AWK_EXTIO_CONSOLE_READ
|
||||
};
|
||||
|
||||
static int in_mask_map[] =
|
||||
{
|
||||
MASK_READ,
|
||||
MASK_RDWR,
|
||||
MASK_READ,
|
||||
MASK_READ
|
||||
};
|
||||
|
||||
static int out_type_map[] =
|
||||
{
|
||||
/* the order should match the order of the
|
||||
* ASE_AWK_OUT_XXX values in tree.h */
|
||||
ASE_AWK_EXTIO_PIPE,
|
||||
ASE_AWK_EXTIO_COPROC,
|
||||
ASE_AWK_EXTIO_FILE,
|
||||
ASE_AWK_EXTIO_FILE,
|
||||
ASE_AWK_EXTIO_CONSOLE
|
||||
};
|
||||
|
||||
static int out_mode_map[] =
|
||||
{
|
||||
/* the order should match the order of the
|
||||
* ASE_AWK_OUT_XXX values in tree.h */
|
||||
ASE_AWK_EXTIO_PIPE_WRITE,
|
||||
0,
|
||||
ASE_AWK_EXTIO_FILE_WRITE,
|
||||
ASE_AWK_EXTIO_FILE_APPEND,
|
||||
ASE_AWK_EXTIO_CONSOLE_WRITE
|
||||
};
|
||||
|
||||
static int out_mask_map[] =
|
||||
{
|
||||
MASK_WRITE,
|
||||
MASK_RDWR,
|
||||
MASK_WRITE,
|
||||
MASK_WRITE,
|
||||
MASK_WRITE
|
||||
};
|
||||
|
||||
int ase_awk_readextio (
|
||||
ase_awk_run_t* run, int in_type,
|
||||
const ase_char_t* name, ase_str_t* buf)
|
||||
{
|
||||
ase_awk_extio_t* p = run->extio.chain;
|
||||
ase_awk_io_t handler;
|
||||
int extio_type, extio_mode, extio_mask, ret, n;
|
||||
ase_ssize_t x;
|
||||
ase_awk_val_t* rs;
|
||||
ase_char_t* rs_ptr;
|
||||
ase_size_t rs_len;
|
||||
ase_size_t line_len = 0;
|
||||
ase_char_t c = ASE_T('\0'), pc;
|
||||
|
||||
ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_type_map));
|
||||
ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mode_map));
|
||||
ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mask_map));
|
||||
|
||||
/* translate the in_type into the relevant extio type and mode */
|
||||
extio_type = in_type_map[in_type];
|
||||
extio_mode = in_mode_map[in_type];
|
||||
extio_mask = in_mask_map[in_type];
|
||||
|
||||
handler = run->extio.handler[extio_type];
|
||||
if (handler == ASE_NULL)
|
||||
{
|
||||
/* no io handler provided */
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER);
|
||||
return -1;
|
||||
}
|
||||
|
||||
while (p != ASE_NULL)
|
||||
{
|
||||
if (p->type == (extio_type | extio_mask) &&
|
||||
ase_strcmp (p->name,name) == 0) break;
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
if (p == ASE_NULL)
|
||||
{
|
||||
p = (ase_awk_extio_t*) ASE_AWK_ALLOC (
|
||||
run->awk, ASE_SIZEOF(ase_awk_extio_t));
|
||||
if (p == ASE_NULL)
|
||||
{
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);
|
||||
return -1;
|
||||
}
|
||||
|
||||
p->name = ASE_AWK_STRDUP (run->awk, name);
|
||||
if (p->name == ASE_NULL)
|
||||
{
|
||||
ASE_AWK_FREE (run->awk, p);
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOMEM);
|
||||
return -1;
|
||||
}
|
||||
|
||||
p->run = run;
|
||||
p->type = (extio_type | extio_mask);
|
||||
p->mode = extio_mode;
|
||||
p->handle = ASE_NULL;
|
||||
p->next = ASE_NULL;
|
||||
p->data = run->extio.data;
|
||||
|
||||
p->in.buf[0] = ASE_T('\0');
|
||||
p->in.pos = 0;
|
||||
p->in.len = 0;
|
||||
p->in.eof = ASE_FALSE;
|
||||
p->in.eos = ASE_FALSE;
|
||||
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOERR);
|
||||
|
||||
x = handler (ASE_AWK_IO_OPEN, p, ASE_NULL, 0);
|
||||
if (x <= -1)
|
||||
{
|
||||
ASE_AWK_FREE (run->awk, p->name);
|
||||
ASE_AWK_FREE (run->awk, p);
|
||||
|
||||
if (run->errnum == ASE_AWK_ENOERR)
|
||||
{
|
||||
/* if the error number has not been
|
||||
* set by the user handler */
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL);
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* chain it */
|
||||
p->next = run->extio.chain;
|
||||
run->extio.chain = p;
|
||||
|
||||
/* usually, x == 0 indicates that it has reached the end
|
||||
* of the input. the user io handler can return 0 for the
|
||||
* open request if it doesn't have any files to open. One
|
||||
* advantage of doing this would be that you can skip the
|
||||
* entire pattern-block matching and exeuction. */
|
||||
if (x == 0)
|
||||
{
|
||||
p->in.eos = ASE_TRUE;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (p->in.eos)
|
||||
{
|
||||
/* no more streams. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ready to read a line */
|
||||
ase_str_clear (buf);
|
||||
|
||||
/* get the record separator */
|
||||
rs = ase_awk_getglobal (run, ASE_AWK_GLOBAL_RS);
|
||||
ase_awk_refupval (run, rs);
|
||||
|
||||
if (rs->type == ASE_AWK_VAL_NIL)
|
||||
{
|
||||
rs_ptr = ASE_NULL;
|
||||
rs_len = 0;
|
||||
}
|
||||
else if (rs->type == ASE_AWK_VAL_STR)
|
||||
{
|
||||
rs_ptr = ((ase_awk_val_str_t*)rs)->buf;
|
||||
rs_len = ((ase_awk_val_str_t*)rs)->len;
|
||||
}
|
||||
else
|
||||
{
|
||||
rs_ptr = ase_awk_valtostr (
|
||||
run, rs, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &rs_len);
|
||||
if (rs_ptr == ASE_NULL)
|
||||
{
|
||||
ase_awk_refdownval (run, rs);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
ret = 1;
|
||||
|
||||
/* call the io handler */
|
||||
while (1)
|
||||
{
|
||||
if (p->in.pos >= p->in.len)
|
||||
{
|
||||
ase_ssize_t n;
|
||||
|
||||
if (p->in.eof)
|
||||
{
|
||||
if (ASE_STR_LEN(buf) == 0) ret = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOERR);
|
||||
|
||||
n = handler (ASE_AWK_IO_READ,
|
||||
p, p->in.buf, ASE_COUNTOF(p->in.buf));
|
||||
if (n <= -1)
|
||||
{
|
||||
if (run->errnum == ASE_AWK_ENOERR)
|
||||
{
|
||||
/* if the error number has not been
|
||||
* set by the user handler */
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL);
|
||||
}
|
||||
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (n == 0)
|
||||
{
|
||||
p->in.eof = ASE_TRUE;
|
||||
|
||||
if (ASE_STR_LEN(buf) == 0) ret = 0;
|
||||
else if (rs_len >= 2)
|
||||
{
|
||||
/* when RS is multiple characters, it needs to check
|
||||
* for the match at the end of the input stream as
|
||||
* the buffer has been appened with the last character
|
||||
* after the previous matchrex has failed */
|
||||
|
||||
const ase_char_t* match_ptr;
|
||||
ase_size_t match_len;
|
||||
|
||||
ASE_ASSERT (run->global.rs != ASE_NULL);
|
||||
|
||||
n = ASE_AWK_MATCHREX (
|
||||
run->awk, run->global.rs,
|
||||
((run->global.ignorecase)? ASE_REX_IGNORECASE: 0),
|
||||
ASE_STR_PTR(buf), ASE_STR_LEN(buf),
|
||||
&match_ptr, &match_len, &run->errnum);
|
||||
if (n == -1)
|
||||
{
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (n == 1)
|
||||
{
|
||||
/* the match should be found at the end of
|
||||
* the current buffer */
|
||||
ASE_ASSERT (
|
||||
ASE_STR_PTR(buf) + ASE_STR_LEN(buf) ==
|
||||
match_ptr + match_len);
|
||||
|
||||
ASE_STR_LEN(buf) -= match_len;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
p->in.len = n;
|
||||
p->in.pos = 0;
|
||||
}
|
||||
|
||||
pc = c;
|
||||
c = p->in.buf[p->in.pos++];
|
||||
|
||||
if (rs_ptr == ASE_NULL)
|
||||
{
|
||||
/* separate by a new line */
|
||||
if (c == ASE_T('\n'))
|
||||
{
|
||||
if (pc == ASE_T('\r') &&
|
||||
ASE_STR_LEN(buf) > 0)
|
||||
{
|
||||
ASE_STR_LEN(buf) -= 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (rs_len == 0)
|
||||
{
|
||||
/* separate by a blank line */
|
||||
if (c == ASE_T('\n'))
|
||||
{
|
||||
if (pc == ASE_T('\r') &&
|
||||
ASE_STR_LEN(buf) > 0)
|
||||
{
|
||||
ASE_STR_LEN(buf) -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (line_len == 0 && c == ASE_T('\n'))
|
||||
{
|
||||
if (ASE_STR_LEN(buf) <= 0)
|
||||
{
|
||||
/* if the record is empty when a blank
|
||||
* line is encountered, the line
|
||||
* terminator should not be added to
|
||||
* the record */
|
||||
continue;
|
||||
}
|
||||
|
||||
/* when a blank line is encountered,
|
||||
* it needs to snip off the line
|
||||
* terminator of the previous line */
|
||||
ASE_STR_LEN(buf) -= 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (rs_len == 1)
|
||||
{
|
||||
if (c == rs_ptr[0]) break;
|
||||
}
|
||||
else
|
||||
{
|
||||
const ase_char_t* match_ptr;
|
||||
ase_size_t match_len;
|
||||
|
||||
ASE_ASSERT (run->global.rs != ASE_NULL);
|
||||
|
||||
n = ASE_AWK_MATCHREX (
|
||||
run->awk, run->global.rs,
|
||||
((run->global.ignorecase)? ASE_REX_IGNORECASE: 0),
|
||||
ASE_STR_PTR(buf), ASE_STR_LEN(buf),
|
||||
&match_ptr, &match_len, &run->errnum);
|
||||
if (n == -1)
|
||||
{
|
||||
ret = -1;
|
||||
p->in.pos--; /* unread the character in c */
|
||||
break;
|
||||
}
|
||||
|
||||
if (n == 1)
|
||||
{
|
||||
/* the match should be found at the end of
|
||||
* the current buffer */
|
||||
ASE_ASSERT (
|
||||
ASE_STR_PTR(buf) + ASE_STR_LEN(buf) ==
|
||||
match_ptr + match_len);
|
||||
|
||||
ASE_STR_LEN(buf) -= match_len;
|
||||
p->in.pos--; /* unread the character in c */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ase_str_ccat (buf, c) == (ase_size_t)-1)
|
||||
{
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
ret = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
/* TODO: handle different line terminator like \r\n */
|
||||
if (c == ASE_T('\n')) line_len = 0;
|
||||
else line_len = line_len + 1;
|
||||
}
|
||||
|
||||
if (rs_ptr != ASE_NULL &&
|
||||
rs->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, rs_ptr);
|
||||
ase_awk_refdownval (run, rs);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include <ase/utl/stdio.h>
|
||||
int ase_awk_writeextio_val (
|
||||
ase_awk_run_t* run, int out_type,
|
||||
const ase_char_t* name, ase_awk_val_t* v)
|
||||
{
|
||||
ase_char_t* str;
|
||||
ase_size_t len;
|
||||
int n;
|
||||
|
||||
if (v->type == ASE_AWK_VAL_STR)
|
||||
{
|
||||
str = ((ase_awk_val_str_t*)v)->buf;
|
||||
len = ((ase_awk_val_str_t*)v)->len;
|
||||
}
|
||||
else
|
||||
{
|
||||
str = ase_awk_valtostr (
|
||||
run, v,
|
||||
ASE_AWK_VALTOSTR_CLEAR | ASE_AWK_VALTOSTR_PRINT,
|
||||
ASE_NULL, &len);
|
||||
if (str == ASE_NULL) return -1;
|
||||
}
|
||||
|
||||
n = ase_awk_writeextio_str (run, out_type, name, str, len);
|
||||
|
||||
if (v->type != ASE_AWK_VAL_STR) ASE_AWK_FREE (run->awk, str);
|
||||
return n;
|
||||
}
|
||||
|
||||
int ase_awk_writeextio_str (
|
||||
ase_awk_run_t* run, int out_type,
|
||||
const ase_char_t* name, ase_char_t* str, ase_size_t len)
|
||||
{
|
||||
ase_awk_extio_t* p = run->extio.chain;
|
||||
ase_awk_io_t handler;
|
||||
int extio_type, extio_mode, extio_mask;
|
||||
ase_ssize_t n;
|
||||
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map));
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mode_map));
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mask_map));
|
||||
|
||||
/* translate the out_type into the relevant extio type and mode */
|
||||
extio_type = out_type_map[out_type];
|
||||
extio_mode = out_mode_map[out_type];
|
||||
extio_mask = out_mask_map[out_type];
|
||||
|
||||
handler = run->extio.handler[extio_type];
|
||||
if (handler == ASE_NULL)
|
||||
{
|
||||
/* no io handler provided */
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* look for the corresponding extio for name */
|
||||
while (p != ASE_NULL)
|
||||
{
|
||||
/* the file "1.tmp", in the following code snippets,
|
||||
* would be opened by the first print statement, but not by
|
||||
* the second print statement. this is because
|
||||
* both ASE_AWK_OUT_FILE and ASE_AWK_OUT_FILE_APPEND are
|
||||
* translated to ASE_AWK_EXTIO_FILE and it is used to
|
||||
* keep track of file handles..
|
||||
*
|
||||
* print "1111" >> "1.tmp"
|
||||
* print "1111" > "1.tmp"
|
||||
*/
|
||||
if (p->type == (extio_type | extio_mask) &&
|
||||
ase_strcmp (p->name, name) == 0) break;
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
/* if there is not corresponding extio for name, create one */
|
||||
if (p == ASE_NULL)
|
||||
{
|
||||
p = (ase_awk_extio_t*) ASE_AWK_ALLOC (
|
||||
run->awk, ASE_SIZEOF(ase_awk_extio_t));
|
||||
if (p == ASE_NULL)
|
||||
{
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
p->name = ASE_AWK_STRDUP (run->awk, name);
|
||||
if (p->name == ASE_NULL)
|
||||
{
|
||||
ASE_AWK_FREE (run->awk, p);
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
p->run = run;
|
||||
p->type = (extio_type | extio_mask);
|
||||
p->mode = extio_mode;
|
||||
p->handle = ASE_NULL;
|
||||
p->next = ASE_NULL;
|
||||
p->data = run->extio.data;
|
||||
|
||||
p->out.eof = ASE_FALSE;
|
||||
p->out.eos = ASE_FALSE;
|
||||
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOERR);
|
||||
n = handler (ASE_AWK_IO_OPEN, p, ASE_NULL, 0);
|
||||
if (n <= -1)
|
||||
{
|
||||
ASE_AWK_FREE (run->awk, p->name);
|
||||
ASE_AWK_FREE (run->awk, p);
|
||||
|
||||
if (run->errnum == ASE_AWK_ENOERR)
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* chain it */
|
||||
p->next = run->extio.chain;
|
||||
run->extio.chain = p;
|
||||
|
||||
/* usually, n == 0 indicates that it has reached the end
|
||||
* of the input. the user io handler can return 0 for the
|
||||
* open request if it doesn't have any files to open. One
|
||||
* advantage of doing this would be that you can skip the
|
||||
* entire pattern-block matching and exeuction. */
|
||||
if (n == 0)
|
||||
{
|
||||
p->out.eos = ASE_TRUE;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (p->out.eos)
|
||||
{
|
||||
/* no more streams */
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (p->out.eof)
|
||||
{
|
||||
/* it has reached the end of the stream but this function
|
||||
* has been recalled */
|
||||
return 0;
|
||||
}
|
||||
|
||||
while (len > 0)
|
||||
{
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOERR);
|
||||
n = handler (ASE_AWK_IO_WRITE, p, str, len);
|
||||
if (n <= -1)
|
||||
{
|
||||
if (run->errnum == ASE_AWK_ENOERR)
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (n == 0)
|
||||
{
|
||||
p->out.eof = ASE_TRUE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
len -= n;
|
||||
str += n;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ase_awk_flushextio (
|
||||
ase_awk_run_t* run, int out_type, const ase_char_t* name)
|
||||
{
|
||||
ase_awk_extio_t* p = run->extio.chain;
|
||||
ase_awk_io_t handler;
|
||||
int extio_type, /*extio_mode,*/ extio_mask;
|
||||
ase_ssize_t n;
|
||||
ase_bool_t ok = ASE_FALSE;
|
||||
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map));
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mode_map));
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mask_map));
|
||||
|
||||
/* translate the out_type into the relevant extio type and mode */
|
||||
extio_type = out_type_map[out_type];
|
||||
/*extio_mode = out_mode_map[out_type];*/
|
||||
extio_mask = out_mask_map[out_type];
|
||||
|
||||
handler = run->extio.handler[extio_type];
|
||||
if (handler == ASE_NULL)
|
||||
{
|
||||
/* no io handler provided */
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* look for the corresponding extio for name */
|
||||
while (p != ASE_NULL)
|
||||
{
|
||||
if (p->type == (extio_type | extio_mask) &&
|
||||
(name == ASE_NULL || ase_strcmp(p->name,name) == 0))
|
||||
{
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOERR);
|
||||
n = handler (ASE_AWK_IO_FLUSH, p, ASE_NULL, 0);
|
||||
|
||||
if (n <= -1)
|
||||
{
|
||||
if (run->errnum == ASE_AWK_ENOERR)
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ok = ASE_TRUE;
|
||||
}
|
||||
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
if (ok) return 0;
|
||||
|
||||
/* there is no corresponding extio for name */
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIONONE);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ase_awk_nextextio_read (
|
||||
ase_awk_run_t* run, int in_type, const ase_char_t* name)
|
||||
{
|
||||
ase_awk_extio_t* p = run->extio.chain;
|
||||
ase_awk_io_t handler;
|
||||
int extio_type, /*extio_mode,*/ extio_mask;
|
||||
ase_ssize_t n;
|
||||
|
||||
ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_type_map));
|
||||
ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mode_map));
|
||||
ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mask_map));
|
||||
|
||||
/* translate the in_type into the relevant extio type and mode */
|
||||
extio_type = in_type_map[in_type];
|
||||
/*extio_mode = in_mode_map[in_type];*/
|
||||
extio_mask = in_mask_map[in_type];
|
||||
|
||||
handler = run->extio.handler[extio_type];
|
||||
if (handler == ASE_NULL)
|
||||
{
|
||||
/* no io handler provided */
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER);
|
||||
return -1;
|
||||
}
|
||||
|
||||
while (p != ASE_NULL)
|
||||
{
|
||||
if (p->type == (extio_type | extio_mask) &&
|
||||
ase_strcmp (p->name,name) == 0) break;
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
if (p == ASE_NULL)
|
||||
{
|
||||
/* something is totally wrong */
|
||||
ASE_ASSERT (
|
||||
!"should never happen - cannot find the relevant extio entry");
|
||||
ase_awk_setrunerror (run, ASE_AWK_EINTERN, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (p->in.eos)
|
||||
{
|
||||
/* no more streams. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOERR);
|
||||
n = handler (ASE_AWK_IO_NEXT, p, ASE_NULL, 0);
|
||||
if (n <= -1)
|
||||
{
|
||||
if (run->errnum == ASE_AWK_ENOERR)
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (n == 0)
|
||||
{
|
||||
/* the next stream cannot be opened.
|
||||
* set the eos flags so that the next call to nextextio_read
|
||||
* will return 0 without executing the handler */
|
||||
p->in.eos = ASE_TRUE;
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* as the next stream has been opened successfully,
|
||||
* the eof flag should be cleared if set */
|
||||
p->in.eof = ASE_FALSE;
|
||||
|
||||
/* also the previous input buffer must be reset */
|
||||
p->in.pos = 0;
|
||||
p->in.len = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int ase_awk_nextextio_write (
|
||||
ase_awk_run_t* run, int out_type, const ase_char_t* name)
|
||||
{
|
||||
ase_awk_extio_t* p = run->extio.chain;
|
||||
ase_awk_io_t handler;
|
||||
int extio_type, /*extio_mode,*/ extio_mask;
|
||||
ase_ssize_t n;
|
||||
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map));
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mode_map));
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mask_map));
|
||||
|
||||
/* translate the out_type into the relevant extio type and mode */
|
||||
extio_type = out_type_map[out_type];
|
||||
/*extio_mode = out_mode_map[out_type];*/
|
||||
extio_mask = out_mask_map[out_type];
|
||||
|
||||
handler = run->extio.handler[extio_type];
|
||||
if (handler == ASE_NULL)
|
||||
{
|
||||
/* no io handler provided */
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER);
|
||||
return -1;
|
||||
}
|
||||
|
||||
while (p != ASE_NULL)
|
||||
{
|
||||
if (p->type == (extio_type | extio_mask) &&
|
||||
ase_strcmp (p->name,name) == 0) break;
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
if (p == ASE_NULL)
|
||||
{
|
||||
/* something is totally wrong */
|
||||
ASE_ASSERT (!"should never happen - cannot find the relevant extio entry");
|
||||
|
||||
ase_awk_setrunerror (run, ASE_AWK_EINTERN, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (p->out.eos)
|
||||
{
|
||||
/* no more streams. */
|
||||
return 0;
|
||||
}
|
||||
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOERR);
|
||||
n = handler (ASE_AWK_IO_NEXT, p, ASE_NULL, 0);
|
||||
if (n <= -1)
|
||||
{
|
||||
if (run->errnum == ASE_AWK_ENOERR)
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (n == 0)
|
||||
{
|
||||
/* the next stream cannot be opened.
|
||||
* set the eos flags so that the next call to nextextio_write
|
||||
* will return 0 without executing the handler */
|
||||
p->out.eos = ASE_TRUE;
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* as the next stream has been opened successfully,
|
||||
* the eof flag should be cleared if set */
|
||||
p->out.eof = ASE_FALSE;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int ase_awk_closeextio_read (
|
||||
ase_awk_run_t* run, int in_type, const ase_char_t* name)
|
||||
{
|
||||
ase_awk_extio_t* p = run->extio.chain, * px = ASE_NULL;
|
||||
ase_awk_io_t handler;
|
||||
int extio_type, /*extio_mode,*/ extio_mask;
|
||||
|
||||
ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_type_map));
|
||||
ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mode_map));
|
||||
ASE_ASSERT (in_type >= 0 && in_type <= ASE_COUNTOF(in_mask_map));
|
||||
|
||||
/* translate the in_type into the relevant extio type and mode */
|
||||
extio_type = in_type_map[in_type];
|
||||
/*extio_mode = in_mode_map[in_type];*/
|
||||
extio_mask = in_mask_map[in_type];
|
||||
|
||||
handler = run->extio.handler[extio_type];
|
||||
if (handler == ASE_NULL)
|
||||
{
|
||||
/* no io handler provided */
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOUSER);
|
||||
return -1;
|
||||
}
|
||||
|
||||
while (p != ASE_NULL)
|
||||
{
|
||||
if (p->type == (extio_type | extio_mask) &&
|
||||
ase_strcmp (p->name, name) == 0)
|
||||
{
|
||||
ase_awk_io_t handler;
|
||||
|
||||
handler = run->extio.handler[p->type & MASK_CLEAR];
|
||||
if (handler != ASE_NULL)
|
||||
{
|
||||
if (handler (ASE_AWK_IO_CLOSE, p, ASE_NULL, 0) <= -1)
|
||||
{
|
||||
/* this is not a run-time error.*/
|
||||
ase_awk_setrunerror (run, ASE_AWK_EIOIMPL, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (px != ASE_NULL) px->next = p->next;
|
||||
else run->extio.chain = p->next;
|
||||
|
||||
ASE_AWK_FREE (run->awk, p->name);
|
||||
ASE_AWK_FREE (run->awk, p);
|
||||
return 0;
|
||||
}
|
||||
|
||||
px = p;
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
/* the name given is not found */
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIONONE);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ase_awk_closeextio_write (
|
||||
ase_awk_run_t* run, int out_type, const ase_char_t* name)
|
||||
{
|
||||
ase_awk_extio_t* p = run->extio.chain, * px = ASE_NULL;
|
||||
ase_awk_io_t handler;
|
||||
int extio_type, /*extio_mode,*/ extio_mask;
|
||||
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_type_map));
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mode_map));
|
||||
ASE_ASSERT (out_type >= 0 && out_type <= ASE_COUNTOF(out_mask_map));
|
||||
|
||||
/* translate the out_type into the relevant extio type and mode */
|
||||
extio_type = out_type_map[out_type];
|
||||
/*extio_mode = out_mode_map[out_type];*/
|
||||
extio_mask = out_mask_map[out_type];
|
||||
|
||||
handler = run->extio.handler[extio_type];
|
||||
if (handler == ASE_NULL)
|
||||
{
|
||||
/* no io handler provided */
|
||||
ase_awk_setrunerror (run, ASE_AWK_EIOUSER, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
while (p != ASE_NULL)
|
||||
{
|
||||
if (p->type == (extio_type | extio_mask) &&
|
||||
ase_strcmp (p->name, name) == 0)
|
||||
{
|
||||
ase_awk_io_t handler;
|
||||
|
||||
handler = run->extio.handler[p->type & MASK_CLEAR];
|
||||
if (handler != ASE_NULL)
|
||||
{
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOERR);
|
||||
if (handler (ASE_AWK_IO_CLOSE, p, ASE_NULL, 0) <= -1)
|
||||
{
|
||||
if (run->errnum == ASE_AWK_ENOERR)
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (px != ASE_NULL) px->next = p->next;
|
||||
else run->extio.chain = p->next;
|
||||
|
||||
ASE_AWK_FREE (run->awk, p->name);
|
||||
ASE_AWK_FREE (run->awk, p);
|
||||
return 0;
|
||||
}
|
||||
|
||||
px = p;
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIONONE);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ase_awk_closeextio (ase_awk_run_t* run, const ase_char_t* name)
|
||||
{
|
||||
ase_awk_extio_t* p = run->extio.chain, * px = ASE_NULL;
|
||||
|
||||
while (p != ASE_NULL)
|
||||
{
|
||||
/* it handles the first that matches the given name
|
||||
* regardless of the extio type */
|
||||
if (ase_strcmp (p->name, name) == 0)
|
||||
{
|
||||
ase_awk_io_t handler;
|
||||
|
||||
handler = run->extio.handler[p->type & MASK_CLEAR];
|
||||
if (handler != ASE_NULL)
|
||||
{
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOERR);
|
||||
if (handler (ASE_AWK_IO_CLOSE, p, ASE_NULL, 0) <= -1)
|
||||
{
|
||||
/* this is not a run-time error.*/
|
||||
if (run->errnum == ASE_AWK_ENOERR)
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (px != ASE_NULL) px->next = p->next;
|
||||
else run->extio.chain = p->next;
|
||||
|
||||
ASE_AWK_FREE (run->awk, p->name);
|
||||
ASE_AWK_FREE (run->awk, p);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
px = p;
|
||||
p = p->next;
|
||||
}
|
||||
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIONONE);
|
||||
return -1;
|
||||
}
|
||||
|
||||
void ase_awk_clearextio (ase_awk_run_t* run)
|
||||
{
|
||||
ase_awk_extio_t* next;
|
||||
ase_awk_io_t handler;
|
||||
ase_ssize_t n;
|
||||
|
||||
while (run->extio.chain != ASE_NULL)
|
||||
{
|
||||
handler = run->extio.handler[
|
||||
run->extio.chain->type & MASK_CLEAR];
|
||||
next = run->extio.chain->next;
|
||||
|
||||
if (handler != ASE_NULL)
|
||||
{
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_ENOERR);
|
||||
n = handler (ASE_AWK_IO_CLOSE, run->extio.chain, ASE_NULL, 0);
|
||||
if (n <= -1)
|
||||
{
|
||||
if (run->errnum == ASE_AWK_ENOERR)
|
||||
ase_awk_setrunerrnum (run, ASE_AWK_EIOIMPL);
|
||||
/* TODO: some warnings need to be shown??? */
|
||||
}
|
||||
}
|
||||
|
||||
ASE_AWK_FREE (run->awk, run->extio.chain->name);
|
||||
ASE_AWK_FREE (run->awk, run->extio.chain);
|
||||
|
||||
run->extio.chain = next;
|
||||
}
|
||||
}
|
47
qse/lib/awk/extio.h
Normal file
47
qse/lib/awk/extio.h
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* $Id: extio.h 363 2008-09-04 10:58:08Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#ifndef _ASE_LIB_AWK_EXTIO_H_
|
||||
#define _ASE_LIB_AWK_EXTIO_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
#endif
|
||||
|
||||
int ase_awk_readextio (
|
||||
ase_awk_run_t* run, int in_type,
|
||||
const ase_char_t* name, ase_str_t* buf);
|
||||
|
||||
int ase_awk_writeextio_val (
|
||||
ase_awk_run_t* run, int out_type,
|
||||
const ase_char_t* name, ase_awk_val_t* v);
|
||||
|
||||
int ase_awk_writeextio_str (
|
||||
ase_awk_run_t* run, int out_type,
|
||||
const ase_char_t* name, ase_char_t* str, ase_size_t len);
|
||||
|
||||
int ase_awk_flushextio (
|
||||
ase_awk_run_t* run, int out_type, const ase_char_t* name);
|
||||
|
||||
int ase_awk_nextextio_read (
|
||||
ase_awk_run_t* run, int in_type, const ase_char_t* name);
|
||||
|
||||
int ase_awk_nextextio_write (
|
||||
ase_awk_run_t* run, int out_type, const ase_char_t* name);
|
||||
|
||||
int ase_awk_closeextio_read (
|
||||
ase_awk_run_t* run, int in_type, const ase_char_t* name);
|
||||
int ase_awk_closeextio_write (
|
||||
ase_awk_run_t* run, int out_type, const ase_char_t* name);
|
||||
int ase_awk_closeextio (ase_awk_run_t* run, const ase_char_t* name);
|
||||
|
||||
void ase_awk_clearextio (ase_awk_run_t* run);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
1412
qse/lib/awk/func.c
Normal file
1412
qse/lib/awk/func.c
Normal file
File diff suppressed because it is too large
Load Diff
45
qse/lib/awk/func.h
Normal file
45
qse/lib/awk/func.h
Normal file
@ -0,0 +1,45 @@
|
||||
/*
|
||||
* $Id: func.h 363 2008-09-04 10:58:08Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#ifndef _ASE_LIB_AWK_FUNC_H_
|
||||
#define _ASE_LIB_AWK_FUNC_H_
|
||||
|
||||
typedef struct ase_awk_bfn_t ase_awk_bfn_t;
|
||||
|
||||
struct ase_awk_bfn_t
|
||||
{
|
||||
struct
|
||||
{
|
||||
ase_char_t* ptr;
|
||||
ase_size_t len;
|
||||
} name;
|
||||
|
||||
int valid; /* the entry is valid when this option is set */
|
||||
|
||||
struct
|
||||
{
|
||||
ase_size_t min;
|
||||
ase_size_t max;
|
||||
ase_char_t* spec;
|
||||
} arg;
|
||||
|
||||
int (*handler) (ase_awk_run_t*, const ase_char_t*, ase_size_t);
|
||||
|
||||
/*ase_awk_bfn_t* next;*/
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
ase_awk_bfn_t* ase_awk_getbfn (
|
||||
ase_awk_t* awk, const ase_char_t* name, ase_size_t len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
34
qse/lib/awk/generrcode-java.awk
Normal file
34
qse/lib/awk/generrcode-java.awk
Normal file
@ -0,0 +1,34 @@
|
||||
#
|
||||
# generrcode-java.awk
|
||||
#
|
||||
# aseawk -f generrcode-java.awk awk.h
|
||||
#
|
||||
|
||||
BEGIN {
|
||||
collect=0;
|
||||
tab2="\t";
|
||||
tab3="\t\t";
|
||||
count=0;
|
||||
}
|
||||
|
||||
/^[[:space:]]*enum[[:space:]]+ase_awk_errnum_t[[:space:]]*$/ {
|
||||
collect=1;
|
||||
print tab2 "// generated by generrcode-java.awk";
|
||||
#print tab2 "enum ErrorCode";
|
||||
#print tab2 "{";
|
||||
}
|
||||
|
||||
collect && /^[[:space:]]*};[[:space:]]*$/ {
|
||||
#print tab2 "};";
|
||||
print tab2 "// end of error codes";
|
||||
print "";
|
||||
collect=0;
|
||||
}
|
||||
|
||||
collect && /^[[:space:]]*ASE_AWK_E[[:alnum:]]+/ {
|
||||
split ($1, flds, ",");
|
||||
name=flds[1];
|
||||
|
||||
print tab2 "public static final int " substr (name,10,length(name)-9) " = " count++ ";";
|
||||
}
|
||||
|
34
qse/lib/awk/generrcode-net.awk
Normal file
34
qse/lib/awk/generrcode-net.awk
Normal file
@ -0,0 +1,34 @@
|
||||
#
|
||||
# generrcode-net.awk
|
||||
#
|
||||
# aseawk -f generrcode-net.awk awk.h
|
||||
#
|
||||
|
||||
BEGIN {
|
||||
collect=0;
|
||||
tab3="\t\t";
|
||||
tab4="\t\t\t";
|
||||
}
|
||||
|
||||
/^[[:space:]]*enum[[:space:]]+ase_awk_errnum_t[[:space:]]*$/ {
|
||||
collect=1;
|
||||
print tab3 "// generated by generrcode-net.awk";
|
||||
print tab3 "enum class ERROR: int";
|
||||
print tab3 "{";
|
||||
}
|
||||
|
||||
collect && /^[[:space:]]*};[[:space:]]*$/ {
|
||||
print tab3 "};";
|
||||
print tab3 "// end of enum class ERROR";
|
||||
print "";
|
||||
collect=0;
|
||||
}
|
||||
|
||||
collect && /^[[:space:]]*ASE_AWK_E[[:alnum:]]+/ {
|
||||
split ($1, flds, ",");
|
||||
name=flds[1];
|
||||
|
||||
x = substr (name,10,length(name)-9);
|
||||
print tab4 x " = ASE::Awk::ERR_" x ",";
|
||||
}
|
||||
|
33
qse/lib/awk/generrcode.awk
Normal file
33
qse/lib/awk/generrcode.awk
Normal file
@ -0,0 +1,33 @@
|
||||
#
|
||||
# generrcode.awk
|
||||
#
|
||||
# aseawk -f generrcode.awk awk.h
|
||||
#
|
||||
|
||||
BEGIN {
|
||||
collect=0;
|
||||
tab3="\t\t";
|
||||
tab4="\t\t\t";
|
||||
}
|
||||
|
||||
/^[[:space:]]*enum[[:space:]]+ase_awk_errnum_t[[:space:]]*$/ {
|
||||
collect=1;
|
||||
print tab3 "// generated by generrcode.awk";
|
||||
print tab3 "enum ErrorCode";
|
||||
print tab3 "{";
|
||||
}
|
||||
|
||||
collect && /^[[:space:]]*};[[:space:]]*$/ {
|
||||
print tab3 "};";
|
||||
print tab3 "// end of enum ErrorCode";
|
||||
print "";
|
||||
collect=0;
|
||||
}
|
||||
|
||||
collect && /^[[:space:]]*ASE_AWK_E[[:alnum:]]+/ {
|
||||
split ($1, flds, ",");
|
||||
name=flds[1];
|
||||
|
||||
print tab4 "ERR_" substr (name,10,length(name)-9) " = " name ",";
|
||||
}
|
||||
|
33
qse/lib/awk/genoptcode.awk
Normal file
33
qse/lib/awk/genoptcode.awk
Normal file
@ -0,0 +1,33 @@
|
||||
#
|
||||
# genoptcode.awk
|
||||
#
|
||||
# aseawk -f generror.awk awk.h
|
||||
#
|
||||
|
||||
BEGIN {
|
||||
collect=0;
|
||||
tab3="\t\t";
|
||||
tab4="\t\t\t";
|
||||
}
|
||||
|
||||
/^[[:space:]]*enum[[:space:]]+ase_awk_option_t[[:space:]]*$/ {
|
||||
collect=1;
|
||||
print tab3 "// generated by genoptcode.awk";
|
||||
print tab3 "enum Option";
|
||||
print tab3 "{";
|
||||
}
|
||||
|
||||
collect && /^[[:space:]]*};[[:space:]]*$/ {
|
||||
print tab3 "};";
|
||||
print tab3 "// end of enum Option";
|
||||
print "";
|
||||
collect=0;
|
||||
}
|
||||
|
||||
collect && /^[[:space:]]*ASE_AWK_[[:alnum:]]+/ {
|
||||
split ($1, flds, ",");
|
||||
name=flds[1];
|
||||
|
||||
print tab4 "OPT_" substr (name,9,length(name)-8) " = " name ",";
|
||||
}
|
||||
|
41
qse/lib/awk/jni-dmc.def
Normal file
41
qse/lib/awk/jni-dmc.def
Normal file
@ -0,0 +1,41 @@
|
||||
LIBRARY "aseawk_jni.dll"
|
||||
EXETYPE NT
|
||||
|
||||
EXPORTS
|
||||
Java_ase_awk_Awk_open
|
||||
Java_ase_awk_Awk_close
|
||||
Java_ase_awk_Awk_parse
|
||||
Java_ase_awk_Awk_run
|
||||
Java_ase_awk_Awk_stop
|
||||
Java_ase_awk_Awk_getmaxdepth
|
||||
Java_ase_awk_Awk_setmaxdepth
|
||||
Java_ase_awk_Awk_getoption
|
||||
Java_ase_awk_Awk_setoption
|
||||
Java_ase_awk_Awk_getdebug
|
||||
Java_ase_awk_Awk_setdebug
|
||||
Java_ase_awk_Awk_getword
|
||||
Java_ase_awk_Awk_setword
|
||||
Java_ase_awk_Awk_addfunc
|
||||
Java_ase_awk_Awk_delfunc
|
||||
Java_ase_awk_Awk_setfilename
|
||||
Java_ase_awk_Awk_setofilename
|
||||
Java_ase_awk_Awk_strftime
|
||||
Java_ase_awk_Awk_strfgmtime
|
||||
Java_ase_awk_Awk_system
|
||||
Java_ase_awk_Context_stop
|
||||
Java_ase_awk_Context_getglobal
|
||||
Java_ase_awk_Context_setglobal
|
||||
Java_ase_awk_Argument_getintval
|
||||
Java_ase_awk_Argument_getrealval
|
||||
Java_ase_awk_Argument_getstrval
|
||||
Java_ase_awk_Argument_isindexed
|
||||
Java_ase_awk_Argument_getindexed
|
||||
Java_ase_awk_Argument_clearval
|
||||
Java_ase_awk_Return_isindexed
|
||||
Java_ase_awk_Return_setintval
|
||||
Java_ase_awk_Return_setrealval
|
||||
Java_ase_awk_Return_setstrval
|
||||
Java_ase_awk_Return_setindexedintval
|
||||
Java_ase_awk_Return_setindexedrealval
|
||||
Java_ase_awk_Return_setindexedstrval
|
||||
Java_ase_awk_Return_clearval
|
2851
qse/lib/awk/jni.c
Normal file
2851
qse/lib/awk/jni.c
Normal file
File diff suppressed because it is too large
Load Diff
40
qse/lib/awk/jni.def
Normal file
40
qse/lib/awk/jni.def
Normal file
@ -0,0 +1,40 @@
|
||||
LIBRARY "aseawk_jni.dll"
|
||||
|
||||
EXPORTS
|
||||
Java_ase_awk_Awk_open
|
||||
Java_ase_awk_Awk_close
|
||||
Java_ase_awk_Awk_parse
|
||||
Java_ase_awk_Awk_run
|
||||
Java_ase_awk_Awk_stop
|
||||
Java_ase_awk_Awk_getmaxdepth
|
||||
Java_ase_awk_Awk_setmaxdepth
|
||||
Java_ase_awk_Awk_getoption
|
||||
Java_ase_awk_Awk_setoption
|
||||
Java_ase_awk_Awk_getdebug
|
||||
Java_ase_awk_Awk_setdebug
|
||||
Java_ase_awk_Awk_getword
|
||||
Java_ase_awk_Awk_setword
|
||||
Java_ase_awk_Awk_addfunc
|
||||
Java_ase_awk_Awk_delfunc
|
||||
Java_ase_awk_Awk_setfilename
|
||||
Java_ase_awk_Awk_setofilename
|
||||
Java_ase_awk_Awk_strftime
|
||||
Java_ase_awk_Awk_strfgmtime
|
||||
Java_ase_awk_Awk_system
|
||||
Java_ase_awk_Context_stop
|
||||
Java_ase_awk_Context_getglobal
|
||||
Java_ase_awk_Context_setglobal
|
||||
Java_ase_awk_Argument_getintval
|
||||
Java_ase_awk_Argument_getrealval
|
||||
Java_ase_awk_Argument_getstrval
|
||||
Java_ase_awk_Argument_isindexed
|
||||
Java_ase_awk_Argument_getindexed
|
||||
Java_ase_awk_Argument_clearval
|
||||
Java_ase_awk_Return_isindexed
|
||||
Java_ase_awk_Return_setintval
|
||||
Java_ase_awk_Return_setrealval
|
||||
Java_ase_awk_Return_setstrval
|
||||
Java_ase_awk_Return_setindexedintval
|
||||
Java_ase_awk_Return_setindexedrealval
|
||||
Java_ase_awk_Return_setindexedstrval
|
||||
Java_ase_awk_Return_clearval
|
88
qse/lib/awk/jni.h
Normal file
88
qse/lib/awk/jni.h
Normal file
@ -0,0 +1,88 @@
|
||||
/*
|
||||
* $Id: jni.h 363 2008-09-04 10:58:08Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#ifndef _ASE_LIB_AWK_JNI_H_
|
||||
#define _ASE_LIB_AWK_JNI_H_
|
||||
|
||||
#if defined(__APPLE__) && defined(__MACH__)
|
||||
#include <JavaVM/jni.h>
|
||||
#else
|
||||
#include <jni.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_open (JNIEnv* env, jobject obj);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_close (JNIEnv* env, jobject obj, jlong awkid);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_parse (JNIEnv* env, jobject obj, jlong awkid);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_run (
|
||||
JNIEnv* env, jobject obj, jlong awkid, jstring mfn, jobjectArray args);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_stop (JNIEnv* env, jobject obj, jlong awkid);
|
||||
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_addfunc (
|
||||
JNIEnv* env, jobject obj, jstring name, jint min_args, jint max_args);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_delfunc (
|
||||
JNIEnv* env, jobject obj, jstring name);
|
||||
|
||||
JNIEXPORT jint JNICALL Java_ase_awk_Awk_getmaxdepth (
|
||||
JNIEnv* env, jobject obj, jlong awkid, jint id);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setmaxdepth (
|
||||
JNIEnv* env, jobject obj, jlong awkid, jint ids, jint depth);
|
||||
|
||||
JNIEXPORT jint JNICALL Java_ase_awk_Awk_getoption (
|
||||
JNIEnv* env, jobject obj, jlong awkid);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setoption (
|
||||
JNIEnv* env, jobject obj, jlong awkid, jint options);
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_ase_awk_Awk_getdebug (
|
||||
JNIEnv* env, jobject obj, jlong awkid);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setdebug (
|
||||
JNIEnv* env, jobject obj, jlong awkid, jboolean debug);
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Awk_getword (
|
||||
JNIEnv* env, jobject obj, jlong awkid, jstring ow);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setword (
|
||||
JNIEnv* env, jobject obj, jlong awkid, jstring ow, jstring nw);
|
||||
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setfilename (
|
||||
JNIEnv* env, jobject obj, jlong runid, jstring name);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Awk_setofilename (
|
||||
JNIEnv* env, jobject obj, jlong runid, jstring name);
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Awk_strftime (
|
||||
JNIEnv* env, jobject obj, jstring fmt, jlong sec);
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Awk_strfgmtime (
|
||||
JNIEnv* env, jobject obj, jstring fmt, jlong sec);
|
||||
JNIEXPORT jint JNICALL Java_ase_awk_Awk_system (
|
||||
JNIEnv* env, jobject obj, jstring cmd);
|
||||
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Context_stop (JNIEnv* env, jobject obj, jlong runid);
|
||||
JNIEXPORT jobject JNICALL Java_ase_awk_Context_getglobal (JNIEnv* env, jobject obj, jlong runid, jint id);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Context_setglobal (JNIEnv* env, jobject obj, jlong runid, jint id, jobject ret);
|
||||
|
||||
JNIEXPORT jlong JNICALL Java_ase_awk_Argument_getintval (JNIEnv* env, jobject obj, jlong runid, jlong valid);
|
||||
JNIEXPORT jdouble JNICALL Java_ase_awk_Argument_getrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid);
|
||||
JNIEXPORT jstring JNICALL Java_ase_awk_Argument_getstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid);
|
||||
JNIEXPORT jboolean JNICALL Java_ase_awk_Argument_isindexed (JNIEnv* env, jobject obj, jlong runid, jlong valid);
|
||||
JNIEXPORT jobject JNICALL Java_ase_awk_Argument_getindexed (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Argument_clearval (JNIEnv* env, jobject obj, jlong runid, jlong valid);
|
||||
|
||||
JNIEXPORT jboolean JNICALL Java_ase_awk_Return_isindexed (JNIEnv* env, jobject obj, jlong runid, jlong valid);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Return_setintval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jlong newval);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Return_setrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jdouble newval);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Return_setstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring newval);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Return_setindexedintval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index, jlong newval);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Return_setindexedrealval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index, jdouble newval);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Return_setindexedstrval (JNIEnv* env, jobject obj, jlong runid, jlong valid, jstring index, jstring newval);
|
||||
JNIEXPORT void JNICALL Java_ase_awk_Return_clearval (JNIEnv* env, jobject obj, jlong runid, jlong valid);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
16
qse/lib/awk/makefile.am
Normal file
16
qse/lib/awk/makefile.am
Normal file
@ -0,0 +1,16 @@
|
||||
|
||||
AUTOMAKE_OPTIONS = nostdinc
|
||||
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||
|
||||
lib_LTLIBRARIES = libaseawk.la
|
||||
libaseawk_la_SOURCES = awk.c err.c tree.c parse.c run.c rec.c val.c func.c misc.c extio.c std.c awk_i.h extio.h func.h misc.h parse.h run.h tree.h
|
||||
libaseawk_la_LDFLAGS= -L../cmn -L../utl -version-info 1:0:0 -no-undefined
|
||||
libaseawk_la_LIBADD= -lasecmn -laseutl
|
||||
|
||||
if ENABLE_CXX
|
||||
lib_LTLIBRARIES += libaseawk++.la
|
||||
libaseawk___la_SOURCES = Awk.cpp StdAwk.cpp
|
||||
libaseawk___la_LDFLAGS = -L. -L../cmn -L../utl -version-info 1:0:0 -no-undefined
|
||||
libaseawk___la_LIBADD = -laseawk -lasecmn -laseutl
|
||||
endif
|
541
qse/lib/awk/makefile.in
Normal file
541
qse/lib/awk/makefile.in
Normal file
@ -0,0 +1,541 @@
|
||||
# makefile.in generated by automake 1.10.1 from makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
@ENABLE_CXX_TRUE@am__append_1 = libaseawk++.la
|
||||
subdir = lib/awk
|
||||
DIST_COMMON = $(srcdir)/makefile.am $(srcdir)/makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/include/ase/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
||||
am__installdirs = "$(DESTDIR)$(libdir)"
|
||||
libLTLIBRARIES_INSTALL = $(INSTALL)
|
||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||
libaseawk___la_DEPENDENCIES =
|
||||
am__libaseawk___la_SOURCES_DIST = Awk.cpp StdAwk.cpp
|
||||
@ENABLE_CXX_TRUE@am_libaseawk___la_OBJECTS = Awk.lo StdAwk.lo
|
||||
libaseawk___la_OBJECTS = $(am_libaseawk___la_OBJECTS)
|
||||
libaseawk___la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(libaseawk___la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
@ENABLE_CXX_TRUE@am_libaseawk___la_rpath = -rpath $(libdir)
|
||||
libaseawk_la_DEPENDENCIES =
|
||||
am_libaseawk_la_OBJECTS = awk.lo err.lo tree.lo parse.lo run.lo rec.lo \
|
||||
val.lo func.lo misc.lo extio.lo std.lo
|
||||
libaseawk_la_OBJECTS = $(am_libaseawk_la_OBJECTS)
|
||||
libaseawk_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(libaseawk_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
DEFAULT_INCLUDES =
|
||||
depcomp = $(SHELL) $(top_srcdir)/autoconf/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
|
||||
$(LDFLAGS) -o $@
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
|
||||
--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
|
||||
$(LDFLAGS) -o $@
|
||||
SOURCES = $(libaseawk___la_SOURCES) $(libaseawk_la_SOURCES)
|
||||
DIST_SOURCES = $(am__libaseawk___la_SOURCES_DIST) \
|
||||
$(libaseawk_la_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BUILD_CJ = @BUILD_CJ@
|
||||
BUILD_JNI = @BUILD_JNI@
|
||||
BUILD_MODE = @BUILD_MODE@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAGS_JNI = @CFLAGS_JNI@
|
||||
CJ = @CJ@
|
||||
CJFLAGS = @CJFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
GREP = @GREP@
|
||||
HAVE_CXX = @HAVE_CXX@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
JAR = @JAR@
|
||||
JAR_PATH = @JAR_PATH@
|
||||
JAVAC = @JAVAC@
|
||||
JAVAC_PATH = @JAVAC_PATH@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBM = @LIBM@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LIBTOOL_DEPS = @LIBTOOL_DEPS@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
RANLIB = @RANLIB@
|
||||
RM = @RM@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
AUTOMAKE_OPTIONS = nostdinc
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/include
|
||||
lib_LTLIBRARIES = libaseawk.la $(am__append_1)
|
||||
libaseawk_la_SOURCES = awk.c err.c tree.c parse.c run.c rec.c val.c func.c misc.c extio.c std.c awk_i.h extio.h func.h misc.h parse.h run.h tree.h
|
||||
libaseawk_la_LDFLAGS = -L../cmn -L../utl -version-info 1:0:0 -no-undefined
|
||||
libaseawk_la_LIBADD = -lasecmn -laseutl
|
||||
@ENABLE_CXX_TRUE@libaseawk___la_SOURCES = Awk.cpp StdAwk.cpp
|
||||
@ENABLE_CXX_TRUE@libaseawk___la_LDFLAGS = -L. -L../cmn -L../utl -version-info 1:0:0 -no-undefined
|
||||
@ENABLE_CXX_TRUE@libaseawk___la_LIBADD = -laseawk -lasecmn -laseutl
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .cpp .lo .o .obj
|
||||
$(srcdir)/makefile.in: $(srcdir)/makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/awk/makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign lib/awk/makefile
|
||||
.PRECIOUS: makefile
|
||||
makefile: $(srcdir)/makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-libLTLIBRARIES: $(lib_LTLIBRARIES)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
|
||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
f=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
|
||||
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-libLTLIBRARIES:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||
p=$(am__strip_dir) \
|
||||
echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
|
||||
$(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
|
||||
done
|
||||
|
||||
clean-libLTLIBRARIES:
|
||||
-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
|
||||
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
|
||||
dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
|
||||
test "$$dir" != "$$p" || dir=.; \
|
||||
echo "rm -f \"$${dir}/so_locations\""; \
|
||||
rm -f "$${dir}/so_locations"; \
|
||||
done
|
||||
libaseawk++.la: $(libaseawk___la_OBJECTS) $(libaseawk___la_DEPENDENCIES)
|
||||
$(libaseawk___la_LINK) $(am_libaseawk___la_rpath) $(libaseawk___la_OBJECTS) $(libaseawk___la_LIBADD) $(LIBS)
|
||||
libaseawk.la: $(libaseawk_la_OBJECTS) $(libaseawk_la_DEPENDENCIES)
|
||||
$(libaseawk_la_LINK) -rpath $(libdir) $(libaseawk_la_OBJECTS) $(libaseawk_la_LIBADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Awk.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/StdAwk.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/awk.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/err.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/extio.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/func.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rec.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/run.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/std.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tree.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/val.Plo@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.o:
|
||||
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.cpp.lo:
|
||||
@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: makefile $(LTLIBRARIES)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(libdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
|
||||
mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-exec-am: install-libLTLIBRARIES
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-libLTLIBRARIES
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
|
||||
clean-libLTLIBRARIES clean-libtool ctags distclean \
|
||||
distclean-compile distclean-generic distclean-libtool \
|
||||
distclean-tags distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am install-dvi \
|
||||
install-dvi-am install-exec install-exec-am install-html \
|
||||
install-html-am install-info install-info-am \
|
||||
install-libLTLIBRARIES install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-libLTLIBRARIES
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
956
qse/lib/awk/misc.c
Normal file
956
qse/lib/awk/misc.c
Normal file
@ -0,0 +1,956 @@
|
||||
/*
|
||||
* $Id: misc.c 337 2008-08-20 09:17:25Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#include "awk.h"
|
||||
|
||||
void* ase_awk_alloc (ase_awk_t* awk, ase_size_t size)
|
||||
{
|
||||
return ASE_AWK_ALLOC (awk, size);
|
||||
}
|
||||
|
||||
void ase_awk_free (ase_awk_t* awk, void* ptr)
|
||||
{
|
||||
ASE_AWK_FREE (awk, ptr);
|
||||
}
|
||||
|
||||
ase_char_t* ase_awk_strdup (ase_awk_t* awk, const ase_char_t* s)
|
||||
{
|
||||
return ASE_AWK_STRDUP (awk, s);
|
||||
}
|
||||
|
||||
ase_char_t* ase_awk_strxdup (ase_awk_t* awk, const ase_char_t* s, ase_size_t l)
|
||||
{
|
||||
return ASE_AWK_STRXDUP (awk, s, l);
|
||||
}
|
||||
|
||||
ase_long_t ase_awk_strxtolong (
|
||||
ase_awk_t* awk, const ase_char_t* str, ase_size_t len,
|
||||
int base, const ase_char_t** endptr)
|
||||
{
|
||||
ase_long_t n = 0;
|
||||
const ase_char_t* p;
|
||||
const ase_char_t* end;
|
||||
ase_size_t rem;
|
||||
int digit, negative = 0;
|
||||
|
||||
ASE_ASSERT (base < 37);
|
||||
|
||||
p = str;
|
||||
end = str + len;
|
||||
|
||||
/* strip off leading spaces */
|
||||
/*while (ASE_AWK_ISSPACE(awk,*p)) p++;*/
|
||||
|
||||
/* check for a sign */
|
||||
/*while (*p != ASE_T('\0')) */
|
||||
while (p < end)
|
||||
{
|
||||
if (*p == ASE_T('-'))
|
||||
{
|
||||
negative = ~negative;
|
||||
p++;
|
||||
}
|
||||
else if (*p == ASE_T('+')) p++;
|
||||
else break;
|
||||
}
|
||||
|
||||
/* check for a binary/octal/hexadecimal notation */
|
||||
rem = end - p;
|
||||
if (base == 0)
|
||||
{
|
||||
if (rem >= 1 && *p == ASE_T('0'))
|
||||
{
|
||||
p++;
|
||||
|
||||
if (rem == 1) base = 8;
|
||||
else if (*p == ASE_T('x') || *p == ASE_T('X'))
|
||||
{
|
||||
p++; base = 16;
|
||||
}
|
||||
else if (*p == ASE_T('b') || *p == ASE_T('B'))
|
||||
{
|
||||
p++; base = 2;
|
||||
}
|
||||
else base = 8;
|
||||
}
|
||||
else base = 10;
|
||||
}
|
||||
else if (rem >= 2 && base == 16)
|
||||
{
|
||||
if (*p == ASE_T('0') &&
|
||||
(*(p+1) == ASE_T('x') || *(p+1) == ASE_T('X'))) p += 2;
|
||||
}
|
||||
else if (rem >= 2 && base == 2)
|
||||
{
|
||||
if (*p == ASE_T('0') &&
|
||||
(*(p+1) == ASE_T('b') || *(p+1) == ASE_T('B'))) p += 2;
|
||||
}
|
||||
|
||||
/* process the digits */
|
||||
/*while (*p != ASE_T('\0'))*/
|
||||
while (p < end)
|
||||
{
|
||||
if (*p >= ASE_T('0') && *p <= ASE_T('9'))
|
||||
digit = *p - ASE_T('0');
|
||||
else if (*p >= ASE_T('A') && *p <= ASE_T('Z'))
|
||||
digit = *p - ASE_T('A') + 10;
|
||||
else if (*p >= ASE_T('a') && *p <= ASE_T('z'))
|
||||
digit = *p - ASE_T('a') + 10;
|
||||
else break;
|
||||
|
||||
if (digit >= base) break;
|
||||
n = n * base + digit;
|
||||
|
||||
p++;
|
||||
}
|
||||
|
||||
if (endptr != ASE_NULL) *endptr = p;
|
||||
return (negative)? -n: n;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* ase_awk_strtoreal is almost a replica of strtod.
|
||||
*
|
||||
* strtod.c --
|
||||
*
|
||||
* Source code for the "strtod" library procedure.
|
||||
*
|
||||
* Copyright (c) 1988-1993 The Regents of the University of California.
|
||||
* Copyright (c) 1994 Sun Microsystems, Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
* fee is hereby granted, provided that the above copyright
|
||||
* notice appear in all copies. The University of California
|
||||
* makes no representations about the suitability of this
|
||||
* software for any purpose. It is provided "as is" without
|
||||
* express or implied warranty.
|
||||
*/
|
||||
|
||||
#define MAX_EXPONENT 511
|
||||
|
||||
ase_real_t ase_awk_strtoreal (ase_awk_t* awk, const ase_char_t* str)
|
||||
{
|
||||
/*
|
||||
* Table giving binary powers of 10. Entry is 10^2^i.
|
||||
* Used to convert decimal exponents into floating-point numbers.
|
||||
*/
|
||||
static ase_real_t powers_of_10[] =
|
||||
{
|
||||
10., 100., 1.0e4, 1.0e8, 1.0e16,
|
||||
1.0e32, 1.0e64, 1.0e128, 1.0e256
|
||||
};
|
||||
|
||||
ase_real_t fraction, dbl_exp, * d;
|
||||
const ase_char_t* p;
|
||||
ase_cint_t c;
|
||||
int exp = 0; /* Esseonent read from "EX" field */
|
||||
|
||||
/*
|
||||
* Esseonent that derives from the fractional part. Under normal
|
||||
* circumstatnces, it is the negative of the number of digits in F.
|
||||
* However, if I is very long, the last digits of I get dropped
|
||||
* (otherwise a long I with a large negative exponent could cause an
|
||||
* unnecessary overflow on I alone). In this case, frac_exp is
|
||||
* incremented one for each dropped digit.
|
||||
*/
|
||||
|
||||
int frac_exp;
|
||||
int mant_size; /* Number of digits in mantissa. */
|
||||
int dec_pt; /* Number of mantissa digits BEFORE decimal point */
|
||||
const ase_char_t *pexp; /* Temporarily holds location of exponent in string */
|
||||
int negative = 0, exp_negative = 0;
|
||||
|
||||
p = str;
|
||||
|
||||
/* strip off leading blanks */
|
||||
/*while (ASE_AWK_ISSPACE(awk,*p)) p++;*/
|
||||
|
||||
/* check for a sign */
|
||||
while (*p != ASE_T('\0'))
|
||||
{
|
||||
if (*p == ASE_T('-'))
|
||||
{
|
||||
negative = ~negative;
|
||||
p++;
|
||||
}
|
||||
else if (*p == ASE_T('+')) p++;
|
||||
else break;
|
||||
}
|
||||
|
||||
/* Count the number of digits in the mantissa (including the decimal
|
||||
* point), and also locate the decimal point. */
|
||||
dec_pt = -1;
|
||||
for (mant_size = 0; ; mant_size++)
|
||||
{
|
||||
c = *p;
|
||||
if (!ASE_AWK_ISDIGIT (awk, c))
|
||||
{
|
||||
if ((c != ASE_T('.')) || (dec_pt >= 0)) break;
|
||||
dec_pt = mant_size;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Now suck up the digits in the mantissa. Use two integers to
|
||||
* collect 9 digits each (this is faster than using floating-point).
|
||||
* If the mantissa has more than 18 digits, ignore the extras, since
|
||||
* they can't affect the value anyway.
|
||||
*/
|
||||
pexp = p;
|
||||
p -= mant_size;
|
||||
if (dec_pt < 0)
|
||||
{
|
||||
dec_pt = mant_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
mant_size--; /* One of the digits was the point */
|
||||
}
|
||||
|
||||
if (mant_size > 18)
|
||||
{
|
||||
frac_exp = dec_pt - 18;
|
||||
mant_size = 18;
|
||||
}
|
||||
else
|
||||
{
|
||||
frac_exp = dec_pt - mant_size;
|
||||
}
|
||||
|
||||
if (mant_size == 0)
|
||||
{
|
||||
fraction = 0.0;
|
||||
/*p = str;*/
|
||||
p = pexp;
|
||||
goto done;
|
||||
}
|
||||
else
|
||||
{
|
||||
int frac1, frac2;
|
||||
frac1 = 0;
|
||||
for ( ; mant_size > 9; mant_size--)
|
||||
{
|
||||
c = *p;
|
||||
p++;
|
||||
if (c == ASE_T('.'))
|
||||
{
|
||||
c = *p;
|
||||
p++;
|
||||
}
|
||||
frac1 = 10 * frac1 + (c - ASE_T('0'));
|
||||
}
|
||||
frac2 = 0;
|
||||
for (; mant_size > 0; mant_size--) {
|
||||
c = *p;
|
||||
p++;
|
||||
if (c == ASE_T('.'))
|
||||
{
|
||||
c = *p;
|
||||
p++;
|
||||
}
|
||||
frac2 = 10*frac2 + (c - ASE_T('0'));
|
||||
}
|
||||
fraction = (1.0e9 * frac1) + frac2;
|
||||
}
|
||||
|
||||
/* Skim off the exponent */
|
||||
p = pexp;
|
||||
if ((*p == ASE_T('E')) || (*p == ASE_T('e')))
|
||||
{
|
||||
p++;
|
||||
if (*p == ASE_T('-'))
|
||||
{
|
||||
exp_negative = 1;
|
||||
p++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*p == ASE_T('+')) p++;
|
||||
exp_negative = 0;
|
||||
}
|
||||
if (!ASE_AWK_ISDIGIT (awk, *p))
|
||||
{
|
||||
/* p = pexp; */
|
||||
/* goto done; */
|
||||
goto no_exp;
|
||||
}
|
||||
while (ASE_AWK_ISDIGIT (awk, *p))
|
||||
{
|
||||
exp = exp * 10 + (*p - ASE_T('0'));
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
||||
no_exp:
|
||||
if (exp_negative) exp = frac_exp - exp;
|
||||
else exp = frac_exp + exp;
|
||||
|
||||
/*
|
||||
* Generate a floating-point number that represents the exponent.
|
||||
* Do this by processing the exponent one bit at a time to combine
|
||||
* many powers of 2 of 10. Then combine the exponent with the
|
||||
* fraction.
|
||||
*/
|
||||
if (exp < 0)
|
||||
{
|
||||
exp_negative = 1;
|
||||
exp = -exp;
|
||||
}
|
||||
else exp_negative = 0;
|
||||
|
||||
if (exp > MAX_EXPONENT) exp = MAX_EXPONENT;
|
||||
|
||||
dbl_exp = 1.0;
|
||||
|
||||
for (d = powers_of_10; exp != 0; exp >>= 1, d++)
|
||||
{
|
||||
if (exp & 01) dbl_exp *= *d;
|
||||
}
|
||||
|
||||
if (exp_negative) fraction /= dbl_exp;
|
||||
else fraction *= dbl_exp;
|
||||
|
||||
done:
|
||||
return (negative)? -fraction: fraction;
|
||||
}
|
||||
|
||||
ase_real_t ase_awk_strxtoreal (
|
||||
ase_awk_t* awk, const ase_char_t* str, ase_size_t len,
|
||||
const ase_char_t** endptr)
|
||||
{
|
||||
/*
|
||||
* Table giving binary powers of 10. Entry is 10^2^i.
|
||||
* Used to convert decimal exponents into floating-point numbers.
|
||||
*/
|
||||
static ase_real_t powers_of_10[] =
|
||||
{
|
||||
10., 100., 1.0e4, 1.0e8, 1.0e16,
|
||||
1.0e32, 1.0e64, 1.0e128, 1.0e256
|
||||
};
|
||||
|
||||
ase_real_t fraction, dbl_exp, * d;
|
||||
const ase_char_t* p, * end;
|
||||
ase_cint_t c;
|
||||
int exp = 0; /* Esseonent read from "EX" field */
|
||||
|
||||
/*
|
||||
* Esseonent that derives from the fractional part. Under normal
|
||||
* circumstatnces, it is the negative of the number of digits in F.
|
||||
* However, if I is very long, the last digits of I get dropped
|
||||
* (otherwise a long I with a large negative exponent could cause an
|
||||
* unnecessary overflow on I alone). In this case, frac_exp is
|
||||
* incremented one for each dropped digit.
|
||||
*/
|
||||
|
||||
int frac_exp;
|
||||
int mant_size; /* Number of digits in mantissa. */
|
||||
int dec_pt; /* Number of mantissa digits BEFORE decimal point */
|
||||
const ase_char_t *pexp; /* Temporarily holds location of exponent in string */
|
||||
int negative = 0, exp_negative = 0;
|
||||
|
||||
p = str;
|
||||
end = str + len;
|
||||
|
||||
/* Strip off leading blanks and check for a sign */
|
||||
/*while (ASE_AWK_ISSPACE(awk,*p)) p++;*/
|
||||
|
||||
/*while (*p != ASE_T('\0')) */
|
||||
while (p < end)
|
||||
{
|
||||
if (*p == ASE_T('-'))
|
||||
{
|
||||
negative = ~negative;
|
||||
p++;
|
||||
}
|
||||
else if (*p == ASE_T('+')) p++;
|
||||
else break;
|
||||
}
|
||||
|
||||
/* Count the number of digits in the mantissa (including the decimal
|
||||
* point), and also locate the decimal point. */
|
||||
dec_pt = -1;
|
||||
/*for (mant_size = 0; ; mant_size++) */
|
||||
for (mant_size = 0; p < end; mant_size++)
|
||||
{
|
||||
c = *p;
|
||||
if (!ASE_AWK_ISDIGIT (awk, c))
|
||||
{
|
||||
if (c != ASE_T('.') || dec_pt >= 0) break;
|
||||
dec_pt = mant_size;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Now suck up the digits in the mantissa. Use two integers to
|
||||
* collect 9 digits each (this is faster than using floating-point).
|
||||
* If the mantissa has more than 18 digits, ignore the extras, since
|
||||
* they can't affect the value anyway.
|
||||
*/
|
||||
pexp = p;
|
||||
p -= mant_size;
|
||||
if (dec_pt < 0)
|
||||
{
|
||||
dec_pt = mant_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
mant_size--; /* One of the digits was the point */
|
||||
}
|
||||
|
||||
if (mant_size > 18) /* TODO: is 18 correct for ase_real_t??? */
|
||||
{
|
||||
frac_exp = dec_pt - 18;
|
||||
mant_size = 18;
|
||||
}
|
||||
else
|
||||
{
|
||||
frac_exp = dec_pt - mant_size;
|
||||
}
|
||||
|
||||
if (mant_size == 0)
|
||||
{
|
||||
fraction = 0.0;
|
||||
/*p = str;*/
|
||||
p = pexp;
|
||||
goto done;
|
||||
}
|
||||
else
|
||||
{
|
||||
int frac1, frac2;
|
||||
|
||||
frac1 = 0;
|
||||
for ( ; mant_size > 9; mant_size--)
|
||||
{
|
||||
c = *p;
|
||||
p++;
|
||||
if (c == ASE_T('.'))
|
||||
{
|
||||
c = *p;
|
||||
p++;
|
||||
}
|
||||
frac1 = 10 * frac1 + (c - ASE_T('0'));
|
||||
}
|
||||
|
||||
frac2 = 0;
|
||||
for (; mant_size > 0; mant_size--) {
|
||||
c = *p++;
|
||||
if (c == ASE_T('.'))
|
||||
{
|
||||
c = *p;
|
||||
p++;
|
||||
}
|
||||
frac2 = 10 * frac2 + (c - ASE_T('0'));
|
||||
}
|
||||
fraction = (1.0e9 * frac1) + frac2;
|
||||
}
|
||||
|
||||
/* Skim off the exponent */
|
||||
p = pexp;
|
||||
if (p < end && (*p == ASE_T('E') || *p == ASE_T('e')))
|
||||
{
|
||||
p++;
|
||||
|
||||
if (p < end)
|
||||
{
|
||||
if (*p == ASE_T('-'))
|
||||
{
|
||||
exp_negative = 1;
|
||||
p++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (*p == ASE_T('+')) p++;
|
||||
exp_negative = 0;
|
||||
}
|
||||
}
|
||||
else exp_negative = 0;
|
||||
|
||||
if (!(p < end && ASE_AWK_ISDIGIT (awk, *p)))
|
||||
{
|
||||
/*p = pexp;*/
|
||||
/*goto done;*/
|
||||
goto no_exp;
|
||||
}
|
||||
|
||||
while (p < end && ASE_AWK_ISDIGIT (awk, *p))
|
||||
{
|
||||
exp = exp * 10 + (*p - ASE_T('0'));
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
||||
no_exp:
|
||||
if (exp_negative) exp = frac_exp - exp;
|
||||
else exp = frac_exp + exp;
|
||||
|
||||
/*
|
||||
* Generate a floating-point number that represents the exponent.
|
||||
* Do this by processing the exponent one bit at a time to combine
|
||||
* many powers of 2 of 10. Then combine the exponent with the
|
||||
* fraction.
|
||||
*/
|
||||
if (exp < 0)
|
||||
{
|
||||
exp_negative = 1;
|
||||
exp = -exp;
|
||||
}
|
||||
else exp_negative = 0;
|
||||
|
||||
if (exp > MAX_EXPONENT) exp = MAX_EXPONENT;
|
||||
|
||||
dbl_exp = 1.0;
|
||||
|
||||
for (d = powers_of_10; exp != 0; exp >>= 1, d++)
|
||||
{
|
||||
if (exp & 01) dbl_exp *= *d;
|
||||
}
|
||||
|
||||
if (exp_negative) fraction /= dbl_exp;
|
||||
else fraction *= dbl_exp;
|
||||
|
||||
done:
|
||||
if (endptr != ASE_NULL) *endptr = p;
|
||||
return (negative)? -fraction: fraction;
|
||||
}
|
||||
|
||||
ase_size_t ase_awk_longtostr (
|
||||
ase_long_t value, int radix, const ase_char_t* prefix,
|
||||
ase_char_t* buf, ase_size_t size)
|
||||
{
|
||||
ase_long_t t, rem;
|
||||
ase_size_t len, ret, i;
|
||||
ase_size_t prefix_len;
|
||||
|
||||
prefix_len = (prefix != ASE_NULL)? ase_strlen(prefix): 0;
|
||||
|
||||
t = value;
|
||||
if (t == 0)
|
||||
{
|
||||
/* zero */
|
||||
if (buf == ASE_NULL)
|
||||
{
|
||||
/* if buf is not given,
|
||||
* return the number of bytes required */
|
||||
return prefix_len + 1;
|
||||
}
|
||||
|
||||
if (size < prefix_len+1)
|
||||
{
|
||||
/* buffer too small */
|
||||
return (ase_size_t)-1;
|
||||
}
|
||||
|
||||
for (i = 0; i < prefix_len; i++) buf[i] = prefix[i];
|
||||
buf[prefix_len] = ASE_T('0');
|
||||
if (size > prefix_len+1) buf[prefix_len+1] = ASE_T('\0');
|
||||
return prefix_len+1;
|
||||
}
|
||||
|
||||
/* non-zero values */
|
||||
len = prefix_len;
|
||||
if (t < 0) { t = -t; len++; }
|
||||
while (t > 0) { len++; t /= radix; }
|
||||
|
||||
if (buf == ASE_NULL)
|
||||
{
|
||||
/* if buf is not given, return the number of bytes required */
|
||||
return len;
|
||||
}
|
||||
|
||||
if (size < len) return (ase_size_t)-1; /* buffer too small */
|
||||
if (size > len) buf[len] = ASE_T('\0');
|
||||
ret = len;
|
||||
|
||||
t = value;
|
||||
if (t < 0) t = -t;
|
||||
|
||||
while (t > 0)
|
||||
{
|
||||
rem = t % radix;
|
||||
if (rem >= 10)
|
||||
buf[--len] = (ase_char_t)rem + ASE_T('a') - 10;
|
||||
else
|
||||
buf[--len] = (ase_char_t)rem + ASE_T('0');
|
||||
t /= radix;
|
||||
}
|
||||
|
||||
if (value < 0)
|
||||
{
|
||||
for (i = 1; i <= prefix_len; i++)
|
||||
{
|
||||
buf[i] = prefix[i-1];
|
||||
len--;
|
||||
}
|
||||
buf[--len] = ASE_T('-');
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < prefix_len; i++) buf[i] = prefix[i];
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
ase_char_t* ase_awk_strtok (
|
||||
ase_awk_run_t* run, const ase_char_t* s,
|
||||
const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len)
|
||||
{
|
||||
return ase_awk_strxntok (
|
||||
run, s, ase_strlen(s),
|
||||
delim, ase_strlen(delim), tok, tok_len);
|
||||
}
|
||||
|
||||
ase_char_t* ase_awk_strxtok (
|
||||
ase_awk_run_t* run, const ase_char_t* s, ase_size_t len,
|
||||
const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len)
|
||||
{
|
||||
return ase_awk_strxntok (
|
||||
run, s, len,
|
||||
delim, ase_strlen(delim), tok, tok_len);
|
||||
}
|
||||
|
||||
ase_char_t* ase_awk_strntok (
|
||||
ase_awk_run_t* run, const ase_char_t* s,
|
||||
const ase_char_t* delim, ase_size_t delim_len,
|
||||
ase_char_t** tok, ase_size_t* tok_len)
|
||||
{
|
||||
return ase_awk_strxntok (
|
||||
run, s, ase_strlen(s),
|
||||
delim, delim_len, tok, tok_len);
|
||||
}
|
||||
|
||||
ase_char_t* ase_awk_strxntok (
|
||||
ase_awk_run_t* run, const ase_char_t* s, ase_size_t len,
|
||||
const ase_char_t* delim, ase_size_t delim_len,
|
||||
ase_char_t** tok, ase_size_t* tok_len)
|
||||
{
|
||||
const ase_char_t* p = s, *d;
|
||||
const ase_char_t* end = s + len;
|
||||
const ase_char_t* sp = ASE_NULL, * ep = ASE_NULL;
|
||||
const ase_char_t* delim_end = delim + delim_len;
|
||||
ase_char_t c;
|
||||
int delim_mode;
|
||||
|
||||
#define __DELIM_NULL 0
|
||||
#define __DELIM_EMPTY 1
|
||||
#define __DELIM_SPACES 2
|
||||
#define __DELIM_NOSPACES 3
|
||||
#define __DELIM_COMPOSITE 4
|
||||
if (delim == ASE_NULL) delim_mode = __DELIM_NULL;
|
||||
else
|
||||
{
|
||||
delim_mode = __DELIM_EMPTY;
|
||||
|
||||
for (d = delim; d < delim_end; d++)
|
||||
{
|
||||
if (ASE_AWK_ISSPACE(run->awk,*d))
|
||||
{
|
||||
if (delim_mode == __DELIM_EMPTY)
|
||||
delim_mode = __DELIM_SPACES;
|
||||
else if (delim_mode == __DELIM_NOSPACES)
|
||||
{
|
||||
delim_mode = __DELIM_COMPOSITE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (delim_mode == __DELIM_EMPTY)
|
||||
delim_mode = __DELIM_NOSPACES;
|
||||
else if (delim_mode == __DELIM_SPACES)
|
||||
{
|
||||
delim_mode = __DELIM_COMPOSITE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO: verify the following statement... */
|
||||
if (delim_mode == __DELIM_SPACES &&
|
||||
delim_len == 1 &&
|
||||
delim[0] != ASE_T(' ')) delim_mode = __DELIM_NOSPACES;
|
||||
}
|
||||
|
||||
if (delim_mode == __DELIM_NULL)
|
||||
{
|
||||
/* when ASE_NULL is given as "delim", it trims off the
|
||||
* leading and trailing spaces characters off the source
|
||||
* string "s" eventually. */
|
||||
|
||||
while (p < end && ASE_AWK_ISSPACE(run->awk,*p)) p++;
|
||||
while (p < end)
|
||||
{
|
||||
c = *p;
|
||||
|
||||
if (!ASE_AWK_ISSPACE(run->awk,c))
|
||||
{
|
||||
if (sp == ASE_NULL) sp = p;
|
||||
ep = p;
|
||||
}
|
||||
p++;
|
||||
}
|
||||
}
|
||||
else if (delim_mode == __DELIM_EMPTY)
|
||||
{
|
||||
/* each character in the source string "s" becomes a token. */
|
||||
if (p < end)
|
||||
{
|
||||
c = *p;
|
||||
sp = p;
|
||||
ep = p++;
|
||||
}
|
||||
}
|
||||
else if (delim_mode == __DELIM_SPACES)
|
||||
{
|
||||
/* each token is delimited by space characters. all leading
|
||||
* and trailing spaces are removed. */
|
||||
|
||||
while (p < end && ASE_AWK_ISSPACE(run->awk,*p)) p++;
|
||||
while (p < end)
|
||||
{
|
||||
c = *p;
|
||||
if (ASE_AWK_ISSPACE(run->awk,c)) break;
|
||||
if (sp == ASE_NULL) sp = p;
|
||||
ep = p++;
|
||||
}
|
||||
while (p < end && ASE_AWK_ISSPACE(run->awk,*p)) p++;
|
||||
}
|
||||
else if (delim_mode == __DELIM_NOSPACES)
|
||||
{
|
||||
/* each token is delimited by one of charaters
|
||||
* in the delimeter set "delim". */
|
||||
if (run->global.ignorecase)
|
||||
{
|
||||
while (p < end)
|
||||
{
|
||||
c = ASE_AWK_TOUPPER(run->awk, *p);
|
||||
for (d = delim; d < delim_end; d++)
|
||||
{
|
||||
if (c == ASE_AWK_TOUPPER(run->awk,*d)) goto exit_loop;
|
||||
}
|
||||
|
||||
if (sp == ASE_NULL) sp = p;
|
||||
ep = p++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (p < end)
|
||||
{
|
||||
c = *p;
|
||||
for (d = delim; d < delim_end; d++)
|
||||
{
|
||||
if (c == *d) goto exit_loop;
|
||||
}
|
||||
|
||||
if (sp == ASE_NULL) sp = p;
|
||||
ep = p++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else /* if (delim_mode == __DELIM_COMPOSITE) */
|
||||
{
|
||||
/* each token is delimited by one of non-space charaters
|
||||
* in the delimeter set "delim". however, all space characters
|
||||
* surrounding the token are removed */
|
||||
while (p < end && ASE_AWK_ISSPACE(run->awk,*p)) p++;
|
||||
if (run->global.ignorecase)
|
||||
{
|
||||
while (p < end)
|
||||
{
|
||||
c = ASE_AWK_TOUPPER(run->awk, *p);
|
||||
if (ASE_AWK_ISSPACE(run->awk,c))
|
||||
{
|
||||
p++;
|
||||
continue;
|
||||
}
|
||||
for (d = delim; d < delim_end; d++)
|
||||
{
|
||||
if (c == ASE_AWK_TOUPPER(run->awk,*d)) goto exit_loop;
|
||||
}
|
||||
if (sp == ASE_NULL) sp = p;
|
||||
ep = p++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (p < end)
|
||||
{
|
||||
c = *p;
|
||||
if (ASE_AWK_ISSPACE(run->awk,c))
|
||||
{
|
||||
p++;
|
||||
continue;
|
||||
}
|
||||
for (d = delim; d < delim_end; d++)
|
||||
{
|
||||
if (c == *d) goto exit_loop;
|
||||
}
|
||||
if (sp == ASE_NULL) sp = p;
|
||||
ep = p++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
exit_loop:
|
||||
if (sp == ASE_NULL)
|
||||
{
|
||||
*tok = ASE_NULL;
|
||||
*tok_len = (ase_size_t)0;
|
||||
}
|
||||
else
|
||||
{
|
||||
*tok = (ase_char_t*)sp;
|
||||
*tok_len = ep - sp + 1;
|
||||
}
|
||||
|
||||
/* if ASE_NULL is returned, this function should not be called anymore */
|
||||
if (p >= end) return ASE_NULL;
|
||||
if (delim_mode == __DELIM_EMPTY ||
|
||||
delim_mode == __DELIM_SPACES) return (ase_char_t*)p;
|
||||
return (ase_char_t*)++p;
|
||||
}
|
||||
|
||||
ase_char_t* ase_awk_strxntokbyrex (
|
||||
ase_awk_run_t* run, const ase_char_t* s, ase_size_t len,
|
||||
void* rex, ase_char_t** tok, ase_size_t* tok_len, int* errnum)
|
||||
{
|
||||
int n;
|
||||
ase_char_t* match_ptr;
|
||||
ase_size_t match_len, i;
|
||||
ase_size_t left = len;
|
||||
const ase_char_t* ptr = s;
|
||||
const ase_char_t* str_ptr = s;
|
||||
ase_size_t str_len = len;
|
||||
|
||||
while (len > 0)
|
||||
{
|
||||
n = ASE_AWK_MATCHREX (
|
||||
run->awk, rex,
|
||||
((run->global.ignorecase)? ASE_REX_IGNORECASE: 0),
|
||||
ptr, left, (const ase_char_t**)&match_ptr, &match_len,
|
||||
errnum);
|
||||
if (n == -1) return ASE_NULL;
|
||||
if (n == 0)
|
||||
{
|
||||
/* no match has been found.
|
||||
* return the entire string as a token */
|
||||
*tok = (ase_char_t*)str_ptr;
|
||||
*tok_len = str_len;
|
||||
*errnum = ASE_AWK_ENOERR;
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
ASE_ASSERT (n == 1);
|
||||
|
||||
if (match_len == 0)
|
||||
{
|
||||
ptr++;
|
||||
left--;
|
||||
}
|
||||
else if (run->awk->option & ASE_AWK_STRIPSPACES)
|
||||
{
|
||||
/* match at the beginning of the input string */
|
||||
if (match_ptr == s)
|
||||
{
|
||||
for (i = 0; i < match_len; i++)
|
||||
{
|
||||
if (!ASE_AWK_ISSPACE(run->awk, match_ptr[i]))
|
||||
goto exit_loop;
|
||||
}
|
||||
|
||||
/* the match that are all spaces at the
|
||||
* beginning of the input string is skipped */
|
||||
ptr += match_len;
|
||||
left -= match_len;
|
||||
str_ptr = s + match_len;
|
||||
str_len -= match_len;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
|
||||
exit_loop:
|
||||
if (len == 0)
|
||||
{
|
||||
*tok = (ase_char_t*)str_ptr;
|
||||
*tok_len = str_len;
|
||||
*errnum = ASE_AWK_ENOERR;
|
||||
return ASE_NULL;
|
||||
}
|
||||
|
||||
*tok = (ase_char_t*)str_ptr;
|
||||
*tok_len = match_ptr - str_ptr;
|
||||
|
||||
for (i = 0; i < match_len; i++)
|
||||
{
|
||||
if (!ASE_AWK_ISSPACE(run->awk, match_ptr[i]))
|
||||
{
|
||||
*errnum = ASE_AWK_ENOERR;
|
||||
return match_ptr+match_len;
|
||||
}
|
||||
}
|
||||
|
||||
*errnum = ASE_AWK_ENOERR;
|
||||
|
||||
if (run->awk->option & ASE_AWK_STRIPSPACES)
|
||||
{
|
||||
return (match_ptr+match_len >= s+len)?
|
||||
ASE_NULL: (match_ptr+match_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (match_ptr+match_len > s+len)?
|
||||
ASE_NULL: (match_ptr+match_len);
|
||||
}
|
||||
}
|
||||
|
||||
#define ASE_AWK_REXERRTOERR(err) \
|
||||
((err == ASE_REX_ENOERR)? ASE_AWK_ENOERR: \
|
||||
(err == ASE_REX_ENOMEM)? ASE_AWK_ENOMEM: \
|
||||
(err == ASE_REX_ERECUR)? ASE_AWK_EREXRECUR: \
|
||||
(err == ASE_REX_ERPAREN)? ASE_AWK_EREXRPAREN: \
|
||||
(err == ASE_REX_ERBRACKET)? ASE_AWK_EREXRBRACKET: \
|
||||
(err == ASE_REX_ERBRACE)? ASE_AWK_EREXRBRACE: \
|
||||
(err == ASE_REX_EUNBALPAR)? ASE_AWK_EREXUNBALPAR: \
|
||||
(err == ASE_REX_ECOLON)? ASE_AWK_EREXCOLON: \
|
||||
(err == ASE_REX_ECRANGE)? ASE_AWK_EREXCRANGE: \
|
||||
(err == ASE_REX_ECCLASS)? ASE_AWK_EREXCCLASS: \
|
||||
(err == ASE_REX_EBRANGE)? ASE_AWK_EREXBRANGE: \
|
||||
(err == ASE_REX_EEND)? ASE_AWK_EREXEND: \
|
||||
(err == ASE_REX_EGARBAGE)? ASE_AWK_EREXGARBAGE: \
|
||||
ASE_AWK_EINTERN)
|
||||
|
||||
void* ase_awk_buildrex (
|
||||
ase_awk_t* awk, const ase_char_t* ptn, ase_size_t len, int* errnum)
|
||||
{
|
||||
int err;
|
||||
void* p;
|
||||
|
||||
p = ase_buildrex (
|
||||
awk->mmgr, awk->rex.depth.max.build, ptn, len, &err);
|
||||
if (p == ASE_NULL) *errnum = ASE_AWK_REXERRTOERR(err);
|
||||
return p;
|
||||
}
|
||||
|
||||
int ase_awk_matchrex (
|
||||
ase_awk_t* awk, void* code, int option,
|
||||
const ase_char_t* str, ase_size_t len,
|
||||
const ase_char_t** match_ptr, ase_size_t* match_len, int* errnum)
|
||||
{
|
||||
int err, x;
|
||||
|
||||
x = ase_matchrex (
|
||||
awk->mmgr, awk->ccls, awk->rex.depth.max.match,
|
||||
code, option, str, len, match_ptr, match_len, &err);
|
||||
if (x < 0) *errnum = ASE_AWK_REXERRTOERR(err);
|
||||
return x;
|
||||
}
|
50
qse/lib/awk/misc.h
Normal file
50
qse/lib/awk/misc.h
Normal file
@ -0,0 +1,50 @@
|
||||
/*
|
||||
* $Id: misc.h 363 2008-09-04 10:58:08Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#ifndef _ASE_LIB_AWK_MISC_H_
|
||||
#define _ASE_LIB_AWK_MISC_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
ase_char_t* ase_awk_strtok (
|
||||
ase_awk_run_t* run, const ase_char_t* s,
|
||||
const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len);
|
||||
|
||||
ase_char_t* ase_awk_strxtok (
|
||||
ase_awk_run_t* run, const ase_char_t* s, ase_size_t len,
|
||||
const ase_char_t* delim, ase_char_t** tok, ase_size_t* tok_len);
|
||||
|
||||
ase_char_t* ase_awk_strntok (
|
||||
ase_awk_run_t* run, const ase_char_t* s,
|
||||
const ase_char_t* delim, ase_size_t delim_len,
|
||||
ase_char_t** tok, ase_size_t* tok_len);
|
||||
|
||||
ase_char_t* ase_awk_strxntok (
|
||||
ase_awk_run_t* run, const ase_char_t* s, ase_size_t len,
|
||||
const ase_char_t* delim, ase_size_t delim_len,
|
||||
ase_char_t** tok, ase_size_t* tok_len);
|
||||
|
||||
ase_char_t* ase_awk_strxntokbyrex (
|
||||
ase_awk_run_t* run, const ase_char_t* s, ase_size_t len,
|
||||
void* rex, ase_char_t** tok, ase_size_t* tok_len, int* errnum);
|
||||
|
||||
|
||||
void* ase_awk_buildrex (
|
||||
ase_awk_t* awk, const ase_char_t* ptn, ase_size_t len, int* errnum);
|
||||
|
||||
int ase_awk_matchrex (
|
||||
ase_awk_t* awk, void* code, int option,
|
||||
const ase_char_t* str, ase_size_t len,
|
||||
const ase_char_t** match_ptr, ase_size_t* match_len, int* errnum);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
208
qse/lib/awk/msw-bcc.mak
Normal file
208
qse/lib/awk/msw-bcc.mak
Normal file
@ -0,0 +1,208 @@
|
||||
NAME = aseawk
|
||||
|
||||
!ifndef MODE
|
||||
MODE = release
|
||||
!endif
|
||||
|
||||
JNI_INC = \
|
||||
-I"$(JAVA_HOME)\include" \
|
||||
-I"$(JAVA_HOME)\include\win32"
|
||||
|
||||
CC = bcc32
|
||||
CXX = bcc32
|
||||
LD = ilink32
|
||||
AR = tlib
|
||||
JAVAC = javac
|
||||
JAR = jar
|
||||
|
||||
|
||||
CFLAGS = -WM -WU -RT- -w -q -I..\..
|
||||
CXXFLAGS = -WM -WU -RT- -w -q -I..\..
|
||||
|
||||
!IF "$(MODE)" == "debug"
|
||||
CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG
|
||||
CXXFLAGS = $(CXXFLAGS) -D_DEBUG -DDEBUG
|
||||
!ELSEIF "$(MODE)" == "release"
|
||||
CFLAGS = $(CFLAGS) -DNDEBUG -O2
|
||||
CXXFLAGS = $(CXXFLAGS) -DNDEBUG -O2
|
||||
!ELSE
|
||||
CFLAGS = $(CFLAGS)
|
||||
CXXFLAGS = $(CXXFLAGS)
|
||||
!ENDIF
|
||||
|
||||
JAVACFLAGS = -classpath ..\.. -Xlint:unchecked
|
||||
|
||||
LDFLAGS = -Tpd -ap -Gn -c -q -L..\$(MODE)\lib
|
||||
STARTUP = c0d32w.obj
|
||||
LIBS = import32.lib cw32mt.lib asecmn.lib aseutl.lib $(NAME).lib
|
||||
|
||||
OUT_DIR = ..\$(MODE)\lib
|
||||
OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib
|
||||
OUT_FILE_JNI = $(OUT_DIR)\$(NAME)_jni.dll
|
||||
OUT_FILE_LIB_CXX = "$(OUT_DIR)\$(NAME)++.lib"
|
||||
OUT_FILE_JAR = $(OUT_DIR)\$(NAME).jar
|
||||
|
||||
TMP_DIR = $(MODE)
|
||||
TMP_DIR_CXX = $(TMP_DIR)\cxx
|
||||
|
||||
OBJ_FILES_LIB = \
|
||||
$(TMP_DIR)\awk.obj \
|
||||
$(TMP_DIR)\err.obj \
|
||||
$(TMP_DIR)\tree.obj \
|
||||
$(TMP_DIR)\tab.obj \
|
||||
$(TMP_DIR)\parse.obj \
|
||||
$(TMP_DIR)\run.obj \
|
||||
$(TMP_DIR)\rec.obj \
|
||||
$(TMP_DIR)\val.obj \
|
||||
$(TMP_DIR)\func.obj \
|
||||
$(TMP_DIR)\misc.obj \
|
||||
$(TMP_DIR)\extio.obj
|
||||
|
||||
OBJ_FILES_JNI = $(TMP_DIR)\jni.obj
|
||||
|
||||
OBJ_FILES_LIB_CXX = \
|
||||
$(TMP_DIR)\cxx\Awk.obj \
|
||||
$(TMP_DIR)\cxx\StdAwk.obj
|
||||
|
||||
OBJ_FILES_JAR = \
|
||||
$(TMP_DIR)\ase\awk\Awk.class \
|
||||
$(TMP_DIR)\ase\awk\StdAwk.class \
|
||||
$(TMP_DIR)\ase\awk\Context.class \
|
||||
$(TMP_DIR)\ase\awk\Clearable.class \
|
||||
$(TMP_DIR)\ase\awk\Argument.class \
|
||||
$(TMP_DIR)\ase\awk\Return.class \
|
||||
$(TMP_DIR)\ase\awk\Extio.class \
|
||||
$(TMP_DIR)\ase\awk\IO.class \
|
||||
$(TMP_DIR)\ase\awk\Console.class \
|
||||
$(TMP_DIR)\ase\awk\File.class \
|
||||
$(TMP_DIR)\ase\awk\Pipe.class \
|
||||
$(TMP_DIR)\ase\awk\Exception.class
|
||||
|
||||
TARGETS = lib
|
||||
!if "$(JAVA_HOME)" != ""
|
||||
TARGETS = $(TARGETS) jnidll jar
|
||||
JNI_INC = -I"$(JAVA_HOME)\include" -I"$(JAVA_HOME)\include\win32"
|
||||
!endif
|
||||
|
||||
all: $(TARGETS)
|
||||
|
||||
lib: $(TMP_DIR) $(OUT_DIR) $(OUT_DIR_CXX) $(OUT_FILE_LIB) $(OUT_FILE_LIB_CXX)
|
||||
|
||||
jnidll: $(TMP_DIR) $(OUT_DIR) $(OUT_FILE_JNI)
|
||||
|
||||
jar: $(OUT_FILE_JAR)
|
||||
|
||||
$(OUT_FILE_LIB): $(OBJ_FILES_LIB)
|
||||
$(AR) $(OUT_FILE_LIB) @&&!
|
||||
+-$(**: = &^
|
||||
+-)
|
||||
!
|
||||
|
||||
$(OUT_FILE_LIB_CXX): $(OBJ_FILES_LIB_CXX)
|
||||
$(AR) $(OUT_FILE_LIB_CXX) @&&!
|
||||
+-$(**: = &^
|
||||
+-)
|
||||
!
|
||||
|
||||
$(OUT_FILE_JNI): $(OUT_FILE_LIB) $(OBJ_FILES_JNI)
|
||||
$(LD) $(LDFLAGS) $(STARTUP) $(OBJ_FILES_JNI),$(OUT_FILE_JNI),,$(LIBS),jni.def,
|
||||
|
||||
$(OUT_FILE_JAR): $(OBJ_FILES_JAR)
|
||||
$(JAR) -Mcvf $(OUT_FILE_JAR) -C $(TMP_DIR) ase
|
||||
|
||||
$(TMP_DIR)\awk.obj: awk.c
|
||||
$(CC) $(CFLAGS) -o$@ -c awk.c
|
||||
|
||||
$(TMP_DIR)\err.obj: err.c
|
||||
$(CC) $(CFLAGS) -o$@ -c err.c
|
||||
|
||||
$(TMP_DIR)\tree.obj: tree.c
|
||||
$(CC) $(CFLAGS) -o$@ -c tree.c
|
||||
|
||||
$(TMP_DIR)\tab.obj: tab.c
|
||||
$(CC) $(CFLAGS) -o$@ -c tab.c
|
||||
|
||||
$(TMP_DIR)\parse.obj: parse.c
|
||||
$(CC) $(CFLAGS) -o$@ -c parse.c
|
||||
|
||||
$(TMP_DIR)\run.obj: run.c
|
||||
$(CC) $(CFLAGS) -o$@ -c run.c
|
||||
|
||||
$(TMP_DIR)\rec.obj: rec.c
|
||||
$(CC) $(CFLAGS) -o$@ -c rec.c
|
||||
|
||||
$(TMP_DIR)\val.obj: val.c
|
||||
$(CC) $(CFLAGS) -o$@ -c val.c
|
||||
|
||||
$(TMP_DIR)\func.obj: func.c
|
||||
$(CC) $(CFLAGS) -o$@ -c func.c
|
||||
|
||||
$(TMP_DIR)\misc.obj: misc.c
|
||||
$(CC) $(CFLAGS) -o$@ -c misc.c
|
||||
|
||||
$(TMP_DIR)\extio.obj: extio.c
|
||||
$(CC) $(CFLAGS) -o$@ -c extio.c
|
||||
|
||||
$(TMP_DIR)\jni.obj: jni.c
|
||||
$(CC) $(CFLAGS) $(JNI_INC) -o$@ -c jni.c
|
||||
|
||||
$(TMP_DIR)\cxx\Awk.obj: Awk.cpp Awk.hpp
|
||||
$(CXX) $(CXXFLAGS) -o$@ -c Awk.cpp
|
||||
|
||||
$(TMP_DIR)\cxx\StdAwk.obj: StdAwk.cpp StdAwk.hpp Awk.hpp
|
||||
$(CXX) $(CXXFLAGS) -o$@ -c StdAwk.cpp
|
||||
|
||||
$(TMP_DIR)\ase\awk\Awk.class: Awk.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Awk.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\StdAwk.class: StdAwk.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) StdAwk.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Context.class: Context.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Context.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Clearable.class: Clearable.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Clearable.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Argument.class: Argument.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Argument.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Return.class: Return.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Return.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Extio.class: Extio.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Extio.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\IO.class: IO.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) IO.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Console.class: Console.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Console.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\File.class: File.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) File.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Pipe.class: Pipe.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Pipe.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Exception.class: Exception.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Exception.java
|
||||
|
||||
$(OUT_DIR):
|
||||
-md $(OUT_DIR)
|
||||
|
||||
$(TMP_DIR):
|
||||
-md $(TMP_DIR)
|
||||
|
||||
$(TMP_DIR_CXX): $(TMP_DIR)
|
||||
-md $(TMP_DIR_CXX)
|
||||
|
||||
clean:
|
||||
-del $(OUT_FILE_LIB)
|
||||
-del $(OUT_FILE_JNI)
|
||||
-del $(OUT_FILE_JAR)
|
||||
-del $(OUT_FILE_LIB_CXX)
|
||||
-del $(OBJ_FILES_LIB)
|
||||
-del $(OBJ_FILES_JNI)
|
||||
-del $(OBJ_FILES_JAR)
|
||||
-del $(OBJ_FILES_LIB_CXX)
|
219
qse/lib/awk/msw-cl.mak
Normal file
219
qse/lib/awk/msw-cl.mak
Normal file
@ -0,0 +1,219 @@
|
||||
NAME = aseawk
|
||||
MODE = release
|
||||
|
||||
|
||||
!if !defined(CPU) || "$(CPU)" == ""
|
||||
CPU = $(PROCESSOR_ARCHITECTURE)
|
||||
!endif
|
||||
|
||||
!if "$(CPU)" == ""
|
||||
CPU = i386
|
||||
!endif
|
||||
|
||||
CC = cl
|
||||
CXX = cl
|
||||
LD = link
|
||||
AR = link
|
||||
JAVAC = javac
|
||||
JAR = jar
|
||||
|
||||
CFLAGS = /nologo /W3 -I..\..
|
||||
CXXFLAGS = /nologo /W3 -I..\..
|
||||
JAVACFLAGS = -classpath ..\.. -Xlint:unchecked
|
||||
|
||||
#LDFLAGS = /subsystem:console
|
||||
LDFLAGS = /subsystem:windows
|
||||
LIBS=
|
||||
|
||||
!IF "$(MODE)" == "debug"
|
||||
CFLAGS = $(CFLAGS) -D_DEBUG -DDEBUG /MTd /Zi
|
||||
CXXFLAGS = $(CXXFLAGS) -D_DEBUG -DDEBUG /MTd /Zi
|
||||
!ELSEIF "$(MODE)" == "release"
|
||||
CFLAGS = $(CFLAGS) -DNDEBUG /MT /O2
|
||||
CXXFLAGS = $(CXXFLAGS) -DNDEBUG /MT /O2
|
||||
!ELSE
|
||||
CFLAGS = $(CFLAGS) /MT
|
||||
CXXFLAGS = $(CXXFLAGS) /MT
|
||||
!ENDIF
|
||||
|
||||
OUT_DIR = ..\$(MODE)\lib
|
||||
OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib
|
||||
OUT_FILE_JNI = $(OUT_DIR)\$(NAME)_jni.dll
|
||||
OUT_FILE_LIB_CXX = $(OUT_DIR)\$(NAME)++.lib
|
||||
OUT_FILE_JAR = $(OUT_DIR)\$(NAME).jar
|
||||
|
||||
TMP_DIR = $(MODE)
|
||||
TMP_DIR_CXX = $(TMP_DIR)\cxx
|
||||
|
||||
OBJ_FILES_LIB = \
|
||||
$(TMP_DIR)\awk.obj \
|
||||
$(TMP_DIR)\err.obj \
|
||||
$(TMP_DIR)\tree.obj \
|
||||
$(TMP_DIR)\tab.obj \
|
||||
$(TMP_DIR)\parse.obj \
|
||||
$(TMP_DIR)\run.obj \
|
||||
$(TMP_DIR)\rec.obj \
|
||||
$(TMP_DIR)\val.obj \
|
||||
$(TMP_DIR)\func.obj \
|
||||
$(TMP_DIR)\misc.obj \
|
||||
$(TMP_DIR)\extio.obj
|
||||
|
||||
OBJ_FILES_JNI = $(TMP_DIR)\jni.obj
|
||||
|
||||
OBJ_FILES_LIB_CXX = \
|
||||
$(TMP_DIR)\cxx\Awk.obj \
|
||||
$(TMP_DIR)\cxx\StdAwk.obj
|
||||
|
||||
OBJ_FILES_JAR = \
|
||||
$(TMP_DIR)\ase\awk\Awk.class \
|
||||
$(TMP_DIR)\ase\awk\StdAwk.class \
|
||||
$(TMP_DIR)\ase\awk\Context.class \
|
||||
$(TMP_DIR)\ase\awk\Clearable.class \
|
||||
$(TMP_DIR)\ase\awk\Argument.class \
|
||||
$(TMP_DIR)\ase\awk\Return.class \
|
||||
$(TMP_DIR)\ase\awk\Extio.class \
|
||||
$(TMP_DIR)\ase\awk\IO.class \
|
||||
$(TMP_DIR)\ase\awk\Console.class \
|
||||
$(TMP_DIR)\ase\awk\File.class \
|
||||
$(TMP_DIR)\ase\awk\Pipe.class \
|
||||
$(TMP_DIR)\ase\awk\Exception.class
|
||||
|
||||
LIBS_JNIDLL=user32.lib $(OUT_FILE_LIB) asecmn.lib aseutl.lib
|
||||
|
||||
!if "$(CPU)" == "IA64" || "$(CPU)" == "AMD64"
|
||||
# comment out the following line if you encounter this link error.
|
||||
# LINK : fatal error LNK1181: cannot open input file 'bufferoverflowu.lib'
|
||||
LIBS_JNIDLL = $(LIBS_JNIDLL) bufferoverflowu.lib
|
||||
!endif
|
||||
|
||||
TARGETS = lib
|
||||
!if "$(JAVA_HOME)" != ""
|
||||
TARGETS = $(TARGETS) jnidll jar
|
||||
JNI_INC = -I"$(JAVA_HOME)\include" -I"$(JAVA_HOME)\include\win32"
|
||||
!endif
|
||||
|
||||
all: $(TARGETS)
|
||||
|
||||
lib: $(OUT_FILE_LIB) $(OUT_FILE_LIB_CXX)
|
||||
|
||||
jnidll: $(OUT_FILE_JNI)
|
||||
|
||||
jar: $(OUT_FILE_JAR)
|
||||
|
||||
$(OUT_FILE_LIB): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_LIB)
|
||||
$(AR) /lib @<<
|
||||
/nologo /out:$(OUT_FILE_LIB) $(OBJ_FILES_LIB)
|
||||
<<
|
||||
|
||||
$(OUT_FILE_LIB_CXX): $(TMP_DIR_CXX) $(OUT_FILE_LIB) $(OBJ_FILES_LIB_CXX)
|
||||
$(AR) /lib @<<
|
||||
/nologo /out:$(OUT_FILE_LIB_CXX) $(OBJ_FILES_LIB_CXX)
|
||||
<<
|
||||
|
||||
$(OUT_FILE_JNI): $(OUT_FILE_LIB) $(OBJ_FILES_JNI)
|
||||
$(LD) /dll /def:jni.def $(LDFLAGS) /release @<<
|
||||
/nologo /out:$(OUT_FILE_JNI) $(OBJ_FILES_JNI) /libpath:../$(MODE)/lib /implib:tmp.lib $(LIBS_JNIDLL)
|
||||
<<
|
||||
del tmp.lib tmp.exp
|
||||
|
||||
|
||||
$(OUT_FILE_JAR): $(OBJ_FILES_JAR)
|
||||
$(JAR) -Mcvf $(OUT_FILE_JAR) -C $(TMP_DIR) ase
|
||||
|
||||
$(TMP_DIR)\awk.obj: awk.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c awk.c
|
||||
|
||||
$(TMP_DIR)\err.obj: err.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c err.c
|
||||
|
||||
$(TMP_DIR)\tree.obj: tree.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c tree.c
|
||||
|
||||
$(TMP_DIR)\tab.obj: tab.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c tab.c
|
||||
|
||||
$(TMP_DIR)\parse.obj: parse.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c parse.c
|
||||
|
||||
$(TMP_DIR)\run.obj: run.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c run.c
|
||||
|
||||
$(TMP_DIR)\rec.obj: rec.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c rec.c
|
||||
|
||||
$(TMP_DIR)\val.obj: val.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c val.c
|
||||
|
||||
$(TMP_DIR)\func.obj: func.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c func.c
|
||||
|
||||
$(TMP_DIR)\misc.obj: misc.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c misc.c
|
||||
|
||||
$(TMP_DIR)\extio.obj: extio.c
|
||||
$(CC) $(CFLAGS) /Fo$@ /c extio.c
|
||||
|
||||
$(TMP_DIR)\jni.obj: jni.c
|
||||
$(CC) $(CFLAGS) $(JNI_INC) /Fo$@ /c jni.c
|
||||
|
||||
$(TMP_DIR)\cxx\Awk.obj: Awk.cpp Awk.hpp
|
||||
$(CXX) $(CXXFLAGS) /Fo$@ /c Awk.cpp
|
||||
|
||||
$(TMP_DIR)\cxx\StdAwk.obj: StdAwk.cpp StdAwk.hpp Awk.hpp
|
||||
$(CXX) $(CXXFLAGS) /Fo$@ /c StdAwk.cpp
|
||||
|
||||
$(TMP_DIR)\ase\awk\Awk.class: Awk.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Awk.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\StdAwk.class: StdAwk.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) StdAwk.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Context.class: Context.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Context.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Clearable.class: Clearable.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Clearable.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Argument.class: Argument.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Argument.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Return.class: Return.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Return.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Extio.class: Extio.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Extio.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\IO.class: IO.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) IO.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Console.class: Console.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Console.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\File.class: File.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) File.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Pipe.class: Pipe.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Pipe.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Exception.class: Exception.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Exception.java
|
||||
|
||||
$(OUT_DIR):
|
||||
-md $(OUT_DIR)
|
||||
|
||||
$(TMP_DIR):
|
||||
-md $(TMP_DIR)
|
||||
|
||||
$(TMP_DIR_CXX): $(TMP_DIR)
|
||||
-md $(TMP_DIR_CXX)
|
||||
|
||||
clean:
|
||||
-del $(OUT_FILE_LIB)
|
||||
-del $(OUT_FILE_JNI)
|
||||
-del $(OUT_FILE_JAR)
|
||||
-del $(OUT_FILE_LIB_CXX)
|
||||
-del $(OBJ_FILES_LIB)
|
||||
-del $(OBJ_FILES_JNI)
|
||||
-del $(OBJ_FILES_JAR)
|
||||
-del $(OBJ_FILES_LIB_CXX)
|
||||
|
155
qse/lib/awk/msw-dmc.mak
Normal file
155
qse/lib/awk/msw-dmc.mak
Normal file
@ -0,0 +1,155 @@
|
||||
NAME = aseawk
|
||||
MODE = release
|
||||
|
||||
JNI_INC = \
|
||||
-I"$(JAVA_HOME)\include" \
|
||||
-I"$(JAVA_HOME)\include\win32"
|
||||
|
||||
CC = dmc
|
||||
LD = dmc
|
||||
AR = lib
|
||||
JAVAC = javac
|
||||
JAR = jar
|
||||
|
||||
CFLAGS = -mn -I..\.. -DUNICODE -D_UNICODE #-D_DEBUG
|
||||
JAVACFLAGS = -classpath ..\.. -Xlint:unchecked
|
||||
|
||||
OUT_DIR = ..\$(MODE)\lib
|
||||
OUT_FILE_LIB = $(OUT_DIR)\$(NAME).lib
|
||||
OUT_FILE_JNI = $(OUT_DIR)\$(NAME)_jni.dll
|
||||
OUT_FILE_JAR = $(OUT_DIR)\$(NAME).jar
|
||||
|
||||
TMP_DIR = $(MODE)
|
||||
|
||||
OBJ_FILES_LIB = \
|
||||
$(TMP_DIR)\awk.obj \
|
||||
$(TMP_DIR)\err.obj \
|
||||
$(TMP_DIR)\tree.obj \
|
||||
$(TMP_DIR)\tab.obj \
|
||||
$(TMP_DIR)\parse.obj \
|
||||
$(TMP_DIR)\run.obj \
|
||||
$(TMP_DIR)\rec.obj \
|
||||
$(TMP_DIR)\val.obj \
|
||||
$(TMP_DIR)\func.obj \
|
||||
$(TMP_DIR)\misc.obj \
|
||||
$(TMP_DIR)\extio.obj
|
||||
|
||||
OBJ_FILES_JNI = $(TMP_DIR)\jni.obj
|
||||
|
||||
OBJ_FILES_JAR = \
|
||||
$(TMP_DIR)\ase\awk\Awk.class \
|
||||
$(TMP_DIR)\ase\awk\StdAwk.class \
|
||||
$(TMP_DIR)\ase\awk\Context.class \
|
||||
$(TMP_DIR)\ase\awk\Clearable.class \
|
||||
$(TMP_DIR)\ase\awk\Argument.class \
|
||||
$(TMP_DIR)\ase\awk\Return.class
|
||||
$(TMP_DIR)\ase\awk\Extio.class \
|
||||
$(TMP_DIR)\ase\awk\IO.class \
|
||||
$(TMP_DIR)\ase\awk\Console.class \
|
||||
$(TMP_DIR)\ase\awk\File.class \
|
||||
$(TMP_DIR)\ase\awk\Pipe.class \
|
||||
$(TMP_DIR)\ase\awk\Exception.class
|
||||
|
||||
all: lib
|
||||
|
||||
lib: $(OUT_FILE_LIB)
|
||||
|
||||
jnidll: $(OUT_FILE_JNI)
|
||||
|
||||
jar: $(OUT_FILE_JAR)
|
||||
|
||||
$(OUT_FILE_LIB): $(TMP_DIR) $(OUT_DIR) $(OBJ_FILES_LIB)
|
||||
$(AR) -c $(OUT_FILE_LIB) $(OBJ_FILES_LIB)
|
||||
|
||||
$(OUT_FILE_JNI): $(OUT_FILE_LIB) $(OBJ_FILES_JNI)
|
||||
$(LD) -WD -o$(OUT_FILE_JNI) $(OBJ_FILES_JNI) $(OUT_FILE_LIB) $(OUT_DIR)\asecmn.lib $(OUT_DIR)\aseutl.lib kernel32.lib jni-dmc.def
|
||||
|
||||
$(OUT_FILE_JAR): $(OBJ_FILES_JAR)
|
||||
$(JAR) -Mcvf $(OUT_FILE_JAR) -C $(TMP_DIR) ase
|
||||
|
||||
$(TMP_DIR)\awk.obj: awk.c
|
||||
$(CC) $(CFLAGS) -o$@ -c awk.c
|
||||
|
||||
$(TMP_DIR)\err.obj: err.c
|
||||
$(CC) $(CFLAGS) -o$@ -c err.c
|
||||
|
||||
$(TMP_DIR)\tree.obj: tree.c
|
||||
$(CC) $(CFLAGS) -o$@ -c tree.c
|
||||
|
||||
$(TMP_DIR)\tab.obj: tab.c
|
||||
$(CC) $(CFLAGS) -o$@ -c tab.c
|
||||
|
||||
$(TMP_DIR)\parse.obj: parse.c
|
||||
$(CC) $(CFLAGS) -o$@ -c parse.c
|
||||
|
||||
$(TMP_DIR)\run.obj: run.c
|
||||
$(CC) $(CFLAGS) -o$@ -c run.c
|
||||
|
||||
$(TMP_DIR)\rec.obj: rec.c
|
||||
$(CC) $(CFLAGS) -o$@ -c rec.c
|
||||
|
||||
$(TMP_DIR)\val.obj: val.c
|
||||
$(CC) $(CFLAGS) -o$@ -c val.c
|
||||
|
||||
$(TMP_DIR)\func.obj: func.c
|
||||
$(CC) $(CFLAGS) -o$@ -c func.c
|
||||
|
||||
$(TMP_DIR)\misc.obj: misc.c
|
||||
$(CC) $(CFLAGS) -o$@ -c misc.c
|
||||
|
||||
$(TMP_DIR)\extio.obj: extio.c
|
||||
$(CC) $(CFLAGS) -o$@ -c extio.c
|
||||
|
||||
$(TMP_DIR)\jni.obj: jni.c
|
||||
$(CC) $(CFLAGS) $(JNI_INC) -o$@ -c jni.c
|
||||
|
||||
$(TMP_DIR)\ase\awk\Awk.class: Awk.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Awk.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\StdAwk.class: StdAwk.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) StdAwk.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Context.class: Context.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Context.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Clearable.class: Clearable.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Clearable.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Argument.class: Argument.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Argument.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Return.class: Return.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Return.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Extio.class: Extio.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Extio.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\IO.class: IO.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) IO.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Console.class: Console.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Console.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\File.class: File.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) File.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Pipe.class: Pipe.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Pipe.java
|
||||
|
||||
$(TMP_DIR)\ase\awk\Exception.class: Exception.java
|
||||
$(JAVAC) $(JAVACFLAGS) -d $(TMP_DIR) Exception.java
|
||||
|
||||
$(OUT_DIR):
|
||||
md $(OUT_DIR)
|
||||
|
||||
$(TMP_DIR):
|
||||
md $(TMP_DIR)
|
||||
|
||||
clean:
|
||||
del $(OUT_FILE_LIB)
|
||||
del $(OUT_FILE_JNI)
|
||||
del $(OUT_FILE_JAR)
|
||||
del $(OBJ_FILES_LIB)
|
||||
del $(OBJ_FILES_JNI)
|
||||
del $(OBJ_FILES_JAR)
|
||||
|
5884
qse/lib/awk/parse.c
Normal file
5884
qse/lib/awk/parse.c
Normal file
File diff suppressed because it is too large
Load Diff
57
qse/lib/awk/parse.h
Normal file
57
qse/lib/awk/parse.h
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
* $Id: parse.h 363 2008-09-04 10:58:08Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#ifndef _ASE_LIB_AWK_PARSE_H_
|
||||
#define _ASE_LIB_AWK_PARSE_H_
|
||||
|
||||
/* these enums should match kwtab in parse.c */
|
||||
enum kw_t
|
||||
{
|
||||
KW_IN,
|
||||
KW_BEGIN,
|
||||
KW_END,
|
||||
KW_FUNCTION,
|
||||
KW_LOCAL,
|
||||
KW_GLOBAL,
|
||||
KW_IF,
|
||||
KW_ELSE,
|
||||
KW_WHILE,
|
||||
KW_FOR,
|
||||
KW_DO,
|
||||
KW_BREAK,
|
||||
KW_CONTINUE,
|
||||
KW_RETURN,
|
||||
KW_EXIT,
|
||||
KW_NEXT,
|
||||
KW_NEXTFILE,
|
||||
KW_NEXTOFILE,
|
||||
KW_DELETE,
|
||||
KW_RESET,
|
||||
KW_PRINT,
|
||||
KW_PRINTF,
|
||||
KW_GETLINE,
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int ase_awk_putsrcstr (ase_awk_t* awk, const ase_char_t* str);
|
||||
int ase_awk_putsrcstrx (
|
||||
ase_awk_t* awk, const ase_char_t* str, ase_size_t len);
|
||||
|
||||
const ase_char_t* ase_awk_getglobalname (
|
||||
ase_awk_t* awk, ase_size_t idx, ase_size_t* len);
|
||||
ase_cstr_t* ase_awk_getkw (ase_awk_t* awk, int id, ase_cstr_t* s);
|
||||
|
||||
|
||||
int ase_awk_initglobals (ase_awk_t* awk);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
442
qse/lib/awk/rec.c
Normal file
442
qse/lib/awk/rec.c
Normal file
@ -0,0 +1,442 @@
|
||||
/*
|
||||
* $Id: rec.c 372 2008-09-23 09:51:24Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#include "awk.h"
|
||||
|
||||
static int split_record (ase_awk_run_t* run);
|
||||
static int recomp_record_fields (
|
||||
ase_awk_run_t* run, ase_size_t lv,
|
||||
const ase_char_t* str, ase_size_t len);
|
||||
|
||||
int ase_awk_setrec (
|
||||
ase_awk_run_t* run, ase_size_t idx,
|
||||
const ase_char_t* str, ase_size_t len)
|
||||
{
|
||||
ase_awk_val_t* v;
|
||||
|
||||
if (idx == 0)
|
||||
{
|
||||
if (str == ASE_STR_PTR(&run->inrec.line) &&
|
||||
len == ASE_STR_LEN(&run->inrec.line))
|
||||
{
|
||||
if (ase_awk_clrrec (run, ASE_TRUE) == -1) return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ase_awk_clrrec (run, ASE_FALSE) == -1) return -1;
|
||||
|
||||
if (ase_str_ncpy (&run->inrec.line, str, len) == (ase_size_t)-1)
|
||||
{
|
||||
ase_awk_clrrec (run, ASE_FALSE);
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
v = ase_awk_makestrval (run, str, len);
|
||||
if (v == ASE_NULL)
|
||||
{
|
||||
ase_awk_clrrec (run, ASE_FALSE);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ASE_ASSERT (run->inrec.d0->type == ASE_AWK_VAL_NIL);
|
||||
/* d0 should be cleared before the next line is reached
|
||||
* as it doesn't call ase_awk_refdownval on run->inrec.d0 */
|
||||
run->inrec.d0 = v;
|
||||
ase_awk_refupval (run, v);
|
||||
|
||||
if (split_record (run) == -1)
|
||||
{
|
||||
ase_awk_clrrec (run, ASE_FALSE);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (recomp_record_fields (run, idx, str, len) == -1)
|
||||
{
|
||||
ase_awk_clrrec (run, ASE_FALSE);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* recompose $0 */
|
||||
v = ase_awk_makestrval (run,
|
||||
ASE_STR_PTR(&run->inrec.line),
|
||||
ASE_STR_LEN(&run->inrec.line));
|
||||
if (v == ASE_NULL)
|
||||
{
|
||||
ase_awk_clrrec (run, ASE_FALSE);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ase_awk_refdownval (run, run->inrec.d0);
|
||||
run->inrec.d0 = v;
|
||||
ase_awk_refupval (run, v);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int split_record (ase_awk_run_t* run)
|
||||
{
|
||||
ase_char_t* p, * tok;
|
||||
ase_size_t len, tok_len, nflds;
|
||||
ase_awk_val_t* v, * fs;
|
||||
ase_char_t* fs_ptr, * fs_free;
|
||||
ase_size_t fs_len;
|
||||
int errnum;
|
||||
|
||||
/* inrec should be cleared before split_record is called */
|
||||
ASE_ASSERT (run->inrec.nflds == 0);
|
||||
|
||||
/* get FS */
|
||||
fs = ase_awk_getglobal (run, ASE_AWK_GLOBAL_FS);
|
||||
if (fs->type == ASE_AWK_VAL_NIL)
|
||||
{
|
||||
fs_ptr = ASE_T(" ");
|
||||
fs_len = 1;
|
||||
fs_free = ASE_NULL;
|
||||
}
|
||||
else if (fs->type == ASE_AWK_VAL_STR)
|
||||
{
|
||||
fs_ptr = ((ase_awk_val_str_t*)fs)->buf;
|
||||
fs_len = ((ase_awk_val_str_t*)fs)->len;
|
||||
fs_free = ASE_NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
fs_ptr = ase_awk_valtostr (
|
||||
run, fs, ASE_AWK_VALTOSTR_CLEAR, ASE_NULL, &fs_len);
|
||||
if (fs_ptr == ASE_NULL) return -1;
|
||||
fs_free = fs_ptr;
|
||||
}
|
||||
|
||||
/* scan the input record to count the fields */
|
||||
p = ASE_STR_PTR(&run->inrec.line);
|
||||
len = ASE_STR_LEN(&run->inrec.line);
|
||||
|
||||
nflds = 0;
|
||||
while (p != ASE_NULL)
|
||||
{
|
||||
if (fs_len <= 1)
|
||||
{
|
||||
p = ase_awk_strxntok (run,
|
||||
p, len, fs_ptr, fs_len, &tok, &tok_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
p = ase_awk_strxntokbyrex (run, p, len,
|
||||
run->global.fs, &tok, &tok_len, &errnum);
|
||||
if (p == ASE_NULL && errnum != ASE_AWK_ENOERR)
|
||||
{
|
||||
if (fs_free != ASE_NULL)
|
||||
ASE_AWK_FREE (run->awk, fs_free);
|
||||
ase_awk_setrunerror (run, errnum, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (nflds == 0 && p == ASE_NULL && tok_len == 0)
|
||||
{
|
||||
/* there are no fields. it can just return here
|
||||
* as ase_awk_clrrec has been called before this */
|
||||
if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ASE_ASSERT ((tok != ASE_NULL && tok_len > 0) || tok_len == 0);
|
||||
|
||||
nflds++;
|
||||
len = ASE_STR_LEN(&run->inrec.line) -
|
||||
(p - ASE_STR_PTR(&run->inrec.line));
|
||||
}
|
||||
|
||||
/* allocate space */
|
||||
if (nflds > run->inrec.maxflds)
|
||||
{
|
||||
void* tmp = ASE_AWK_ALLOC (
|
||||
run->awk, ASE_SIZEOF(*run->inrec.flds) * nflds);
|
||||
if (tmp == ASE_NULL)
|
||||
{
|
||||
if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free);
|
||||
ase_awk_setrunerror (run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (run->inrec.flds != ASE_NULL)
|
||||
ASE_AWK_FREE (run->awk, run->inrec.flds);
|
||||
run->inrec.flds = tmp;
|
||||
run->inrec.maxflds = nflds;
|
||||
}
|
||||
|
||||
/* scan again and split it */
|
||||
p = ASE_STR_PTR(&run->inrec.line);
|
||||
len = ASE_STR_LEN(&run->inrec.line);
|
||||
|
||||
while (p != ASE_NULL)
|
||||
{
|
||||
if (fs_len <= 1)
|
||||
{
|
||||
p = ase_awk_strxntok (
|
||||
run, p, len, fs_ptr, fs_len, &tok, &tok_len);
|
||||
}
|
||||
else
|
||||
{
|
||||
p = ase_awk_strxntokbyrex (run, p, len,
|
||||
run->global.fs, &tok, &tok_len, &errnum);
|
||||
if (p == ASE_NULL && errnum != ASE_AWK_ENOERR)
|
||||
{
|
||||
if (fs_free != ASE_NULL)
|
||||
ASE_AWK_FREE (run->awk, fs_free);
|
||||
ase_awk_setrunerror (run, errnum, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
ASE_ASSERT ((tok != ASE_NULL && tok_len > 0) || tok_len == 0);
|
||||
|
||||
run->inrec.flds[run->inrec.nflds].ptr = tok;
|
||||
run->inrec.flds[run->inrec.nflds].len = tok_len;
|
||||
run->inrec.flds[run->inrec.nflds].val =
|
||||
ase_awk_makestrval (run, tok, tok_len);
|
||||
|
||||
if (run->inrec.flds[run->inrec.nflds].val == ASE_NULL)
|
||||
{
|
||||
if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ase_awk_refupval (run, run->inrec.flds[run->inrec.nflds].val);
|
||||
run->inrec.nflds++;
|
||||
|
||||
len = ASE_STR_LEN(&run->inrec.line) -
|
||||
(p - ASE_STR_PTR(&run->inrec.line));
|
||||
}
|
||||
|
||||
if (fs_free != ASE_NULL) ASE_AWK_FREE (run->awk, fs_free);
|
||||
|
||||
/* set the number of fields */
|
||||
v = ase_awk_makeintval (run, (ase_long_t)nflds);
|
||||
if (v == ASE_NULL) return -1;
|
||||
|
||||
ase_awk_refupval (run, v);
|
||||
if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_NF, v) == -1)
|
||||
{
|
||||
ase_awk_refdownval (run, v);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ase_awk_refdownval (run, v);
|
||||
ASE_ASSERT (nflds == run->inrec.nflds);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ase_awk_clrrec (ase_awk_run_t* run, ase_bool_t skip_inrec_line)
|
||||
{
|
||||
ase_size_t i;
|
||||
int n = 0;
|
||||
|
||||
if (run->inrec.d0 != ase_awk_val_nil)
|
||||
{
|
||||
ase_awk_refdownval (run, run->inrec.d0);
|
||||
run->inrec.d0 = ase_awk_val_nil;
|
||||
}
|
||||
|
||||
if (run->inrec.nflds > 0)
|
||||
{
|
||||
ASE_ASSERT (run->inrec.flds != ASE_NULL);
|
||||
|
||||
for (i = 0; i < run->inrec.nflds; i++)
|
||||
{
|
||||
ASE_ASSERT (run->inrec.flds[i].val != ASE_NULL);
|
||||
ase_awk_refdownval (run, run->inrec.flds[i].val);
|
||||
}
|
||||
run->inrec.nflds = 0;
|
||||
|
||||
if (ase_awk_setglobal (
|
||||
run, ASE_AWK_GLOBAL_NF, ase_awk_val_zero) == -1)
|
||||
{
|
||||
/* first of all, this should never happen.
|
||||
* if it happened, it would return an error
|
||||
* after all the clearance tasks */
|
||||
n = -1;
|
||||
}
|
||||
}
|
||||
|
||||
ASE_ASSERT (run->inrec.nflds == 0);
|
||||
if (!skip_inrec_line) ase_str_clear (&run->inrec.line);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
static int recomp_record_fields (
|
||||
ase_awk_run_t* run, ase_size_t lv,
|
||||
const ase_char_t* str, ase_size_t len)
|
||||
{
|
||||
ase_awk_val_t* v;
|
||||
ase_size_t max, i, nflds;
|
||||
|
||||
/* recomposes the record and the fields when $N has been assigned
|
||||
* a new value and recomputes NF accordingly */
|
||||
|
||||
ASE_ASSERT (lv > 0);
|
||||
max = (lv > run->inrec.nflds)? lv: run->inrec.nflds;
|
||||
|
||||
nflds = run->inrec.nflds;
|
||||
if (max > run->inrec.maxflds)
|
||||
{
|
||||
void* tmp;
|
||||
|
||||
/* if the given field number is greater than the maximum
|
||||
* number of fields that the current record can hold,
|
||||
* the field spaces are resized */
|
||||
|
||||
if (run->awk->mmgr->realloc != ASE_NULL)
|
||||
{
|
||||
tmp = ASE_AWK_REALLOC (
|
||||
run->awk, run->inrec.flds,
|
||||
ASE_SIZEOF(*run->inrec.flds) * max);
|
||||
if (tmp == ASE_NULL)
|
||||
{
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
tmp = ASE_AWK_ALLOC (
|
||||
run->awk, ASE_SIZEOF(*run->inrec.flds) * max);
|
||||
if (tmp == ASE_NULL)
|
||||
{
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
if (run->inrec.flds != ASE_NULL)
|
||||
{
|
||||
ASE_MEMCPY (tmp, run->inrec.flds,
|
||||
ASE_SIZEOF(*run->inrec.flds)*run->inrec.maxflds);
|
||||
ASE_AWK_FREE (run->awk, run->inrec.flds);
|
||||
}
|
||||
}
|
||||
|
||||
run->inrec.flds = tmp;
|
||||
run->inrec.maxflds = max;
|
||||
}
|
||||
|
||||
lv = lv - 1; /* adjust the value to 0-based index */
|
||||
|
||||
ase_str_clear (&run->inrec.line);
|
||||
|
||||
for (i = 0; i < max; i++)
|
||||
{
|
||||
if (i > 0)
|
||||
{
|
||||
if (ase_str_ncat (
|
||||
&run->inrec.line,
|
||||
run->global.ofs.ptr,
|
||||
run->global.ofs.len) == (ase_size_t)-1)
|
||||
{
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (i == lv)
|
||||
{
|
||||
ase_awk_val_t* tmp;
|
||||
|
||||
run->inrec.flds[i].ptr =
|
||||
ASE_STR_PTR(&run->inrec.line) +
|
||||
ASE_STR_LEN(&run->inrec.line);
|
||||
run->inrec.flds[i].len = len;
|
||||
|
||||
if (ase_str_ncat (
|
||||
&run->inrec.line, str, len) == (ase_size_t)-1)
|
||||
{
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
tmp = ase_awk_makestrval (run, str,len);
|
||||
if (tmp == ASE_NULL) return -1;
|
||||
|
||||
if (i < nflds)
|
||||
ase_awk_refdownval (run, run->inrec.flds[i].val);
|
||||
else run->inrec.nflds++;
|
||||
|
||||
run->inrec.flds[i].val = tmp;
|
||||
ase_awk_refupval (run, tmp);
|
||||
}
|
||||
else if (i >= nflds)
|
||||
{
|
||||
run->inrec.flds[i].ptr =
|
||||
ASE_STR_PTR(&run->inrec.line) +
|
||||
ASE_STR_LEN(&run->inrec.line);
|
||||
run->inrec.flds[i].len = 0;
|
||||
|
||||
if (ase_str_cat (
|
||||
&run->inrec.line, ASE_T("")) == (ase_size_t)-1)
|
||||
{
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* ase_awk_refdownval should not be called over
|
||||
* run->inrec.flds[i].val as it is not initialized
|
||||
* to any valid values */
|
||||
/*ase_awk_refdownval (run, run->inrec.flds[i].val);*/
|
||||
run->inrec.flds[i].val = ase_awk_val_zls;
|
||||
ase_awk_refupval (run, ase_awk_val_zls);
|
||||
run->inrec.nflds++;
|
||||
}
|
||||
else
|
||||
{
|
||||
ase_awk_val_str_t* tmp;
|
||||
|
||||
tmp = (ase_awk_val_str_t*)run->inrec.flds[i].val;
|
||||
|
||||
run->inrec.flds[i].ptr =
|
||||
ASE_STR_PTR(&run->inrec.line) +
|
||||
ASE_STR_LEN(&run->inrec.line);
|
||||
run->inrec.flds[i].len = tmp->len;
|
||||
|
||||
if (ase_str_ncat (&run->inrec.line,
|
||||
tmp->buf, tmp->len) == (ase_size_t)-1)
|
||||
{
|
||||
ase_awk_setrunerror (
|
||||
run, ASE_AWK_ENOMEM, 0, ASE_NULL, 0);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
v = ase_awk_getglobal (run, ASE_AWK_GLOBAL_NF);
|
||||
ASE_ASSERT (v->type == ASE_AWK_VAL_INT);
|
||||
|
||||
if (((ase_awk_val_int_t*)v)->val != max)
|
||||
{
|
||||
v = ase_awk_makeintval (run, (ase_long_t)max);
|
||||
if (v == ASE_NULL) return -1;
|
||||
|
||||
ase_awk_refupval (run, v);
|
||||
if (ase_awk_setglobal (run, ASE_AWK_GLOBAL_NF, v) == -1)
|
||||
{
|
||||
ase_awk_refdownval (run, v);
|
||||
return -1;
|
||||
}
|
||||
ase_awk_refdownval (run, v);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
7279
qse/lib/awk/run.c
Normal file
7279
qse/lib/awk/run.c
Normal file
File diff suppressed because it is too large
Load Diff
95
qse/lib/awk/run.h
Normal file
95
qse/lib/awk/run.h
Normal file
@ -0,0 +1,95 @@
|
||||
/*
|
||||
* $Id: run.h 363 2008-09-04 10:58:08Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#ifndef _ASE_LIB_AWK_RUN_H_
|
||||
#define _ASE_LIB_AWK_RUN_H_
|
||||
|
||||
enum ase_awk_assop_type_t
|
||||
{
|
||||
/* if you change this, you have to change assop_str in tree.c.
|
||||
* synchronize it with binop_func of eval_assignment in run.c */
|
||||
ASE_AWK_ASSOP_NONE,
|
||||
ASE_AWK_ASSOP_PLUS, /* += */
|
||||
ASE_AWK_ASSOP_MINUS, /* -= */
|
||||
ASE_AWK_ASSOP_MUL, /* *= */
|
||||
ASE_AWK_ASSOP_DIV, /* /= */
|
||||
ASE_AWK_ASSOP_IDIV, /* //= */
|
||||
ASE_AWK_ASSOP_MOD, /* %= */
|
||||
ASE_AWK_ASSOP_EXP, /* **= */
|
||||
ASE_AWK_ASSOP_RSHIFT, /* >>= */
|
||||
ASE_AWK_ASSOP_LSHIFT, /* <<= */
|
||||
ASE_AWK_ASSOP_BAND, /* &= */
|
||||
ASE_AWK_ASSOP_BXOR, /* ^= */
|
||||
ASE_AWK_ASSOP_BOR /* |= */
|
||||
};
|
||||
|
||||
enum ase_awk_binop_type_t
|
||||
{
|
||||
/* if you change this, you have to change
|
||||
* binop_str in tree.c and binop_func in run.c accordingly. */
|
||||
ASE_AWK_BINOP_LOR,
|
||||
ASE_AWK_BINOP_LAND,
|
||||
ASE_AWK_BINOP_IN,
|
||||
|
||||
ASE_AWK_BINOP_BOR,
|
||||
ASE_AWK_BINOP_BXOR,
|
||||
ASE_AWK_BINOP_BAND,
|
||||
|
||||
ASE_AWK_BINOP_EQ,
|
||||
ASE_AWK_BINOP_NE,
|
||||
ASE_AWK_BINOP_GT,
|
||||
ASE_AWK_BINOP_GE,
|
||||
ASE_AWK_BINOP_LT,
|
||||
ASE_AWK_BINOP_LE,
|
||||
|
||||
ASE_AWK_BINOP_LSHIFT,
|
||||
ASE_AWK_BINOP_RSHIFT,
|
||||
|
||||
ASE_AWK_BINOP_PLUS,
|
||||
ASE_AWK_BINOP_MINUS,
|
||||
ASE_AWK_BINOP_MUL,
|
||||
ASE_AWK_BINOP_DIV,
|
||||
ASE_AWK_BINOP_IDIV,
|
||||
ASE_AWK_BINOP_MOD,
|
||||
ASE_AWK_BINOP_EXP,
|
||||
|
||||
ASE_AWK_BINOP_CONCAT,
|
||||
ASE_AWK_BINOP_MA,
|
||||
ASE_AWK_BINOP_NM
|
||||
};
|
||||
|
||||
enum ase_awk_unrop_type_t
|
||||
{
|
||||
/* if you change this, you have to change
|
||||
* __unrop_str in tree.c accordingly. */
|
||||
ASE_AWK_UNROP_PLUS,
|
||||
ASE_AWK_UNROP_MINUS,
|
||||
ASE_AWK_UNROP_LNOT,
|
||||
ASE_AWK_UNROP_BNOT
|
||||
};
|
||||
|
||||
enum ase_awk_incop_type_t
|
||||
{
|
||||
/* if you change this, you have to change
|
||||
* __incop_str in tree.c accordingly. */
|
||||
ASE_AWK_INCOP_PLUS,
|
||||
ASE_AWK_INCOP_MINUS
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
ase_char_t* ase_awk_format (
|
||||
ase_awk_run_t* run, ase_str_t* out, ase_str_t* fbu,
|
||||
const ase_char_t* fmt, ase_size_t fmt_len,
|
||||
ase_size_t nargs_on_stack, ase_awk_nde_t* args, ase_size_t* len);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
1102
qse/lib/awk/std.c
Normal file
1102
qse/lib/awk/std.c
Normal file
File diff suppressed because it is too large
Load Diff
1288
qse/lib/awk/tree.c
Normal file
1288
qse/lib/awk/tree.c
Normal file
File diff suppressed because it is too large
Load Diff
406
qse/lib/awk/tree.h
Normal file
406
qse/lib/awk/tree.h
Normal file
@ -0,0 +1,406 @@
|
||||
/*
|
||||
* $Id: tree.h 381 2008-09-24 11:07:24Z baconevi $
|
||||
*
|
||||
* {License}
|
||||
*/
|
||||
|
||||
#ifndef _ASE_LIB_AWK_TREE_H_
|
||||
#define _ASE_LIB_AWK_TREE_H_
|
||||
|
||||
enum ase_awk_nde_type_t
|
||||
{
|
||||
ASE_AWK_NDE_NULL,
|
||||
|
||||
/* statement */
|
||||
ASE_AWK_NDE_BLK,
|
||||
ASE_AWK_NDE_IF,
|
||||
ASE_AWK_NDE_WHILE,
|
||||
ASE_AWK_NDE_DOWHILE,
|
||||
ASE_AWK_NDE_FOR,
|
||||
ASE_AWK_NDE_FOREACH,
|
||||
ASE_AWK_NDE_BREAK,
|
||||
ASE_AWK_NDE_CONTINUE,
|
||||
ASE_AWK_NDE_RETURN,
|
||||
ASE_AWK_NDE_EXIT,
|
||||
ASE_AWK_NDE_NEXT,
|
||||
ASE_AWK_NDE_NEXTFILE,
|
||||
ASE_AWK_NDE_DELETE,
|
||||
ASE_AWK_NDE_RESET,
|
||||
ASE_AWK_NDE_PRINT,
|
||||
ASE_AWK_NDE_PRINTF,
|
||||
|
||||
/* expression */
|
||||
/* if you change the following values including their order,
|
||||
* you should change __eval_func of __eval_expression
|
||||
* in run.c accordingly */
|
||||
ASE_AWK_NDE_GRP,
|
||||
ASE_AWK_NDE_ASS,
|
||||
ASE_AWK_NDE_EXP_BIN,
|
||||
ASE_AWK_NDE_EXP_UNR,
|
||||
ASE_AWK_NDE_EXP_INCPRE,
|
||||
ASE_AWK_NDE_EXP_INCPST,
|
||||
ASE_AWK_NDE_CND,
|
||||
ASE_AWK_NDE_BFN,
|
||||
ASE_AWK_NDE_AFN,
|
||||
ASE_AWK_NDE_INT,
|
||||
ASE_AWK_NDE_REAL,
|
||||
ASE_AWK_NDE_STR,
|
||||
ASE_AWK_NDE_REX,
|
||||
|
||||
/* keep this order for the following items otherwise, you may have
|
||||
* to change eval_incpre and eval_incpst in run.c as well as
|
||||
* ASE_AWK_VAL_REF_XXX in awk.h */
|
||||
ASE_AWK_NDE_NAMED,
|
||||
ASE_AWK_NDE_GLOBAL,
|
||||
ASE_AWK_NDE_LOCAL,
|
||||
ASE_AWK_NDE_ARG,
|
||||
ASE_AWK_NDE_NAMEDIDX,
|
||||
ASE_AWK_NDE_GLOBALIDX,
|
||||
ASE_AWK_NDE_LOCALIDX,
|
||||
ASE_AWK_NDE_ARGIDX,
|
||||
ASE_AWK_NDE_POS,
|
||||
/* ---------------------------------- */
|
||||
|
||||
ASE_AWK_NDE_GETLINE
|
||||
};
|
||||
|
||||
enum ase_awk_in_type_t
|
||||
{
|
||||
/* the order of these values match
|
||||
* __in_type_map and __in_opt_map in extio.c */
|
||||
|
||||
ASE_AWK_IN_PIPE,
|
||||
ASE_AWK_IN_COPROC,
|
||||
ASE_AWK_IN_FILE,
|
||||
ASE_AWK_IN_CONSOLE
|
||||
};
|
||||
|
||||
enum ase_awk_out_type_t
|
||||
{
|
||||
/* the order of these values match
|
||||
* __out_type_map and __out_opt_map in extio.c */
|
||||
|
||||
ASE_AWK_OUT_PIPE,
|
||||
ASE_AWK_OUT_COPROC,
|
||||
ASE_AWK_OUT_FILE,
|
||||
ASE_AWK_OUT_FILE_APPEND,
|
||||
ASE_AWK_OUT_CONSOLE
|
||||
};
|
||||
|
||||
/* afn (awk function defined with the keyword function) */
|
||||
typedef struct ase_awk_afn_t ase_awk_afn_t;
|
||||
typedef struct ase_awk_nde_t ase_awk_nde_t;
|
||||
typedef struct ase_awk_nde_blk_t ase_awk_nde_blk_t;
|
||||
typedef struct ase_awk_nde_grp_t ase_awk_nde_grp_t;
|
||||
typedef struct ase_awk_nde_ass_t ase_awk_nde_ass_t;
|
||||
typedef struct ase_awk_nde_exp_t ase_awk_nde_exp_t;
|
||||
typedef struct ase_awk_nde_cnd_t ase_awk_nde_cnd_t;
|
||||
typedef struct ase_awk_nde_pos_t ase_awk_nde_pos_t;
|
||||
|
||||
#ifndef ASE_AWK_NDE_INT_DEFINED
|
||||
#define ASE_AWK_NDE_INT_DEFINED
|
||||
typedef struct ase_awk_nde_int_t ase_awk_nde_int_t;
|
||||
#endif
|
||||
|
||||
#ifndef ASE_AWK_NDE_REAL_DEFINED
|
||||
#define ASE_AWK_NDE_REAL_DEFINED
|
||||
typedef struct ase_awk_nde_real_t ase_awk_nde_real_t;
|
||||
#endif
|
||||
|
||||
typedef struct ase_awk_nde_str_t ase_awk_nde_str_t;
|
||||
typedef struct ase_awk_nde_rex_t ase_awk_nde_rex_t;
|
||||
typedef struct ase_awk_nde_var_t ase_awk_nde_var_t;
|
||||
typedef struct ase_awk_nde_call_t ase_awk_nde_call_t;
|
||||
typedef struct ase_awk_nde_getline_t ase_awk_nde_getline_t;
|
||||
|
||||
typedef struct ase_awk_nde_if_t ase_awk_nde_if_t;
|
||||
typedef struct ase_awk_nde_while_t ase_awk_nde_while_t;
|
||||
typedef struct ase_awk_nde_for_t ase_awk_nde_for_t;
|
||||
typedef struct ase_awk_nde_foreach_t ase_awk_nde_foreach_t;
|
||||
typedef struct ase_awk_nde_break_t ase_awk_nde_break_t;
|
||||
typedef struct ase_awk_nde_continue_t ase_awk_nde_continue_t;
|
||||
typedef struct ase_awk_nde_return_t ase_awk_nde_return_t;
|
||||
typedef struct ase_awk_nde_exit_t ase_awk_nde_exit_t;
|
||||
typedef struct ase_awk_nde_next_t ase_awk_nde_next_t;
|
||||
typedef struct ase_awk_nde_nextfile_t ase_awk_nde_nextfile_t;
|
||||
typedef struct ase_awk_nde_delete_t ase_awk_nde_delete_t;
|
||||
typedef struct ase_awk_nde_reset_t ase_awk_nde_reset_t;
|
||||
typedef struct ase_awk_nde_print_t ase_awk_nde_print_t;
|
||||
|
||||
struct ase_awk_afn_t
|
||||
{
|
||||
ase_xstr_t name;
|
||||
ase_size_t nargs;
|
||||
ase_awk_nde_t* body;
|
||||
};
|
||||
|
||||
#define ASE_AWK_NDE_HDR \
|
||||
int type; \
|
||||
ase_size_t line; \
|
||||
ase_awk_nde_t* next
|
||||
|
||||
struct ase_awk_nde_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_BLK - block statement including top-level blocks */
|
||||
struct ase_awk_nde_blk_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_size_t nlocals;
|
||||
ase_awk_nde_t* body;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_GRP - expression group */
|
||||
struct ase_awk_nde_grp_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* body;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_ASS - assignment */
|
||||
struct ase_awk_nde_ass_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
int opcode;
|
||||
ase_awk_nde_t* left;
|
||||
ase_awk_nde_t* right;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_EXP_BIN, ASE_AWK_NDE_EXP_UNR,
|
||||
* ASE_AWK_NDE_EXP_INCPRE, ASE_AW_NDE_EXP_INCPST */
|
||||
struct ase_awk_nde_exp_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
int opcode;
|
||||
ase_awk_nde_t* left;
|
||||
ase_awk_nde_t* right; /* ASE_NULL for UNR, INCPRE, INCPST */
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_CND */
|
||||
struct ase_awk_nde_cnd_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* test;
|
||||
ase_awk_nde_t* left;
|
||||
ase_awk_nde_t* right;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_POS - positional - $1, $2, $x, etc */
|
||||
struct ase_awk_nde_pos_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* val;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_INT */
|
||||
struct ase_awk_nde_int_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_long_t val;
|
||||
ase_char_t* str;
|
||||
ase_size_t len;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_REAL */
|
||||
struct ase_awk_nde_real_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_real_t val;
|
||||
ase_char_t* str;
|
||||
ase_size_t len;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_STR */
|
||||
struct ase_awk_nde_str_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_char_t* buf;
|
||||
ase_size_t len;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_REX */
|
||||
struct ase_awk_nde_rex_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_char_t* buf;
|
||||
ase_size_t len;
|
||||
void* code;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_NAMED, ASE_AWK_NDE_GLOBAL,
|
||||
* ASE_AWK_NDE_LOCAL, ASE_AWK_NDE_ARG
|
||||
* ASE_AWK_NDE_NAMEDIDX, ASE_AWK_NDE_GLOBALIDX,
|
||||
* ASE_AWK_NDE_LOCALIDX, ASE_AWK_NDE_ARGIDX */
|
||||
struct ase_awk_nde_var_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
struct
|
||||
{
|
||||
ase_xstr_t name;
|
||||
ase_size_t idxa;
|
||||
} id;
|
||||
ase_awk_nde_t* idx; /* ASE_NULL for non-XXXXIDX */
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_BFN, ASE_AWK_NDE_AFN */
|
||||
struct ase_awk_nde_call_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
ase_xstr_t name;
|
||||
} afn;
|
||||
|
||||
/* minimum information of a intrinsic function
|
||||
* needed during run-time. */
|
||||
struct
|
||||
{
|
||||
ase_xstr_t name;
|
||||
|
||||
/* original name. if ase_awk_setword has been
|
||||
* invoked, oname can be different from name */
|
||||
ase_xstr_t oname;
|
||||
|
||||
struct
|
||||
{
|
||||
ase_size_t min;
|
||||
ase_size_t max;
|
||||
const ase_char_t* spec;
|
||||
} arg;
|
||||
|
||||
int (*handler) (
|
||||
ase_awk_run_t*, const ase_char_t*, ase_size_t);
|
||||
} bfn;
|
||||
} what;
|
||||
ase_awk_nde_t* args;
|
||||
ase_size_t nargs;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_GETLINE */
|
||||
struct ase_awk_nde_getline_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* var;
|
||||
int in_type; /* ASE_AWK_GETLINE_XXX */
|
||||
ase_awk_nde_t* in;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_IF */
|
||||
struct ase_awk_nde_if_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* test;
|
||||
ase_awk_nde_t* then_part;
|
||||
ase_awk_nde_t* else_part; /* optional */
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_WHILE, ASE_AWK_NDE_DOWHILE */
|
||||
struct ase_awk_nde_while_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* test;
|
||||
ase_awk_nde_t* body;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_FOR */
|
||||
struct ase_awk_nde_for_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* init; /* optional */
|
||||
ase_awk_nde_t* test; /* optional */
|
||||
ase_awk_nde_t* incr; /* optional */
|
||||
ase_awk_nde_t* body;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_FOREACH */
|
||||
struct ase_awk_nde_foreach_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* test;
|
||||
ase_awk_nde_t* body;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_BREAK */
|
||||
struct ase_awk_nde_break_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_CONTINUE */
|
||||
struct ase_awk_nde_continue_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_RETURN */
|
||||
struct ase_awk_nde_return_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* val; /* optional (no return code if ASE_NULL) */
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_EXIT */
|
||||
struct ase_awk_nde_exit_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* val; /* optional (no exit code if ASE_NULL) */
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_NEXT */
|
||||
struct ase_awk_nde_next_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_NEXTFILE */
|
||||
struct ase_awk_nde_nextfile_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
int out;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_DELETE */
|
||||
struct ase_awk_nde_delete_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* var;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_RESET */
|
||||
struct ase_awk_nde_reset_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* var;
|
||||
};
|
||||
|
||||
/* ASE_AWK_NDE_PRINT */
|
||||
struct ase_awk_nde_print_t
|
||||
{
|
||||
ASE_AWK_NDE_HDR;
|
||||
ase_awk_nde_t* args;
|
||||
int out_type; /* ASE_AWK_OUT_XXX */
|
||||
ase_awk_nde_t* out;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* print the entire tree */
|
||||
int ase_awk_prnpt (ase_awk_t* awk, ase_awk_nde_t* tree);
|
||||
/* print a single top-level node */
|
||||
int ase_awk_prnnde (ase_awk_t* awk, ase_awk_nde_t* node);
|
||||
/* print the pattern part */
|
||||
int ase_awk_prnptnpt (ase_awk_t* awk, ase_awk_nde_t* tree);
|
||||
|
||||
void ase_awk_clrpt (ase_awk_t* awk, ase_awk_nde_t* tree);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
1217
qse/lib/awk/val.c
Normal file
1217
qse/lib/awk/val.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user