Recovered from cvs revision 2007-07-16 11:12:00

This commit is contained in:
hyung-hwan 2007-07-16 20:16:00 +00:00
parent 4373003780
commit 0f87fb5842
23 changed files with 818 additions and 84 deletions

View File

@ -50,6 +50,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asetestawk++", "test\awk\as
{57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F} = {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F} {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F} = {57F1E1D0-28B6-42BF-BAFB-045AEE2DCF4F}
EndProjectSection EndProjectSection
EndProject EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asenet", "net\asenet.vcproj", "{A63E9DF9-1D47-4D81-834C-1D40406C18C4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "asetestnet", "test\net\asetestnet.csproj", "{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -140,26 +144,6 @@ Global
{868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|Mixed Platforms.Build.0 = Release|Win32 {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|Mixed Platforms.Build.0 = Release|Win32
{868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|Win32.ActiveCfg = Release|Win32 {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|Win32.ActiveCfg = Release|Win32
{868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|Win32.Build.0 = Release|Win32 {868702B0-CB6B-4F1D-B98A-32193347EFAF}.Release|Win32.Build.0 = Release|Win32
{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Debug|Win32.ActiveCfg = Debug|Any CPU
{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|Any CPU.Build.0 = Release|Any CPU
{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{F14B75D8-3ED7-4621-B5B9-E96A80B5D809}.Release|Win32.ActiveCfg = Release|Any CPU
{7F679165-41FB-4E1E-B3F5-23C5EE94166A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7F679165-41FB-4E1E-B3F5-23C5EE94166A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7F679165-41FB-4E1E-B3F5-23C5EE94166A}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{7F679165-41FB-4E1E-B3F5-23C5EE94166A}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{7F679165-41FB-4E1E-B3F5-23C5EE94166A}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7F679165-41FB-4E1E-B3F5-23C5EE94166A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7F679165-41FB-4E1E-B3F5-23C5EE94166A}.Release|Any CPU.Build.0 = Release|Any CPU
{7F679165-41FB-4E1E-B3F5-23C5EE94166A}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{7F679165-41FB-4E1E-B3F5-23C5EE94166A}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{7F679165-41FB-4E1E-B3F5-23C5EE94166A}.Release|Win32.ActiveCfg = Release|Any CPU
{E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|Any CPU.ActiveCfg = Debug|Win32 {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|Any CPU.ActiveCfg = Debug|Win32
{E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
{E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|Mixed Platforms.Build.0 = Debug|Win32 {E7A8B741-4E9D-4ED4-9F77-E7F637A678A5}.Debug|Mixed Platforms.Build.0 = Debug|Win32
@ -190,6 +174,16 @@ Global
{A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|Mixed Platforms.Build.0 = Release|Win32 {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|Mixed Platforms.Build.0 = Release|Win32
{A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|Win32.ActiveCfg = Release|Win32 {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|Win32.ActiveCfg = Release|Win32
{A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|Win32.Build.0 = Release|Win32 {A63E9DF9-1D47-4D81-834C-1D40406C18C4}.Release|Win32.Build.0 = Release|Win32
{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Debug|Win32.ActiveCfg = Debug|Any CPU
{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|Any CPU.Build.0 = Release|Any CPU
{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}.Release|Win32.ActiveCfg = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.cpp,v 1.45 2007/06/28 15:45:57 bacon Exp $ * $Id: Awk.cpp,v 1.46 2007/07/15 16:31:59 bacon Exp $
*/ */
#include <ase/awk/Awk.hpp> #include <ase/awk/Awk.hpp>
@ -734,7 +734,7 @@ namespace ASE
} }
Return ret (run); Return ret (run);
int n = (this->*handler) (&ret, args, nargs); int n = (this->*handler) (&ret, args, nargs, name, len);
delete[] args; delete[] args;

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.hpp,v 1.44 2007/06/29 11:36:45 bacon Exp $ * $Id: Awk.hpp,v 1.45 2007/07/15 16:31:59 bacon Exp $
*/ */
#ifndef _ASE_AWK_AWK_HPP_ #ifndef _ASE_AWK_AWK_HPP_
@ -429,7 +429,8 @@ namespace ASE
const char_t** args = ASE_NULL, size_t nargs = 0); const char_t** args = ASE_NULL, size_t nargs = 0);
typedef int (Awk::*FunctionHandler) ( typedef int (Awk::*FunctionHandler) (
Return* ret, const Argument* args, size_t nargs); Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len);
virtual int addFunction ( virtual int addFunction (
const char_t* name, size_t minArgs, size_t maxArgs, const char_t* name, size_t minArgs, size_t maxArgs,

View File

@ -1,5 +1,5 @@
/* /*
* $Id: StdAwk.cpp,v 1.21 2007/05/23 14:15:16 bacon Exp $ * $Id: StdAwk.cpp,v 1.22 2007/07/15 16:31:59 bacon Exp $
*/ */
#include <ase/awk/StdAwk.hpp> #include <ase/awk/StdAwk.hpp>
@ -59,52 +59,62 @@ namespace ASE
return 0; return 0;
} }
int StdAwk::sin (Return* ret, const Argument* args, size_t nargs) int StdAwk::sin (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
return ret->set ((real_t)::sin(args[0].toReal())); return ret->set ((real_t)::sin(args[0].toReal()));
} }
int StdAwk::cos (Return* ret, const Argument* args, size_t nargs) int StdAwk::cos (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
return ret->set ((real_t)::cos(args[0].toReal())); return ret->set ((real_t)::cos(args[0].toReal()));
} }
int StdAwk::tan (Return* ret, const Argument* args, size_t nargs) int StdAwk::tan (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
return ret->set ((real_t)::tan(args[0].toReal())); return ret->set ((real_t)::tan(args[0].toReal()));
} }
int StdAwk::atan2 (Return* ret, const Argument* args, size_t nargs) int StdAwk::atan2 (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
return ret->set ((real_t)::atan2(args[0].toReal(), args[1].toReal())); return ret->set ((real_t)::atan2(args[0].toReal(), args[1].toReal()));
} }
int StdAwk::log (Return* ret, const Argument* args, size_t nargs) int StdAwk::log (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
return ret->set ((real_t)::log(args[0].toReal())); return ret->set ((real_t)::log(args[0].toReal()));
} }
int StdAwk::exp (Return* ret, const Argument* args, size_t nargs) int StdAwk::exp (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
return ret->set ((real_t)::exp(args[0].toReal())); return ret->set ((real_t)::exp(args[0].toReal()));
} }
int StdAwk::sqrt (Return* ret, const Argument* args, size_t nargs) int StdAwk::sqrt (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
return ret->set ((real_t)::sqrt(args[0].toReal())); return ret->set ((real_t)::sqrt(args[0].toReal()));
} }
int StdAwk::fnint (Return* ret, const Argument* args, size_t nargs) int StdAwk::fnint (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
return ret->set (args[0].toInt()); return ret->set (args[0].toInt());
} }
int StdAwk::rand (Return* ret, const Argument* args, size_t nargs) int StdAwk::rand (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
return ret->set ((long_t)::rand()); return ret->set ((long_t)::rand());
} }
int StdAwk::srand (Return* ret, const Argument* args, size_t nargs) int StdAwk::srand (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
unsigned int prevSeed = seed; unsigned int prevSeed = seed;
seed = (unsigned int)args[0].toInt(); seed = (unsigned int)args[0].toInt();
@ -112,12 +122,14 @@ namespace ASE
return ret->set ((long_t)prevSeed); return ret->set ((long_t)prevSeed);
} }
int StdAwk::systime (Return* ret, const Argument* args, size_t nargs) int StdAwk::systime (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
return ret->set ((long_t)::time(NULL)); return ret->set ((long_t)::time(NULL));
} }
int StdAwk::strftime (Return* ret, const Argument* args, size_t nargs) int StdAwk::strftime (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
const char_t* fmt; const char_t* fmt;
size_t fln; size_t fln;
@ -135,15 +147,16 @@ namespace ASE
#endif #endif
#ifdef ASE_CHAR_IS_MCHAR #ifdef ASE_CHAR_IS_MCHAR
size_t len = ::strftime (buf, ASE_COUNTOF(buf), fmt, tm); size_t l = ::strftime (buf, ASE_COUNTOF(buf), fmt, tm);
#else #else
size_t len = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm); size_t l = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm);
#endif #endif
return ret->set (buf, len); return ret->set (buf, l);
} }
int StdAwk::strfgmtime (Return* ret, const Argument* args, size_t nargs) int StdAwk::strfgmtime (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
const char_t* fmt; const char_t* fmt;
size_t fln; size_t fln;
@ -161,28 +174,29 @@ namespace ASE
#endif #endif
#ifdef ASE_CHAR_IS_MCHAR #ifdef ASE_CHAR_IS_MCHAR
size_t len = ::strftime (buf, ASE_COUNTOF(buf), fmt, tm); size_t l = ::strftime (buf, ASE_COUNTOF(buf), fmt, tm);
#else #else
size_t len = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm); size_t l = ::wcsftime (buf, ASE_COUNTOF(buf), fmt, tm);
#endif #endif
return ret->set (buf, len); return ret->set (buf, l);
} }
int StdAwk::system (Return* ret, const Argument* args, size_t nargs) int StdAwk::system (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
size_t len; size_t l;
const char_t* ptr = args[0].toStr(&len); const char_t* ptr = args[0].toStr(&l);
#ifdef _WIN32 #ifdef _WIN32
return ret->set ((long_t)::_tsystem(ptr)); return ret->set ((long_t)::_tsystem(ptr));
#elif defined(ASE_CHAR_IS_MCHAR) #elif defined(ASE_CHAR_IS_MCHAR)
return ret->set ((long_t)::system(ptr)); return ret->set ((long_t)::system(ptr));
#else #else
char* mbs = (char*)ase_awk_malloc (awk, len*5+1); char* mbs = (char*)ase_awk_malloc (awk, l*5+1);
if (mbs == ASE_NULL) return -1; if (mbs == ASE_NULL) return -1;
::size_t mbl = ::wcstombs (mbs, ptr, len*5); ::size_t mbl = ::wcstombs (mbs, ptr, l*5);
if (mbl == (::size_t)-1) return -1; if (mbl == (::size_t)-1) return -1;
mbs[mbl] = '\0'; mbs[mbl] = '\0';
int n = ret->set ((long_t)::system(mbs)); int n = ret->set ((long_t)::system(mbs));

View File

@ -1,5 +1,5 @@
/* /*
* $Id: StdAwk.hpp,v 1.11 2007/05/23 14:15:16 bacon Exp $ * $Id: StdAwk.hpp,v 1.12 2007/07/15 16:31:59 bacon Exp $
*/ */
#ifndef _ASE_AWK_STDAWK_HPP_ #ifndef _ASE_AWK_STDAWK_HPP_
@ -19,20 +19,34 @@ namespace ASE
protected: protected:
// builtin functions // builtin functions
int sin (Return* ret, const Argument* args, size_t nargs); int sin (Return* ret, const Argument* args, size_t nargs,
int cos (Return* ret, const Argument* args, size_t nargs); const char_t* name, size_t len);
int tan (Return* ret, const Argument* args, size_t nargs); int cos (Return* ret, const Argument* args, size_t nargs,
int atan2 (Return* ret, const Argument* args, size_t nargs); const char_t* name, size_t len);
int log (Return* ret, const Argument* args, size_t nargs); int tan (Return* ret, const Argument* args, size_t nargs,
int exp (Return* ret, const Argument* args, size_t nargs); const char_t* name, size_t len);
int sqrt (Return* ret, const Argument* args, size_t nargs); int atan2 (Return* ret, const Argument* args, size_t nargs,
int fnint (Return* ret, const Argument* args, size_t nargs); const char_t* name, size_t len);
int rand (Return* ret, const Argument* args, size_t nargs); int log (Return* ret, const Argument* args, size_t nargs,
int srand (Return* ret, const Argument* args, size_t nargs); const char_t* name, size_t len);
int systime (Return* ret, const Argument* args, size_t nargs); int exp (Return* ret, const Argument* args, size_t nargs,
int strftime (Return* ret, const Argument* args, size_t nargs); const char_t* name, size_t len);
int strfgmtime (Return* ret, const Argument* args, size_t nargs); int sqrt (Return* ret, const Argument* args, size_t nargs,
int system (Return* ret, const Argument* args, size_t nargs); const char_t* name, size_t len);
int fnint (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len);
int rand (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len);
int srand (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len);
int systime (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len);
int strftime (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len);
int strfgmtime (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len);
int system (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len);
// pipe io handlers // pipe io handlers
int openPipe (Pipe& io); int openPipe (Pipe& io);

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.cpp,v 1.2 2007/07/09 16:07:30 bacon Exp $ * $Id: Awk.cpp,v 1.3 2007/07/15 16:31:59 bacon Exp $
*/ */
#include "stdafx.h" #include "stdafx.h"
@ -12,37 +12,57 @@
#include <msclr/auto_gcroot.h> #include <msclr/auto_gcroot.h>
namespace ASE namespace ASE
{ {
class StubAwk: public Awk class StubAwk: public Awk
{ {
public: public:
StubAwk (NET::Awk^ wrapper): wrapper(wrapper) StubAwk (Net::Awk^ wrapper): wrapper(wrapper)
{ {
} }
int stubFunctionHandler (
Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{
System::String^ nm = gcnew System::String (name, 0, len);
return wrapper->DispatchFunction (nm);
}
int openSource (Source& io) int openSource (Source& io)
{ {
NET::Awk::Source^ nio = gcnew NET::Awk::Source (); /*
Net::Awk::Source^ nio = gcnew Net::Awk::Source ();
int n = wrapper->OpenSource (nio); int n = wrapper->OpenSource (nio);
// TODO: put nio back to io.
return n; return n;
*/
if (io.getMode() == Source::READ)
{
//wrapper->SourceInputStream->BeginRead ();
}
else
{
//wrapper->SourceOutputStream->BeginWrite ();
}
return 1;
} }
int closeSource (Source& io) int closeSource (Source& io)
{ {
//System::IO::Stream^ stream = io.getHandle();
//stream->Close ();
return 0; return 0;
} }
ssize_t readSource (Source& io, char_t* buf, size_t len) ssize_t readSource (Source& io, char_t* buf, size_t len)
{ {
//System::IO::Stream^ stream = io.getHandle();
return 0; return 0;
} }
ssize_t writeSource (Source& io, char_t* buf, size_t len) ssize_t writeSource (Source& io, char_t* buf, size_t len)
{ {
//System::IO::Stream^ stream = io.getHandle();
return 0; return 0;
} }
@ -100,10 +120,10 @@ namespace ASE
} }
private: private:
msclr::auto_gcroot<NET::Awk^> wrapper; msclr::auto_gcroot<Net::Awk^> wrapper;
}; };
namespace NET namespace Net
{ {
Awk::Awk () Awk::Awk ()
@ -126,14 +146,25 @@ namespace ASE
return awk->run () == 0; return awk->run () == 0;
} }
bool Awk::AddFunction (System::String^ name, int minArgs, int maxArgs, FunctionHandler^ handler) bool Awk::AddFunction (
System::String^ name, int minArgs, int maxArgs,
FunctionHandler^ handler)
{ {
return false; cli::pin_ptr<const wchar_t> nptr = PtrToStringChars(name);
return awk->addFunction (nptr, minArgs, maxArgs,
(ASE::Awk::FunctionHandler)&StubAwk::stubFunctionHandler) == 0;
} }
bool Awk::DeleteFunction (System::String^ name) bool Awk::DeleteFunction (System::String^ name)
{ {
return false; pin_ptr<const wchar_t> nptr = PtrToStringChars(name);
return awk->deleteFunction (nptr) == 0;
}
int Awk::DispatchFunction (System::String^ name)
{
return 0;
} }
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.hpp,v 1.1 2007/05/15 08:29:30 bacon Exp $ * $Id: Awk.hpp,v 1.2 2007/07/15 16:31:59 bacon Exp $
*/ */
#pragma once #pragma once
@ -10,13 +10,12 @@ using namespace System;
namespace ASE namespace ASE
{ {
namespace NET namespace Net
{ {
public ref class Awk abstract public ref class Awk abstract
{ {
public: public:
ref class Source ref class Source
{ {
public: public:
@ -115,8 +114,39 @@ namespace ASE
virtual int ReadSource (Source^ io, ASE::Awk::char_t* buf, ASE::Awk::size_t len) = 0; virtual int ReadSource (Source^ io, ASE::Awk::char_t* buf, ASE::Awk::size_t len) = 0;
virtual int WriteSource (Source^ io, ASE::Awk::char_t* buf, ASE::Awk::size_t len) = 0; virtual int WriteSource (Source^ io, ASE::Awk::char_t* buf, ASE::Awk::size_t len) = 0;
private: 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;
}
}
protected:
ASE::Awk* awk; ASE::Awk* awk;
System::IO::Stream^ sourceInputStream;
System::IO::Stream^ sourceOutputStream;
public protected:
int Awk::DispatchFunction (System::String^ name);
}; };
} }

15
ase/net/StdAwk.cpp Normal file
View File

@ -0,0 +1,15 @@
/*
* $Id: StdAwk.cpp,v 1.1 2007/07/15 16:31:59 bacon Exp $
*/
#include "stdafx.h"
#include <ase/net/StdAwk.hpp>
namespace ASE
{
namespace Net
{
}
}

16
ase/net/StdAwk.hpp Normal file
View File

@ -0,0 +1,16 @@
/*
* $Id: StdAwk.hpp,v 1.1 2007/07/15 16:31:59 bacon Exp $
*/
#include <ase/net/Awk.hpp>
namespace ASE
{
namespace Net
{
public ref class StdAwk: Awk
{
public:
};
}
}

View File

@ -1,5 +1,5 @@
/* /*
* $Id: asenet.h,v 1.1 2007/05/15 08:29:30 bacon Exp $ * $Id: asenet.h,v 1.2 2007/07/15 16:31:59 bacon Exp $
*/ */
#pragma once #pragma once
@ -8,7 +8,7 @@ using namespace System;
namespace ASE namespace ASE
{ {
namespace NET namespace Net
{ {
} }

View File

@ -59,7 +59,7 @@
/> />
<Tool <Tool
Name="VCLinkerTool" Name="VCLinkerTool"
AdditionalDependencies="$(NoInherit)" AdditionalDependencies="asecmn.lib aseawk.lib aseawk++.lib aseutl.lib"
LinkIncremental="2" LinkIncremental="2"
AdditionalLibraryDirectories="$(OutDir)" AdditionalLibraryDirectories="$(OutDir)"
GenerateDebugInformation="true" GenerateDebugInformation="true"
@ -195,6 +195,10 @@
RelativePath=".\AssemblyInfo.cpp" RelativePath=".\AssemblyInfo.cpp"
> >
</File> </File>
<File
RelativePath=".\assert.cpp"
>
</File>
<File <File
RelativePath=".\Awk.cpp" RelativePath=".\Awk.cpp"
> >
@ -219,6 +223,10 @@
/> />
</FileConfiguration> </FileConfiguration>
</File> </File>
<File
RelativePath=".\StdAwk.cpp"
>
</File>
</Filter> </Filter>
<Filter <Filter
Name="Header Files" Name="Header Files"
@ -241,6 +249,10 @@
RelativePath=".\Stdafx.h" RelativePath=".\Stdafx.h"
> >
</File> </File>
<File
RelativePath=".\StdAwk.hpp"
>
</File>
</Filter> </Filter>
<Filter <Filter
Name="Resource Files" Name="Resource Files"

40
ase/net/assert.cpp Normal file
View File

@ -0,0 +1,40 @@
/*
* $Id: assert.cpp,v 1.1 2007/07/15 16:31:59 bacon Exp $
*/
#include "stdafx.h"
#ifndef NDEBUG
#include <ase/cmn/types.h>
#include <ase/cmn/macros.h>
#include <windows.h>
#include <stdlib.h>
#include <tchar.h>
void ase_assert_abort (void)
{
::abort ();
}
void ase_assert_printf (const ase_char_t* fmt, ...)
{
va_list ap;
#ifdef _WIN32
int n;
ase_char_t buf[1024];
#endif
va_start (ap, fmt);
n = _vsntprintf (buf, ASE_COUNTOF(buf), fmt, ap);
if (n < 0) buf[ASE_COUNTOF(buf)-1] = ASE_T('\0');
//ase_vprintf (fmt, ap);
::MessageBox (NULL, buf,
ASE_T("ASSERTION FAILURE"), MB_OK|MB_ICONERROR);
va_end (ap);
}
#endif

View File

@ -1,5 +1,5 @@
/* /*
* $Id: Awk.cpp,v 1.29 2007/06/25 14:01:28 bacon Exp $ * $Id: Awk.cpp,v 1.30 2007/07/15 16:31:59 bacon Exp $
*/ */
#include <ase/awk/StdAwk.hpp> #include <ase/awk/StdAwk.hpp>
@ -82,7 +82,8 @@ public:
#endif #endif
} }
int sleep (Return* ret, const Argument* args, size_t nargs) int sleep (Return* ret, const Argument* args, size_t nargs,
const char_t* name, size_t len)
{ {
#ifdef _WIN32 #ifdef _WIN32
::Sleep (args[0].toInt() * 1000); ::Sleep (args[0].toInt() * 1000);

61
ase/test/net/Form1.Designer.cs generated Normal file
View File

@ -0,0 +1,61 @@
namespace asetestnet
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(56, 54);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(71, 25);
this.button1.TabIndex = 0;
this.button1.Text = "button1";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.Add(this.button1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button button1;
}
}

23
ase/test/net/Form1.cs Normal file
View File

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace asetestnet
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ASE.Net.Awk awk = new ASE.Net.Awk();
}
}
}

120
ase/test/net/Form1.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

20
ase/test/net/Program.cs Normal file
View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace asetestnet
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

View File

@ -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("asetestnet")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("asetestnet")]
[assembly: AssemblyCopyright("Copyright © 2007")]
[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("ceaa9e15-13fb-4248-a906-14965d5019c3")]
// 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")]

View File

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.832
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace asetestnet.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// 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()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("asetestnet.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.832
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace asetestnet.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;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -0,0 +1,84 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{7CC01C3D-FC1A-4587-868A-7FC4449B3F8B}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>asetestnet</RootNamespace>
<AssemblyName>asetestnet</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="Form1.resx">
<SubType>Designer</SubType>
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\net\asenet.vcproj">
<Project>{A63E9DF9-1D47-4D81-834C-1D40406C18C4}</Project>
<Name>asenet</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>