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