Recovered from cvs revision 2007-08-16 15:19:00

This commit is contained in:
hyung-hwan 2007-08-17 00:19:00 +00:00
parent 6270be21c9
commit b09566a637
4 changed files with 94 additions and 49 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: Awk.cpp,v 1.11 2007/08/05 14:52:54 bacon Exp $
* $Id: Awk.cpp,v 1.13 2007/08/15 15:25:06 bacon Exp $
*/
#include "stdafx.h"
@ -18,12 +18,16 @@ namespace ASE
{
class StubAwk: public Awk
{
public:
public:
StubAwk (Net::Awk^ wrapper): wrapper(wrapper)
{
}
~StubAwk ()
{
wrapper = nullptr;
}
int stubFunctionHandler (
Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
@ -45,8 +49,7 @@ namespace ASE
{
gh.Free ();
io.setHandle (NULL);
return -1;
return -1;
}
}
@ -389,8 +392,8 @@ namespace ASE
ase_vfprintf (stderr, fmt, arg);
}
private:
msclr::auto_gcroot<ASE::Net::Awk^> wrapper;
protected:
msclr::auto_gcroot<ASE::Net::Awk^> wrapper;
};
namespace Net
@ -404,19 +407,53 @@ namespace ASE
//throw new AwkException ("cannot open awk");
}
//option = awk->getOption ();
//Option = Option | OPTION::CRLF;
option = (OPTION)(awk->getOption () | awk->OPT_CRLF);
awk->setOption ((int)option);
}
Awk::~Awk ()
{
Close ();
delete awk;
System::Diagnostics::Debug::Print ("Awk::~Awk");
if (awk != NULL)
{
awk->close ();
ASE::Awk* tmp = awk;
awk = NULL;
delete tmp;
}
}
Awk::!Awk ()
{
System::Diagnostics::Debug::Print ("Awk::!Awk");
if (awk != NULL)
{
awk->close ();
ASE::Awk* tmp = awk;
awk = NULL;
delete tmp; // this causes Awk::~Awk to be called because the destrucotr of StubAwk reference to this with auto_gcroot
}
}
Awk::OPTION Awk::Option::get ()
{
if (awk != NULL) this->option = (OPTION)awk->getOption ();
return this->option;
}
void Awk::Option::set (Awk::OPTION opt)
{
this->option = opt;
if (awk != NULL) awk->setOption ((int)this->option);
}
void Awk::Close ()
{
awk->close ();
System::Diagnostics::Debug::Print ("Awk::Close");
if (awk != NULL)
{
awk->close ();
}
}
bool Awk::Parse ()

View File

@ -1,5 +1,5 @@
/*
* $Id: Awk.hpp,v 1.9 2007/08/05 14:52:54 bacon Exp $
* $Id: Awk.hpp,v 1.11 2007/08/15 15:25:06 bacon Exp $
*/
#pragma once
@ -164,6 +164,7 @@ namespace ASE
typedef ASE::Awk::char_t char_t;
Awk ();
!Awk ();
virtual ~Awk ();
//bool Open ();
@ -177,15 +178,15 @@ namespace ASE
bool AddFunction (System::String^ name, int minArgs, int maxArgs, FunctionHandler^ handler);
bool DeleteFunction (System::String^ name);
property OPTION^ Option
property OPTION Option
{
OPTION^ get () { return this->option; }
void set (OPTION^ opt) { this->option = opt; }
OPTION get (); //{ return this->option; }
void set (OPTION opt); //{ this->option = opt; }
}
protected:
ASE::Awk* awk;
OPTION^ option;
OPTION option;
public protected:
// Source

View File

@ -65,6 +65,7 @@ namespace asetestnet
// tbxSourceInput
//
this.tbxSourceInput.Dock = System.Windows.Forms.DockStyle.Fill;
this.tbxSourceInput.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.tbxSourceInput.Location = new System.Drawing.Point(0, 19);
this.tbxSourceInput.Multiline = true;
this.tbxSourceInput.Name = "tbxSourceInput";
@ -136,6 +137,7 @@ namespace asetestnet
// tbxSourceOutput
//
this.tbxSourceOutput.Dock = System.Windows.Forms.DockStyle.Fill;
this.tbxSourceOutput.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.tbxSourceOutput.Location = new System.Drawing.Point(0, 19);
this.tbxSourceOutput.Multiline = true;
this.tbxSourceOutput.Name = "tbxSourceOutput";
@ -169,6 +171,7 @@ namespace asetestnet
// tbxConsoleInput
//
this.tbxConsoleInput.Dock = System.Windows.Forms.DockStyle.Fill;
this.tbxConsoleInput.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.tbxConsoleInput.Location = new System.Drawing.Point(0, 19);
this.tbxConsoleInput.Multiline = true;
this.tbxConsoleInput.Name = "tbxConsoleInput";
@ -201,6 +204,7 @@ namespace asetestnet
// tbxConsoleOutput
//
this.tbxConsoleOutput.Dock = System.Windows.Forms.DockStyle.Fill;
this.tbxConsoleOutput.Font = new System.Drawing.Font("Courier New", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.tbxConsoleOutput.Location = new System.Drawing.Point(0, 19);
this.tbxConsoleOutput.Multiline = true;
this.tbxConsoleOutput.Name = "tbxConsoleOutput";

View File

@ -18,45 +18,48 @@ namespace asetestnet
private void btnRun_Click(object sender, EventArgs e)
{
//using (Awk awk = new Awk())
{
Awk awk = new Awk();
tbxSourceOutput.Text = "";
tbxConsoleOutput.Text = "";
tbxSourceOutput.Text = "";
tbxConsoleOutput.Text = "";
if (!awk.Parse(tbxSourceInput, tbxSourceOutput))
{
//MessageBox.Show(awk.ErrorMessage);
}
else
{
/*
awk.EntryPoint = cbxEntryPoint.Text;
awk.ArgumentsToEntryPoint = chkPassArgumentsToEntryPoint.Checked;*/
bool n;
/*int nargs = lbxArguments.Items.Count;
if (nargs > 0)
{
string[] args = new string[nargs];
for (int i = 0; i < nargs; i++)
args[i] = lbxArguments.Items[i].ToString();
n = awk.Run(args);
}
else*/ n = awk.Run(tbxConsoleInput, tbxConsoleOutput);
if (!n)
if (!awk.Parse(tbxSourceInput, tbxSourceOutput))
{
MessageBox.Show("Parse error");
//MessageBox.Show(awk.ErrorMessage);
}
else
{
/*
awk.EntryPoint = cbxEntryPoint.Text;
awk.ArgumentsToEntryPoint = chkPassArgumentsToEntryPoint.Checked;*/
bool n;
/*int nargs = lbxArguments.Items.Count;
if (nargs > 0)
{
string[] args = new string[nargs];
for (int i = 0; i < nargs; i++)
args[i] = lbxArguments.Items[i].ToString();
n = awk.Run(args);
}
else*/
n = awk.Run(tbxConsoleInput, tbxConsoleOutput);
if (!n)
{
//MessageBox.Show(awk.ErrorMessage);
MessageBox.Show("Run Error");
}
}
awk.Close();
}
//awk.Close();
//awk.Dispose();
}
private void btnAddArgument_Click(object sender, EventArgs e)
{