cvs commit: hugs98/dotnet License.net hugs98/dotnet/doc
dotnet-lib.html dotnet.html examples.html hugs98/dotnet/examples/basic
Env.hs Http.hs Mail.hs hugs98/dotnet/lib DotNet.hs hugs98/dotnet/lib/Syste
m Array.hs ...
Sigbjorn Finne
sof@glass.cse.ogi.edu
Sun, 2 Mar 2003 22:31:11 -0800
sof 2003/03/02 22:31:11 PST
Modified files:
libraries/Hugs Prelude.hs
src Makefile.in builtin.c connect.h ffi.c
hugs.c input.c iomonad.c machdep.c
machine.c parser.y prelude.h runhugs.c
server.c server.h static.c storage.c
storage.h type.c
src/msc Makefile
src/winhugs Makefile
Added files:
dotnet License.net
dotnet/doc dotnet-lib.html dotnet.html examples.html
dotnet/examples/basic Env.hs Http.hs Mail.hs
dotnet/lib DotNet.hs
dotnet/lib/System Array.hs Console.hs DateTime.hs Enum.hs
MarshalByRefObject.hs Object.hs
ObjectTy.hs String.hs StringTy.hs Type.hs
TypeCode.hs TypeTy.hs ValueType.hs Xml.hs
dotnet/lib/System/Collections IEnumerator.hs
dotnet/lib/System/IO Directory.hs DirectoryInfo.hs
dotnet/lib/System/Xml XmlAttributeCollection.hs
XmlNameTable.hs XmlNamedNodeMap.hs
XmlNode.hs XmlNodeTy.hs XmlReader.hs
dotnet/tools App.cs AssemblyInfo.cs HsOutput.cs
README.txt TypeInfo.cs
src builtin.h
src/dotnet .cvsignore HugsServ.cpp HugsServ.h
HugsWrapper.cs Invoker.cpp Invoker.h
Makefile hugs.rc options.h prim.cpp
prim.h runhugs.rc
Log:
.NET interop + FFI support
This commit adds interop support for the .NET platform. It merges
the modifications made to the Hugs sources by Hugs98.net, but
provides deeper integration by letting you bind to .NET functionality
directly via the FFI:
foreign import dotnet
"static method System.Environment.GetEnvironmentVariable"
getEnv :: String -> IO String
removing the need for writing out those small marshalling wrappers
you have to with Hugs98.net. The supported import decl syntax is as
follows:
foreign import dotnet
"{static}? {[ctor|field|method]}? {'['assembly']'}?classOrFieldOrMethName"
funName :: {FFIType ->}* {IO}? FFIType
where FFIType = usual stuff + (Hugs.Prelude.Object a) + Prelude.String
Support for letting you export Haskell code as .NET classes/methods
via FFI declarations is in prep.
Hope no one minds me integrating these changes; the source mods are
conditional on DOTNET being #defined.
[The dotnet/doc/ + dotnet/examples directories have yet to be
fully sync'ed up.]
Revision Changes Path
1.25 +7 -1 hugs98/libraries/Hugs/Prelude.hs
1.38 +1 -1 hugs98/src/Makefile.in
1.50 +6 -499 hugs98/src/builtin.c
1.69 +17 -3 hugs98/src/connect.h
1.25 +121 -3 hugs98/src/ffi.c
1.118 +11 -10 hugs98/src/hugs.c
1.60 +16 -2 hugs98/src/input.c
1.47 +45 -21 hugs98/src/iomonad.c
1.80 +14 -15 hugs98/src/machdep.c
1.16 +22 -2 hugs98/src/machine.c
1.37 +6 -2 hugs98/src/parser.y
1.43 +5 -9 hugs98/src/prelude.h
1.14 +3 -4 hugs98/src/runhugs.c
1.29 +18 -11 hugs98/src/server.c
1.8 +12 -2 hugs98/src/server.h
1.144 +223 -149 hugs98/src/static.c
1.64 +25 -8 hugs98/src/storage.c
1.53 +86 -33 hugs98/src/storage.h
1.67 +17 -2 hugs98/src/type.c
1.24 +2 -2 hugs98/src/msc/Makefile
1.13 +1 -1 hugs98/src/winhugs/Makefile