Recovered from cvs revision 2007-05-24 03:37:00

This commit is contained in:
hyung-hwan 2007-05-24 15:56:00 +00:00
parent 698794fb61
commit d58553120e
6 changed files with 72 additions and 24 deletions

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.cpp,v 1.36 2007/05/22 16:01:25 bacon Exp $ * $Id: Awk.cpp,v 1.37 2007/05/23 11:43:24 bacon Exp $
*/ */
#include <ase/awk/Awk.hpp> #include <ase/awk/Awk.hpp>
@ -364,16 +364,6 @@ namespace ASE
{ {
} }
void Awk::Run::setMaxBlockDepth (size_t n)
{
ase_awk_setmaxdepth (awk->awk, ASE_AWK_DEPTH_BLOCK_RUN, n);
}
void Awk::Run::setMaxExpressionDepth (size_t n)
{
ase_awk_setmaxdepth (awk->awk, ASE_AWK_DEPTH_EXPR_RUN, n);
}
int Awk::Run::stop () int Awk::Run::stop ()
{ {
ASE_ASSERT (this->run != ASE_NULL); ASE_ASSERT (this->run != ASE_NULL);
@ -570,6 +560,18 @@ namespace ASE
return ase_awk_getoption (awk); return ase_awk_getoption (awk);
} }
void Awk::setDepth (int id, size_t depth)
{
ASE_ASSERT (awk != ASE_NULL);
ase_awk_setmaxdepth (awk, id, depth);
}
int Awk::getDepth (int id)
{
ASE_ASSERT (awk != ASE_NULL);
return ase_awk_getmaxdepth (awk, id);
}
int Awk::parse () int Awk::parse ()
{ {
ASE_ASSERT (awk != ASE_NULL); ASE_ASSERT (awk != ASE_NULL);

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.hpp,v 1.34 2007/05/22 16:01:25 bacon Exp $ * $Id: Awk.hpp,v 1.35 2007/05/23 11:43:24 bacon Exp $
*/ */
#ifndef _ASE_AWK_AWK_HPP_ #ifndef _ASE_AWK_AWK_HPP_
@ -369,9 +369,6 @@ namespace ASE
size_t getErrorLine () const; size_t getErrorLine () const;
const char_t* getErrorMessage () const; const char_t* getErrorMessage () const;
void setMaxBlockDepth (size_t n);
void setMaxExpressionDepth (size_t n);
protected: protected:
Awk* awk; Awk* awk;
run_t* run; run_t* run;
@ -399,6 +396,19 @@ namespace ASE
virtual void setOption (int opt); virtual void setOption (int opt);
virtual int getOption () const; virtual int getOption () const;
enum Depth
{
DEPTH_BLOCK_PARSE = ASE_AWK_DEPTH_BLOCK_PARSE,
DEPTH_BLOCK_RUN = ASE_AWK_DEPTH_BLOCK_RUN,
DEPTH_EXPR_PARSE = ASE_AWK_DEPTH_EXPR_PARSE,
DEPTH_EXPR_RUN = ASE_AWK_DEPTH_EXPR_RUN,
DEPTH_REX_BUILD = ASE_AWK_DEPTH_REX_BUILD,
DEPTH_REX_MATCH = ASE_AWK_DEPTH_REX_MATCH
};
virtual void setDepth (int id, size_t depth);
virtual int getDepth (int id);
virtual int parse (); virtual int parse ();
virtual int run (const char_t* main = ASE_NULL, virtual int run (const char_t* main = ASE_NULL,
const char_t** args = ASE_NULL, size_t nargs = 0); const char_t** args = ASE_NULL, size_t nargs = 0);

View File

@ -1,5 +1,5 @@
/* /*
* $Id: StdAwk.cpp,v 1.19 2007/05/20 16:21:09 bacon Exp $ * $Id: StdAwk.cpp,v 1.21 2007/05/23 14:15:16 bacon Exp $
*/ */
#include <ase/awk/StdAwk.hpp> #include <ase/awk/StdAwk.hpp>
@ -29,7 +29,11 @@ namespace ASE
#define ADD_FUNC(name,min,max,impl) \ #define ADD_FUNC(name,min,max,impl) \
do { \ do { \
if (addFunction (name, min, max, \ if (addFunction (name, min, max, \
(FunctionHandler)impl) == -1) return -1; \ (FunctionHandler)impl) == -1) \
{ \
Awk::close (); \
return -1; \
} \
} while (0) } while (0)
int StdAwk::open () int StdAwk::open ()

View File

@ -1,5 +1,5 @@
/* /*
* $Id: StdAwk.hpp,v 1.9 2007/05/16 14:44:13 bacon Exp $ * $Id: StdAwk.hpp,v 1.11 2007/05/23 14:15:16 bacon Exp $
*/ */
#ifndef _ASE_AWK_STDAWK_HPP_ #ifndef _ASE_AWK_STDAWK_HPP_
@ -34,7 +34,6 @@ namespace ASE
int strfgmtime (Return* ret, const Argument* args, size_t nargs); int strfgmtime (Return* ret, const Argument* args, size_t nargs);
int system (Return* ret, const Argument* args, size_t nargs); int system (Return* ret, const Argument* args, size_t nargs);
// pipe io handlers // pipe io handlers
int openPipe (Pipe& io); int openPipe (Pipe& io);
int closePipe (Pipe& io); int closePipe (Pipe& io);

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.cpp,v 1.17 2007/05/19 16:45:27 bacon Exp $ * $Id: Awk.cpp,v 1.18 2007/05/23 14:15:16 bacon Exp $
*/ */
#include <ase/awk/StdAwk.hpp> #include <ase/awk/StdAwk.hpp>
@ -12,6 +12,8 @@
#if defined(_WIN32) #if defined(_WIN32)
#include <windows.h> #include <windows.h>
#else
#include <unistd.h>
#endif #endif
class TestAwk: public ASE::StdAwk class TestAwk: public ASE::StdAwk
@ -34,11 +36,24 @@ public:
{ {
#ifdef _WIN32 #ifdef _WIN32
ASE_ASSERT (heap == ASE_NULL); ASE_ASSERT (heap == ASE_NULL);
heap = HeapCreate (0, 1000000, 1000000); heap = ::HeapCreate (0, 1000000, 1000000);
if (heap == ASE_NULL) return -1; if (heap == ASE_NULL) return -1;
#endif #endif
return StdAwk::open (); int n = StdAwk::open ();
if (addFunction (ASE_T("sleep"), 1, 1,
(FunctionHandler)&TestAwk::sleep) == -1)
{
StdAwk::close ();
#ifdef _WIN32
HeapDestroy (heap);
heap = ASE_NULL;
#endif
return -1;
}
return n;
} }
void close () void close ()
@ -54,6 +69,16 @@ public:
#endif #endif
} }
int sleep (Return* ret, const Argument* args, size_t nargs)
{
#ifdef _WIN32
::Sleep (args[0].toInt() * 1000);
#else
::sleep (args[0].toInt());
#endif
return 0;
}
int addConsoleInput (const char_t* file) int addConsoleInput (const char_t* file)
{ {
if (numConInFiles < ASE_COUNTOF(conInFile)) if (numConInFiles < ASE_COUNTOF(conInFile))

View File

@ -1,5 +1,13 @@
BEGIN { FS = "\t"; } BEGIN { FS = "\t"; }
{ pop[$4] += $3; } { pop[$4] += $3; }
END { for (c in pop) END {
for (c in pop)
printf ("%15s\t%6d\n", c, pop[c]) | "sort -t'\t' +1rn"; printf ("%15s\t%6d\n", c, pop[c]) | "sort -t'\t' +1rn";
}
# the following two statements make the program behave
# consistently across different platforms.
# on some platforms, the sort command output has
# been delayed until the program exits.
close ("sort -t'\t' +1rn");
sleep (1);
}