diff --git a/ase/awk/Awk.cpp b/ase/awk/Awk.cpp index 9c376a4e..011ce335 100644 --- a/ase/awk/Awk.cpp +++ b/ase/awk/Awk.cpp @@ -1,5 +1,5 @@ /* - * $Id: Awk.cpp,v 1.52 2007/08/26 14:33:38 bacon Exp $ + * $Id: Awk.cpp,v 1.53 2007/09/06 08:44:42 bacon Exp $ */ @@ -57,6 +57,16 @@ namespace ASE extio->handle = handle; } + const Awk::extio_t* Awk::Extio::getRawExtio () const + { + return extio; + } + + const Awk::run_t* Awk::Extio::getRawRun () const + { + return extio->run; + } + ////////////////////////////////////////////////////////////////// // Awk::Pipe ////////////////////////////////////////////////////////////////// @@ -690,14 +700,8 @@ namespace ASE runarg[i].ptr = ase_awk_strxdup (awk, args[i], runarg[i].len); if (runarg[i].ptr == ASE_NULL) { - if (i > 0) - { - for (i-- ; i > 0; i--) - { - ase_awk_free (awk, runarg[i].ptr); - } - } - + while (i > 0) ase_awk_free (awk, runarg[--i].ptr); + ase_awk_free (awk, runarg); setError (ERR_NOMEM); return -1; } @@ -706,7 +710,7 @@ namespace ASE runarg[i].ptr = ASE_NULL; runarg[i].len = 0; } - + int n = ase_awk_run ( awk, main, &runios, (runCallback? &runcbs: ASE_NULL), @@ -715,10 +719,7 @@ namespace ASE if (runarg != ASE_NULL) { - for (i--; i > 0; i--) - { - ase_awk_free (awk, runarg[i].ptr); - } + while (i > 0) ase_awk_free (awk, runarg[--i].ptr); ase_awk_free (awk, runarg); } diff --git a/ase/awk/Awk.hpp b/ase/awk/Awk.hpp index f0670af7..001f9b0f 100644 --- a/ase/awk/Awk.hpp +++ b/ase/awk/Awk.hpp @@ -1,5 +1,5 @@ /* - * $Id: Awk.hpp,v 1.50 2007/09/04 08:01:46 bacon Exp $ + * $Id: Awk.hpp,v 1.52 2007/09/06 14:38:56 bacon Exp $ */ #ifndef _ASE_AWK_AWK_HPP_ @@ -12,24 +12,62 @@ namespace ASE { /** - * the awk class + * Provides the awk interpreter engine */ class Awk { public: + /** + * boolean data type + */ typedef ase_bool_t bool_t; + + /** + * data type that can hold any character + */ + typedef ase_char_t char_t; + + /** + * data type that can hold any character or + * an end-of-file value + */ typedef ase_cint_t cint_t; + + typedef ase_size_t size_t; typedef ase_ssize_t ssize_t; typedef ase_long_t long_t; typedef ase_real_t real_t; + /** + * represents an internal awk value + */ typedef ase_awk_val_t val_t; + + /** + * represents the internal hash table + */ typedef ase_awk_map_t map_t; + + /** + * represents a key/value pair + */ typedef ase_awk_pair_t pair_t; + + /** + * represents the external i/o operation + */ typedef ase_awk_extio_t extio_t; + + /** + * represents the run-time instance of an awk interpreter + */ typedef ase_awk_run_t run_t; + + /** + * reprensts the underlying awk interpreter + */ typedef ase_awk_t awk_t; /** @@ -72,6 +110,17 @@ namespace ASE const void* getHandle () const; void setHandle (void* handle); + /** + * returns the underlying extio_t handle + */ + const extio_t* getRawExtio () const; + + /** + * returns the underlying run_t handle associated + * with the underlying extio_t handle + */ + const run_t* getRawRun () const; + protected: extio_t* extio; }; @@ -146,7 +195,7 @@ namespace ASE }; /** - * Argument + * Represents an argument to an intrinsic function */ class Argument { @@ -197,7 +246,7 @@ namespace ASE }; /** - * Return + * represents a return value of an intrinsic function */ class Return { @@ -233,7 +282,7 @@ namespace ASE }; /** - * ErrorCode + * represens the error code */ // generated by generrcode.awk @@ -475,52 +524,93 @@ namespace ASE virtual int run (const char_t* main = ASE_NULL, const char_t** args = ASE_NULL, size_t nargs = 0); + /** + * defines the user-defined function + */ typedef int (Awk::*FunctionHandler) ( Return* ret, const Argument* args, size_t nargs, const char_t* name, size_t len); + /** + * adds a new user-defined function + */ virtual int addFunction ( const char_t* name, size_t minArgs, size_t maxArgs, FunctionHandler handler); + + /** + * deletes a user-defined function + */ virtual int deleteFunction (const char_t* main); + /** + * enables the run-time callback + */ virtual void enableRunCallback (); + + /** + * disables the run-time callback + */ virtual void disableRunCallback (); protected: virtual int dispatchFunction ( run_t* run, const char_t* name, size_t len); - // source code io handlers - /** - * openSource + /** + * @name Source code I/O handlers + * A subclass should override the following methods to + * support the source code input and output. + * The awk interpreter calls the following methods when + * the parse method is invoked. */ + /*@{*/ + /** opens the source stream */ virtual int openSource (Source& io) = 0; + /** closes the source stream */ virtual int closeSource (Source& io) = 0; + /** reads from the source stream */ virtual ssize_t readSource (Source& io, char_t* buf, size_t len) = 0; + /** writes to the source stream */ virtual ssize_t writeSource (Source& io, char_t* buf, size_t len) = 0; + /*@}*/ + - // pipe io handlers + /** + * @name Pipe I/O handlers + * Pipe operations are achieved through the following methods. + */ + /*@{*/ virtual int openPipe (Pipe& io) = 0; virtual int closePipe (Pipe& io) = 0; virtual ssize_t readPipe (Pipe& io, char_t* buf, size_t len) = 0; virtual ssize_t writePipe (Pipe& io, char_t* buf, size_t len) = 0; virtual int flushPipe (Pipe& io) = 0; + /*@}*/ - // file io handlers + /** + * @name File I/O handlers + * File operations are achieved through the following methods. + */ + /*@{*/ virtual int openFile (File& io) = 0; virtual int closeFile (File& io) = 0; virtual ssize_t readFile (File& io, char_t* buf, size_t len) = 0; virtual ssize_t writeFile (File& io, char_t* buf, size_t len) = 0; virtual int flushFile (File& io) = 0; + /*@}*/ - // console io handlers + /** + * @name Console I/O handlers + * Console operations are achieved through the following methods. + */ virtual int openConsole (Console& io) = 0; virtual int closeConsole (Console& io) = 0; virtual ssize_t readConsole (Console& io, char_t* buf, size_t len) = 0; virtual ssize_t writeConsole (Console& io, char_t* buf, size_t len) = 0; virtual int flushConsole (Console& io) = 0; virtual int nextConsole (Console& io) = 0; + /*@}*/ // run-time callbacks virtual void onRunStart (const Run& run); diff --git a/ase/awk/StdAwk.cpp b/ase/awk/StdAwk.cpp index d836235f..e85fde92 100644 --- a/ase/awk/StdAwk.cpp +++ b/ase/awk/StdAwk.cpp @@ -1,5 +1,5 @@ /* - * $Id: StdAwk.cpp,v 1.24 2007/08/26 14:33:38 bacon Exp $ + * $Id: StdAwk.cpp,v 1.25 2007/09/06 09:23:34 bacon Exp $ */ #include @@ -129,6 +129,13 @@ namespace ASE 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 (Return* ret, const Argument* args, size_t nargs, const char_t* name, size_t len) { diff --git a/ase/change.log b/ase/change.log index de47dcc7..4fffa53d 100644 --- a/ase/change.log +++ b/ase/change.log @@ -1,4 +1,4 @@ -[0.2.1] +[0.3.0] * added ase_awk_setword to enable customization of keywords and intrinsic function names. diff --git a/ase/doc/ase-en.man b/ase/doc/ase-en.man index a699b8fb..d23f975b 100644 --- a/ase/doc/ase-en.man +++ b/ase/doc/ase-en.man @@ -10,9 +10,9 @@ ASE is a programming library implementing various programming languages and text Download the library source code from the following links. -ase-0.2.0.tgz +ase-0.3.0.tgz [[[ -* {Link 1,ase-0.2.0.tgz} +* {Link 1,ase-0.3.0.tgz} ]]] == Documentation == diff --git a/ase/doc/ase-ko.man b/ase/doc/ase-ko.man index 0116453f..5cfc48c1 100644 --- a/ase/doc/ase-ko.man +++ b/ase/doc/ase-ko.man @@ -10,9 +10,9 @@ ASE는 임베딩을 목적으로 여러가지 프로그래밍언어를 구현하 다음 링크에서 소스코드를 받을수 있다. -ase-0.2.0.tgz +ase-0.3.0.tgz [[[ -* {링크 1,ase-0.2.0.tgz} +* {링크 1,ase-0.3.0.tgz} * 링크 2 ]]] diff --git a/ase/net/Awk.cpp b/ase/net/Awk.cpp index 7001424d..5059c733 100644 --- a/ase/net/Awk.cpp +++ b/ase/net/Awk.cpp @@ -1,5 +1,5 @@ /* - * $Id: Awk.cpp,v 1.22 2007/08/24 13:17:59 bacon Exp $ + * $Id: Awk.cpp,v 1.23 2007/09/06 08:44:42 bacon Exp $ */ #include "stdafx.h" @@ -87,7 +87,15 @@ namespace ASE const char_t* getErrorString (ASE::Net::Awk^ wrapper, ErrorCode num) const { this->wrapper = wrapper; - const char_t* x = Awk::getErrorString(num); + const char_t* x = Awk::getErrorString (num); + this->wrapper = nullptr; + return x; + } + + int setErrorString (ASE::Net::Awk^ wrapper, ErrorCode num, const char_t* msg) + { + this->wrapper = wrapper; + int x = Awk::setErrorString (num, msg); this->wrapper = nullptr; return x; } @@ -165,6 +173,7 @@ namespace ASE void onRunStart (const Run& run) { wrapper->runErrorReported = false; + wrapper->stopRequested = false; if (wrapper->OnRunStart != nullptr) { @@ -197,6 +206,8 @@ namespace ASE void onRunStatement (const Run& run, size_t line) { + if (wrapper->stopRequested) run.stop (); + if (wrapper->OnRunStatement != nullptr) { wrapper->OnRunStatement (wrapper); @@ -650,6 +661,20 @@ namespace ASE if (awk != NULL) awk->setOption (this, (int)this->option); } + bool Awk::SetErrorString (Awk::ERROR num, System::String^ msg) + { + if (awk == NULL) + { + setError (ERROR::NOPER); + return false; + } + + cli::pin_ptr nptr = PtrToStringChars(msg); + bool r = (awk->setErrorString (this, (ASE::Awk::ErrorCode)num, nptr) == 0); + if (!r) { retrieveError (); } + return r; + } + void Awk::Close () { if (awk != NULL) @@ -687,6 +712,7 @@ namespace ASE bool Awk::Run (System::String^ entryPoint, cli::array^ args) { runErrorReported = false; + stopRequested = false; if (awk == NULL) { @@ -694,11 +720,12 @@ namespace ASE return false; } - if (OnRunStart != nullptr || OnRunEnd != nullptr || - OnRunReturn != nullptr || OnRunStatement != nullptr) - { + // callback needs to be enabled to support the Stop method + //if (OnRunStart != nullptr || OnRunEnd != nullptr || + // OnRunReturn != nullptr || OnRunStatement != nullptr) + //{ awk->enableRunCallback (this); - } + //} if (args == nullptr || args->Length <= 0) { @@ -801,6 +828,11 @@ namespace ASE } } + void Awk::Stop () + { + stopRequested = true; + } + bool Awk::AddFunction ( System::String^ name, int minArgs, int maxArgs, FunctionHandler^ handler) diff --git a/ase/net/Awk.hpp b/ase/net/Awk.hpp index 5b77e4f0..e3dcab2c 100644 --- a/ase/net/Awk.hpp +++ b/ase/net/Awk.hpp @@ -1,5 +1,5 @@ /* - * $Id: Awk.hpp,v 1.20 2007/08/26 14:33:38 bacon Exp $ + * $Id: Awk.hpp,v 1.21 2007/09/06 08:44:42 bacon Exp $ */ #pragma once @@ -470,6 +470,11 @@ namespace ASE virtual bool Run (); virtual bool Run (System::String^ entryPoint, cli::array^ args); + /** + * sets the request to stop the Run method + */ + virtual void Stop (); + delegate void RunStartHandler (Awk^ awk); delegate void RunEndHandler (Awk^ awk); delegate void RunReturnHandler (Awk^ awk); @@ -491,10 +496,12 @@ namespace ASE virtual bool SetMaxDepth (DEPTH id, size_t depth); virtual bool GetMaxDepth (DEPTH id, size_t* depth); + virtual bool SetErrorString (ERROR num, System::String^ str); + property OPTION Option { - OPTION get (); //{ return this->option; } - void set (OPTION opt); //{ this->option = opt; } + OPTION get (); + void set (OPTION opt); } property System::String^ ErrorMessage @@ -567,6 +574,7 @@ namespace ASE void setError (ERROR num); void retrieveError (); bool runErrorReported; // only used if the run-callback is activated. + bool stopRequested; }; } diff --git a/ase/net/StdAwk.cpp b/ase/net/StdAwk.cpp index 7a5a658f..c89efaee 100644 --- a/ase/net/StdAwk.cpp +++ b/ase/net/StdAwk.cpp @@ -1,5 +1,5 @@ /* - * $Id: StdAwk.cpp,v 1.10 2007/09/05 14:42:06 bacon Exp $ + * $Id: StdAwk.cpp,v 1.12 2007/09/06 09:23:34 bacon Exp $ */ #include "stdafx.h" @@ -112,6 +112,13 @@ namespace ASE return true; } +#if defined(_WIN32) && defined(_MSC_VER) && (_MSC_VER>=1400) + #define time_t __time64_t + #define time _time64 + #define localtime _localtime64 + #define gmtime _gmtime64 +#endif + bool StdAwk::Systime (System::String^ name, array^ args, Return^ ret) { ret->LongValue = (long_t)::time(NULL); @@ -221,15 +228,8 @@ namespace ASE } else { - try{ System::IO::StreamWriter^ sw = (System::IO::StreamWriter^)file->Handle; sw->Close (); - } - catch (...) - - { - System::Diagnostics::Debug::Print ("XXXXXX"); - } } return 0; } diff --git a/ase/rel/doc.awk b/ase/rel/doc.awk index fc0afbb0..18f15a37 100644 --- a/ase/rel/doc.awk +++ b/ase/rel/doc.awk @@ -1,5 +1,5 @@ /* - * $Id: doc.awk,v 1.3 2007/04/30 08:32:40 bacon Exp $ + * $Id: doc.awk,v 1.4 2007/09/06 09:05:32 bacon Exp $ * * {License} */ @@ -56,7 +56,7 @@ BEGIN { empty_line_count = 0; para_started = 0; - #output=ARGV[0]; + #output=ARGV[1]; #gsub (/\.man/, ".html", output); #print "OUTPUT TO: " output; diff --git a/ase/rel/lic.awk b/ase/rel/lic.awk index a020770e..ba5574de 100644 --- a/ase/rel/lic.awk +++ b/ase/rel/lic.awk @@ -1,11 +1,11 @@ /* - * $Id: lic.awk,v 1.3 2007/04/30 08:32:40 bacon Exp $ + * $Id: lic.awk,v 1.4 2007/09/06 09:05:32 bacon Exp $ * * {License} */ NR == 1 { - new_file = ARGV[0]; + new_file = ARGV[1]; printf "" > new_file; /* clear the file */ } diff --git a/ase/test/awk/asetestawk++.dsp b/ase/test/awk/asetestawk++.dsp new file mode 100644 index 00000000..d256e4e6 --- /dev/null +++ b/ase/test/awk/asetestawk++.dsp @@ -0,0 +1,102 @@ +# Microsoft Developer Studio Project File - Name="asetestawk++" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=asetestawk++ - 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 "asetestawk++.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 "asetestawk++.mak" CFG="asetestawk++ - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "asetestawk++ - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "asetestawk++ - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "asetestawk++ - 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/bin" +# PROP Intermediate_Dir "release/cpp" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\.." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /YX /FD /c +# 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 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 /subsystem:console /machine:I386 +# ADD LINK32 asecmn.lib aseawk.lib aseawk++.lib aseutl.lib user32.lib kernel32.lib /nologo /subsystem:console /machine:I386 /out:"../../release/bin/aseawk++.exe" /libpath:"../../release/lib" + +!ELSEIF "$(CFG)" == "asetestawk++ - 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/bin" +# PROP Intermediate_Dir "debug/cpp" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\.." /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /FR /YX /FD /GZ /c +# 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 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 /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 asecmn.lib aseawk.lib aseawk++.lib aseutl.lib user32.lib kernel32.lib /nologo /subsystem:console /debug /machine:I386 /out:"../../debug/bin/aseawk++.exe" /pdbtype:sept /libpath:"../../debug/lib" + +!ENDIF + +# Begin Target + +# Name "asetestawk++ - Win32 Release" +# Name "asetestawk++ - 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 +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# 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 diff --git a/ase/test/awk/asm.awk b/ase/test/awk/asm.awk index fb599953..0a60324f 100644 --- a/ase/test/awk/asm.awk +++ b/ase/test/awk/asm.awk @@ -36,7 +36,7 @@ BEGIN { for (pc = 0; pc >= 0; ) { addr = mem[pc] % 1000; code = int(mem[pc++] / 1000); - if (code == op["get"]) { getline acc; } + if (code == op["get"]) { if (getline acc <= 0) acc = 0; } else if (code == op["put"]) { print acc; } else if (code == op["st"]) { mem[addr] = acc; } else if (code == op["ld"]) { acc = mem[addr]; } diff --git a/ase/test/awk/err-003.out b/ase/test/awk/err-003.out index 44b68fe2..2a17eb76 100644 --- a/ase/test/awk/err-003.out +++ b/ase/test/awk/err-003.out @@ -5,4 +5,4 @@ BEGIN { abc = 10; } -RUN ERROR: CODE [94] LINE [5] map 'abc' not assignable with a scalar +RUN ERROR: CODE [95] LINE [5] map 'abc' not assignable with a scalar diff --git a/ase/test/awk/err-004.out b/ase/test/awk/err-004.out index 310c82bf..320f8a3a 100644 --- a/ase/test/awk/err-004.out +++ b/ase/test/awk/err-004.out @@ -2,4 +2,4 @@ BEGIN { delete ARGC; } -RUN ERROR: CODE [86] LINE [2] variable 'ARGC' not deletable +RUN ERROR: CODE [87] LINE [2] variable 'ARGC' not deletable diff --git a/ase/test/awk/err-005.out b/ase/test/awk/err-005.out index 52eec318..5c75e4f6 100644 --- a/ase/test/awk/err-005.out +++ b/ase/test/awk/err-005.out @@ -3,4 +3,4 @@ BEGIN { delete iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiix; } -RUN ERROR: CODE [86] LINE [3] variable 'iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii...' not deletable +RUN ERROR: CODE [87] LINE [3] variable 'iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii...' not deletable diff --git a/ase/test/awk/err-006.out b/ase/test/awk/err-006.out index 1bbe4bd9..77e79728 100644 --- a/ase/test/awk/err-006.out +++ b/ase/test/awk/err-006.out @@ -2,4 +2,4 @@ BEGIN { helpxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxhelphelp (); } -RUN ERROR: CODE [84] LINE [2] function 'helpxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxhel...' not found +RUN ERROR: CODE [85] LINE [2] function 'helpxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxhel...' not found diff --git a/ase/test/awk/err-007.out b/ase/test/awk/err-007.out index 832e41f8..b8804cde 100644 --- a/ase/test/awk/err-007.out +++ b/ase/test/awk/err-007.out @@ -1 +1 @@ -PARSE ERROR: CODE [55] LINE [2] built-in function 'substr' redefined +PARSE ERROR: CODE [56] LINE [2] built-in function 'substr' redefined diff --git a/ase/test/awk/err-008.out b/ase/test/awk/err-008.out index 0730f29c..8277a87f 100644 --- a/ase/test/awk/err-008.out +++ b/ase/test/awk/err-008.out @@ -1 +1 @@ -PARSE ERROR: CODE [55] LINE [3] built-in function 'substr' redefined +PARSE ERROR: CODE [56] LINE [3] built-in function 'substr' redefined diff --git a/ase/test/awk/err-009.out b/ase/test/awk/err-009.out index 78591512..5939f940 100644 --- a/ase/test/awk/err-009.out +++ b/ase/test/awk/err-009.out @@ -1 +1 @@ -PARSE ERROR: CODE [56] LINE [9] function 'abc' redefined +PARSE ERROR: CODE [57] LINE [9] function 'abc' redefined diff --git a/ase/test/awk/err-010.out b/ase/test/awk/err-010.out index 3d50b139..370989e4 100644 --- a/ase/test/awk/err-010.out +++ b/ase/test/awk/err-010.out @@ -1 +1 @@ -PARSE ERROR: CODE [57] LINE [4] global variable 'abc' redefined +PARSE ERROR: CODE [58] LINE [4] global variable 'abc' redefined diff --git a/ase/test/awk/err-011.out b/ase/test/awk/err-011.out index 1fe5f6be..5cffaf8c 100644 --- a/ase/test/awk/err-011.out +++ b/ase/test/awk/err-011.out @@ -1 +1 @@ -PARSE ERROR: CODE [58] LINE [4] parameter 'x' redefined +PARSE ERROR: CODE [59] LINE [4] parameter 'x' redefined diff --git a/ase/test/awk/err-012.out b/ase/test/awk/err-012.out index 8cb73ecf..105e1aed 100644 --- a/ase/test/awk/err-012.out +++ b/ase/test/awk/err-012.out @@ -1 +1 @@ -PARSE ERROR: CODE [56] LINE [11] function 'abc' redefined +PARSE ERROR: CODE [57] LINE [11] function 'abc' redefined diff --git a/ase/test/awk/err-013.out b/ase/test/awk/err-013.out index bd715dfc..6d72302b 100644 --- a/ase/test/awk/err-013.out +++ b/ase/test/awk/err-013.out @@ -1 +1 @@ -PARSE ERROR: CODE [56] LINE [1] function 'abc' redefined +PARSE ERROR: CODE [57] LINE [1] function 'abc' redefined diff --git a/ase/test/awk/err-014.out b/ase/test/awk/err-014.out index f87deed2..83b452cc 100644 --- a/ase/test/awk/err-014.out +++ b/ase/test/awk/err-014.out @@ -1 +1 @@ -PARSE ERROR: CODE [42] LINE [5] a colon expected in place of ';' +PARSE ERROR: CODE [43] LINE [5] a colon expected in place of ';' diff --git a/ase/test/awk/err-015.out b/ase/test/awk/err-015.out index ea5ebd12..cca92eee 100644 --- a/ase/test/awk/err-015.out +++ b/ase/test/awk/err-015.out @@ -1 +1 @@ -PARSE ERROR: CODE [37] LINE [2] a left parenthesis expected in place of '=' +PARSE ERROR: CODE [38] LINE [2] a left parenthesis expected in place of '=' diff --git a/ase/test/awk/err-016.out b/ase/test/awk/err-016.out index 83889449..d28c8878 100644 --- a/ase/test/awk/err-016.out +++ b/ase/test/awk/err-016.out @@ -1 +1 @@ -PARSE ERROR: CODE [51] LINE [2] BEGIN not followed by a left bracket on the same line +PARSE ERROR: CODE [52] LINE [2] BEGIN not followed by a left bracket on the same line diff --git a/ase/test/awk/err-017.out b/ase/test/awk/err-017.out index 8c10f2ef..3ce6f043 100644 --- a/ase/test/awk/err-017.out +++ b/ase/test/awk/err-017.out @@ -1 +1 @@ -PARSE ERROR: CODE [62] LINE [1] '+' not a valid parameter name +PARSE ERROR: CODE [63] LINE [1] '+' not a valid parameter name diff --git a/ase/test/awk/err-018.out b/ase/test/awk/err-018.out index 22349b0c..9ef39c15 100644 --- a/ase/test/awk/err-018.out +++ b/ase/test/awk/err-018.out @@ -1 +1 @@ -PARSE ERROR: CODE [63] LINE [1] '+' not a valid variable name +PARSE ERROR: CODE [64] LINE [1] '+' not a valid variable name diff --git a/ase/test/awk/err-019.out b/ase/test/awk/err-019.out index 2d89bac0..566c2744 100644 --- a/ase/test/awk/err-019.out +++ b/ase/test/awk/err-019.out @@ -1 +1 @@ -PARSE ERROR: CODE [63] LINE [3] '+' not a valid variable name +PARSE ERROR: CODE [64] LINE [3] '+' not a valid variable name diff --git a/ase/test/awk/err-020.out b/ase/test/awk/err-020.out index 813ae97a..230dfc22 100644 --- a/ase/test/awk/err-020.out +++ b/ase/test/awk/err-020.out @@ -2,4 +2,4 @@ BEGIN { print abc > "123\0abc"; } -RUN ERROR: CODE [109] LINE [2] i/o name containing a null character +RUN ERROR: CODE [110] LINE [2] i/o name containing a null character diff --git a/ase/test/awk/err-021.out b/ase/test/awk/err-021.out index cf176329..a3c85504 100644 --- a/ase/test/awk/err-021.out +++ b/ase/test/awk/err-021.out @@ -3,4 +3,4 @@ BEGIN { split ("a b c",xx); } -RUN ERROR: CODE [95] LINE [3] cannot change a scalar value to a map +RUN ERROR: CODE [96] LINE [3] cannot change a scalar value to a map diff --git a/ase/test/com/Awk.cs b/ase/test/com/Awk.cs index 5c6a6e8f..d753fe9b 100644 --- a/ase/test/com/Awk.cs +++ b/ase/test/com/Awk.cs @@ -1,5 +1,5 @@ /* - * $Id: Awk.cs,v 1.1 2007/09/03 03:50:39 bacon Exp $ + * $Id: Awk.cs,v 1.2 2007/09/06 09:37:42 bacon Exp $ */ using System; @@ -142,10 +142,10 @@ namespace ase.com set { awk.SupportBlockless = value; } } - public bool StringBaseOne + public bool BaseOne { - get { return awk.StringBaseOne; } - set { awk.StringBaseOne = value; } + get { return awk.BaseOne; } + set { awk.BaseOne = value; } } public bool StripSpaces diff --git a/ase/test/com/AwkForm.resx b/ase/test/com/AwkForm.resx new file mode 100644 index 00000000..b9c202bf --- /dev/null +++ b/ase/test/com/AwkForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/ase/test/com/Properties/AssemblyInfo.cs b/ase/test/com/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..12f96f5d --- /dev/null +++ b/ase/test/com/Properties/AssemblyInfo.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ase.com")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ase.com")] +[assembly: AssemblyCopyright("© 2007 Hyung-Hwan Chung, All rights reserved.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("7cd62543-7cf6-4b69-90b9-be0becdbfa19")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ase/test/com/Properties/Resources.Designer.cs b/ase/test/com/Properties/Resources.Designer.cs new file mode 100644 index 00000000..28b47fda --- /dev/null +++ b/ase/test/com/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.42 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ase.com.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ase.com.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/ase/test/com/Properties/Resources.resx b/ase/test/com/Properties/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/ase/test/com/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ase/test/com/Properties/Settings.Designer.cs b/ase/test/com/Properties/Settings.Designer.cs new file mode 100644 index 00000000..9af5934d --- /dev/null +++ b/ase/test/com/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:2.0.50727.42 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ase.test.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/ase/test/com/Properties/Settings.settings b/ase/test/com/Properties/Settings.settings new file mode 100644 index 00000000..39645652 --- /dev/null +++ b/ase/test/com/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ase/test/com/asecom.csproj b/ase/test/com/asecom.csproj new file mode 100644 index 00000000..317bccd3 --- /dev/null +++ b/ase/test/com/asecom.csproj @@ -0,0 +1,86 @@ + + + Debug + AnyCPU + 8.0.50727 + 2.0 + {F14B75D8-3ED7-4621-B5B9-E96A80B5D809} + WinExe + Properties + ase.com + ase.com + + + true + full + false + ..\..\Debug\bin\ + DEBUG;TRACE + prompt + 4 + false + + + pdbonly + true + ..\..\Release\bin\ + TRACE + prompt + 4 + + + + False + ..\..\cnt\obj\Debug\Interop.ASECOM.dll + + + + + + + + + + + + Form + + + AwkForm.cs + + + + + Designer + AwkForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + \ No newline at end of file diff --git a/ase/test/net/Awk.cs b/ase/test/net/Awk.cs index 2a78aca1..d149605d 100644 --- a/ase/test/net/Awk.cs +++ b/ase/test/net/Awk.cs @@ -12,6 +12,17 @@ namespace ase.net System.Windows.Forms.TextBox consoleInput; System.Windows.Forms.TextBox consoleOutput; + System.ComponentModel.ISynchronizeInvoke si; + + public Awk(System.ComponentModel.ISynchronizeInvoke si) + { + this.si = si; + SetSourceOutputHandlers += SetSourceOutput; + SetConsoleOutputHandlers += SetConsoleOutput; + + AddFunction("sleep", 1, 1, Sleep); + } + public bool Parse( System.Windows.Forms.TextBox sourceInput, System.Windows.Forms.TextBox sourceOutput) @@ -31,6 +42,13 @@ namespace ase.net return base.Run(main, args); } + protected bool Sleep(string name, Argument[] args, Return ret) + { + System.Threading.Thread.Sleep((int)(args[0].LongValue*1000)); + ret.LongValue = 0; + return true; + } + protected override int OpenSource(ASE.Net.StdAwk.Source source) { //System.IO.FileMode mode; @@ -63,6 +81,22 @@ namespace ase.net return -1; } + public delegate void SetSourceOutputHandler(string text); + public delegate void SetConsoleOutputHandler(string text); + + public event SetSourceOutputHandler SetSourceOutputHandlers; + public event SetConsoleOutputHandler SetConsoleOutputHandlers; + + private void SetSourceOutput(string text) + { + sourceOutput.Text = text; + } + + private void SetConsoleOutput(string text) + { + consoleOutput.Text = text; + } + protected override int CloseSource(ASE.Net.StdAwk.Source source) { if (source.Mode.Equals(ASE.Net.StdAwk.Source.MODE.READ)) @@ -75,9 +109,16 @@ namespace ase.net { System.IO.StreamWriter sw = (System.IO.StreamWriter)source.Handle; sw.Flush(); + System.IO.MemoryStream ms = (System.IO.MemoryStream)sw.BaseStream; - sourceOutput.Text = UnicodeEncoding.UTF8.GetString(ms.GetBuffer()); sw.Close(); + + // MSDN: This method(GetBuffer) works when the memory stream is closed. + //sourceOutput.Text = UnicodeEncoding.UTF8.GetString(ms.GetBuffer()); + if (si != null && si.InvokeRequired) + si.Invoke(SetSourceOutputHandlers, new object[] { UnicodeEncoding.UTF8.GetString(ms.GetBuffer()) }); + else SetSourceOutput (UnicodeEncoding.UTF8.GetString(ms.GetBuffer())); + return 0; } @@ -130,9 +171,16 @@ namespace ase.net { System.IO.StreamWriter sw = (System.IO.StreamWriter)console.Handle; sw.Flush(); + System.IO.MemoryStream ms = (System.IO.MemoryStream)sw.BaseStream; - consoleOutput.Text = UnicodeEncoding.UTF8.GetString(ms.GetBuffer()); sw.Close(); + + // MSDN: This method(GetBuffer) works when the memory stream is closed. + //consoleOutput.Text = UnicodeEncoding.UTF8.GetString(ms.GetBuffer()); + if (si != null && si.InvokeRequired) + si.Invoke(SetConsoleOutputHandlers, new object[] { UnicodeEncoding.UTF8.GetString(ms.GetBuffer()) }); + else SetConsoleOutput(UnicodeEncoding.UTF8.GetString(ms.GetBuffer())); + return 0; } @@ -141,7 +189,7 @@ namespace ase.net protected override int ReadConsole(ASE.Net.StdAwk.Console console, char[] buf, int len) { - System.IO.StreamReader sr = (System.IO.StreamReader)console.Handle; + System.IO.StreamReader sr = (System.IO.StreamReader)console.Handle; return sr.Read(buf, 0, len); } @@ -149,6 +197,7 @@ namespace ase.net { System.IO.StreamWriter sw = (System.IO.StreamWriter)console.Handle; sw.Write(buf, 0, len); + sw.Flush(); return len; } diff --git a/ase/test/net/AwkForm.Designer.cs b/ase/test/net/AwkForm.Designer.cs index 2658ed0c..a85d7b7d 100644 --- a/ase/test/net/AwkForm.Designer.cs +++ b/ase/test/net/AwkForm.Designer.cs @@ -47,12 +47,12 @@ namespace ase.net this.panel2 = new System.Windows.Forms.Panel(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.chkStripSpaces = new System.Windows.Forms.CheckBox(); this.chkPassArgumentsToEntryPoint = new System.Windows.Forms.CheckBox(); this.btnClearAllArguments = new System.Windows.Forms.Button(); this.btnAddArgument = new System.Windows.Forms.Button(); this.tbxArgument = new System.Windows.Forms.TextBox(); this.lbxArguments = new System.Windows.Forms.ListBox(); - this.chkStripSpaces = new System.Windows.Forms.CheckBox(); this.tableLayoutPanel1.SuspendLayout(); this.panel1.SuspendLayout(); this.panel3.SuspendLayout(); @@ -281,6 +281,18 @@ namespace ase.net this.groupBox1.TabStop = false; this.groupBox1.Text = "Arguments"; // + // chkStripSpaces + // + this.chkStripSpaces.AutoSize = true; + this.chkStripSpaces.Checked = true; + this.chkStripSpaces.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkStripSpaces.Location = new System.Drawing.Point(19, 234); + this.chkStripSpaces.Name = "chkStripSpaces"; + this.chkStripSpaces.Size = new System.Drawing.Size(86, 17); + this.chkStripSpaces.TabIndex = 5; + this.chkStripSpaces.Text = "Strip Spaces"; + this.chkStripSpaces.UseVisualStyleBackColor = true; + // // chkPassArgumentsToEntryPoint // this.chkPassArgumentsToEntryPoint.AutoSize = true; @@ -328,18 +340,6 @@ namespace ase.net this.lbxArguments.Size = new System.Drawing.Size(147, 134); this.lbxArguments.TabIndex = 0; // - // chkStripSpaces - // - this.chkStripSpaces.AutoSize = true; - this.chkStripSpaces.Checked = true; - this.chkStripSpaces.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkStripSpaces.Location = new System.Drawing.Point(19, 234); - this.chkStripSpaces.Name = "chkStripSpaces"; - this.chkStripSpaces.Size = new System.Drawing.Size(86, 17); - this.chkStripSpaces.TabIndex = 5; - this.chkStripSpaces.Text = "Strip Spaces"; - this.chkStripSpaces.UseVisualStyleBackColor = true; - // // AwkForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); diff --git a/ase/test/net/AwkForm.cs b/ase/test/net/AwkForm.cs index 418f8aff..3c344337 100644 Binary files a/ase/test/net/AwkForm.cs and b/ase/test/net/AwkForm.cs differ