2007-05-17 00:14:00 +00:00
|
|
|
/*
|
2007-07-21 01:21:00 +00:00
|
|
|
* $Id: Awk.hpp,v 1.6 2007/07/19 14:35:10 bacon Exp $
|
2007-05-17 00:14:00 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <ase/awk/Awk.hpp>
|
|
|
|
|
|
|
|
using namespace System;
|
|
|
|
|
|
|
|
namespace ASE
|
|
|
|
{
|
2007-07-16 20:16:00 +00:00
|
|
|
namespace Net
|
2007-05-17 00:14:00 +00:00
|
|
|
{
|
|
|
|
|
|
|
|
public ref class Awk abstract
|
|
|
|
{
|
|
|
|
public:
|
2007-07-17 20:20:00 +00:00
|
|
|
/*
|
2007-05-17 00:14:00 +00:00
|
|
|
ref class Source
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum class MODE
|
|
|
|
{
|
|
|
|
READ = ASE::Awk::Source::READ,
|
|
|
|
WRITE = ASE::Awk::Source::WRITE
|
|
|
|
};
|
|
|
|
|
|
|
|
property MODE^ Mode
|
|
|
|
{
|
|
|
|
MODE^ get () { return this->mode; }
|
|
|
|
void set (MODE^ mode) { this->mode = mode; }
|
|
|
|
};
|
|
|
|
|
|
|
|
private:
|
|
|
|
MODE^ mode;
|
2007-07-17 20:20:00 +00:00
|
|
|
};*/
|
2007-05-17 00:14:00 +00:00
|
|
|
|
|
|
|
ref class Extio
|
|
|
|
{
|
2007-07-18 20:12:00 +00:00
|
|
|
public:
|
2007-07-21 01:21:00 +00:00
|
|
|
Extio (System::String^ name): handle (nullptr)
|
2007-07-18 20:12:00 +00:00
|
|
|
{
|
2007-07-21 01:21:00 +00:00
|
|
|
this->name = name;
|
2007-07-18 20:12:00 +00:00
|
|
|
}
|
2007-05-17 00:14:00 +00:00
|
|
|
|
2007-07-18 20:12:00 +00:00
|
|
|
property Object^ Handle
|
|
|
|
{
|
|
|
|
Object^ get () { return this->handle; }
|
|
|
|
void set (Object^ handle) { this->handle = handle; }
|
|
|
|
}
|
|
|
|
|
2007-07-21 01:21:00 +00:00
|
|
|
property System::String^ Name
|
|
|
|
{
|
|
|
|
System::String^ get () { return this->name; }
|
|
|
|
};
|
|
|
|
|
2007-07-18 20:12:00 +00:00
|
|
|
private:
|
|
|
|
Object^ handle;
|
2007-07-21 01:21:00 +00:00
|
|
|
System::String^ name;
|
2007-05-17 00:14:00 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
ref class Pipe: public Extio
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum class MODE
|
|
|
|
{
|
|
|
|
READ = ASE::Awk::Pipe::READ,
|
|
|
|
WRITE = ASE::Awk::Pipe::WRITE
|
|
|
|
};
|
|
|
|
|
|
|
|
property MODE^ Mode
|
|
|
|
{
|
|
|
|
MODE^ get () { return this->mode; }
|
|
|
|
};
|
|
|
|
|
2007-07-21 01:21:00 +00:00
|
|
|
Pipe (System::String^ name, MODE^ mode): Extio (name)
|
|
|
|
{
|
|
|
|
this->mode = mode;
|
|
|
|
}
|
|
|
|
|
2007-05-17 00:14:00 +00:00
|
|
|
private:
|
|
|
|
MODE^ mode;
|
|
|
|
};
|
|
|
|
|
|
|
|
ref class File: public Extio
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum class MODE
|
|
|
|
{
|
|
|
|
READ = ASE::Awk::File::READ,
|
|
|
|
WRITE = ASE::Awk::File::WRITE,
|
|
|
|
APPEND = ASE::Awk::File::APPEND
|
|
|
|
};
|
|
|
|
|
|
|
|
property MODE^ Mode
|
|
|
|
{
|
|
|
|
MODE^ get () { return this->mode; }
|
|
|
|
};
|
|
|
|
|
2007-07-21 01:21:00 +00:00
|
|
|
File (System::String^ name, MODE^ mode): Extio (name)
|
|
|
|
{
|
|
|
|
this->mode = mode;
|
|
|
|
}
|
|
|
|
|
2007-05-17 00:14:00 +00:00
|
|
|
private:
|
|
|
|
MODE^ mode;
|
|
|
|
};
|
|
|
|
|
|
|
|
ref class Console: public Extio
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum class MODE
|
|
|
|
{
|
|
|
|
READ = ASE::Awk::Console::READ,
|
|
|
|
WRITE = ASE::Awk::Console::WRITE
|
|
|
|
};
|
|
|
|
|
|
|
|
property MODE^ Mode
|
|
|
|
{
|
|
|
|
MODE^ get () { return this->mode; }
|
|
|
|
};
|
|
|
|
|
2007-07-21 01:21:00 +00:00
|
|
|
Console (System::String^ name, MODE^ mode): Extio (name)
|
|
|
|
{
|
|
|
|
this->mode = mode;
|
|
|
|
}
|
|
|
|
|
2007-05-17 00:14:00 +00:00
|
|
|
private:
|
|
|
|
MODE^ mode;
|
|
|
|
};
|
|
|
|
|
2007-07-19 23:35:00 +00:00
|
|
|
typedef ASE::Awk::char_t char_t;
|
|
|
|
|
2007-05-17 00:14:00 +00:00
|
|
|
Awk ();
|
|
|
|
virtual ~Awk ();
|
|
|
|
|
2007-07-18 20:12:00 +00:00
|
|
|
//bool Open ();
|
2007-07-17 20:20:00 +00:00
|
|
|
void Close ();
|
|
|
|
|
2007-05-17 00:14:00 +00:00
|
|
|
bool Parse ();
|
|
|
|
bool Run ();
|
|
|
|
|
|
|
|
delegate System::Object^ FunctionHandler (array<System::Object^>^ args);
|
|
|
|
|
|
|
|
bool AddFunction (System::String^ name, int minArgs, int maxArgs, FunctionHandler^ handler);
|
|
|
|
bool DeleteFunction (System::String^ name);
|
|
|
|
|
2007-07-16 20:16:00 +00:00
|
|
|
property System::IO::Stream^ SourceInputStream
|
|
|
|
{
|
|
|
|
System::IO::Stream^ get ()
|
|
|
|
{
|
|
|
|
return this->sourceInputStream;
|
|
|
|
}
|
|
|
|
|
|
|
|
void set (System::IO::Stream^ stream)
|
|
|
|
{
|
|
|
|
this->sourceInputStream = stream;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
property System::IO::Stream^ SourceOutputStream
|
|
|
|
{
|
|
|
|
System::IO::Stream^ get ()
|
|
|
|
{
|
|
|
|
return this->sourceOutputStream;
|
|
|
|
}
|
|
|
|
|
|
|
|
void set (System::IO::Stream^ stream)
|
|
|
|
{
|
|
|
|
this->sourceOutputStream = stream;
|
|
|
|
}
|
|
|
|
}
|
2007-07-18 20:12:00 +00:00
|
|
|
|
|
|
|
delegate int OpenPipe (Pipe^ pipe);
|
|
|
|
delegate int ClosePipe (Pipe^ pipe);
|
2007-07-19 23:35:00 +00:00
|
|
|
delegate int ReadPipe (Pipe^ pipe, cli::array<char_t>^ buf, int len);
|
|
|
|
delegate int WritePipe (Pipe^ pipe, cli::array<char_t>^ buf, int len);
|
2007-07-18 20:12:00 +00:00
|
|
|
delegate int FlushPipe (Pipe^ pipe);
|
|
|
|
|
|
|
|
delegate int OpenFile (File^ file);
|
|
|
|
delegate int CloseFile (File^ file);
|
2007-07-19 23:35:00 +00:00
|
|
|
delegate int ReadFile (File^ file, cli::array<char_t>^ buf, int len);
|
|
|
|
delegate int WriteFile (File^ file, cli::array<char_t>^ buf, int len);
|
2007-07-18 20:12:00 +00:00
|
|
|
delegate int FlushFile (File^ file);
|
|
|
|
|
2007-07-19 23:35:00 +00:00
|
|
|
delegate int OpenConsole (Console^ console);
|
|
|
|
delegate int CloseConsole (Console^ console);
|
|
|
|
delegate int ReadConsole (Console^ console, cli::array<char_t>^ buf, int len);
|
|
|
|
delegate int WriteConsole (Console^ console, cli::array<char_t>^ buf, int len);
|
|
|
|
delegate int FlushConsole (Console^ console);
|
|
|
|
delegate int NextConsole (Console^ console);
|
|
|
|
|
2007-07-18 20:12:00 +00:00
|
|
|
event OpenPipe^ OpenPipeHandler;
|
|
|
|
event ClosePipe^ ClosePipeHandler;
|
|
|
|
event ReadPipe^ ReadPipeHandler;
|
|
|
|
event WritePipe^ WritePipeHandler;
|
|
|
|
event FlushPipe^ FlushPipeHandler;
|
|
|
|
|
|
|
|
event OpenFile^ OpenFileHandler;
|
|
|
|
event CloseFile^ CloseFileHandler;
|
|
|
|
event ReadFile^ ReadFileHandler;
|
|
|
|
event WriteFile^ WriteFileHandler;
|
|
|
|
event FlushFile^ FlushFileHandler;
|
2007-07-19 23:35:00 +00:00
|
|
|
|
|
|
|
event OpenConsole^ OpenConsoleHandler;
|
|
|
|
event CloseConsole^ CloseConsoleHandler;
|
|
|
|
event ReadConsole^ ReadConsoleHandler;
|
|
|
|
event WriteConsole^ WriteConsoleHandler;
|
|
|
|
event FlushConsole^ FlushConsoleHandler;
|
|
|
|
event NextConsole^ NextConsoleHandler;
|
|
|
|
|
2007-07-16 20:16:00 +00:00
|
|
|
protected:
|
2007-05-17 00:14:00 +00:00
|
|
|
ASE::Awk* awk;
|
2007-07-17 20:20:00 +00:00
|
|
|
|
2007-07-16 20:16:00 +00:00
|
|
|
System::IO::Stream^ sourceInputStream;
|
|
|
|
System::IO::Stream^ sourceOutputStream;
|
|
|
|
|
|
|
|
public protected:
|
2007-07-18 20:12:00 +00:00
|
|
|
int DispatchFunction (System::String^ name);
|
|
|
|
|
|
|
|
int FireOpenFile (File^ file);
|
|
|
|
int FireCloseFile (File^ file);
|
2007-07-19 23:35:00 +00:00
|
|
|
int FireReadFile (File^ file, cli::array<char_t>^ buf, int len);
|
|
|
|
int FireWriteFile (File^ file, cli::array<char_t>^ buf, int len);
|
2007-07-18 20:12:00 +00:00
|
|
|
int FireFlushFile (File^ file);
|
|
|
|
|
|
|
|
int FireOpenPipe (Pipe^ pipe);
|
|
|
|
int FireClosePipe (Pipe^ pipe);
|
2007-07-19 23:35:00 +00:00
|
|
|
int FireReadPipe (Pipe^ pipe, cli::array<char_t>^ buf, int len);
|
|
|
|
int FireWritePipe (Pipe^ pipe, cli::array<char_t>^ buf, int len);
|
2007-07-18 20:12:00 +00:00
|
|
|
int FireFlushPipe (Pipe^ pipe);
|
2007-07-19 23:35:00 +00:00
|
|
|
|
|
|
|
int FireOpenConsole (Console^ console);
|
|
|
|
int FireCloseConsole (Console^ console);
|
|
|
|
int FireReadConsole (Console^ console, cli::array<char_t>^ buf, int len);
|
|
|
|
int FireWriteConsole (Console^ console, cli::array<char_t>^ buf, int len);
|
|
|
|
int FireFlushConsole (Console^ console);
|
|
|
|
int FireNextConsole (Console^ console);
|
2007-05-17 00:14:00 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|