Recovered from cvs revision 2007-05-24 03:37:00
This commit is contained in:
parent
698794fb61
commit
d58553120e
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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 ()
|
||||||
|
@ -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);
|
||||||
|
@ -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))
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user