byteArrayTyConName,
mutableByteArrayTyConName,
bcoPrimTyConName,
- stablePtrTyConName,
- stablePtrDataConName,
-- Classes. *Must* include:
-- classes that are grabbed by key (e.g., eqClassKey)
toPName, bpermutePName, bpermuteDftPName, indexOfPName,
-- FFI primitive types that are not wired-in.
+ stablePtrTyConName, ptrTyConName, funPtrTyConName, addrTyConName,
int8TyConName, int16TyConName, int32TyConName, int64TyConName,
word8TyConName, word16TyConName, word32TyConName, word64TyConName,
-- Booleans
andName, orName
+
+ -- dotnet interop
+ , objectTyConName, marshalObjectName, unmarshalObjectName
+ , marshalStringName, unmarshalStringName, checkDotnetResName
]
monadNames :: [Name] -- The monad ops need by a HsDo
pREL_TOP_HANDLER_Name = mkModuleName "GHC.TopHandler"
sYSTEM_IO_Name = mkModuleName "System.IO"
dYNAMIC_Name = mkModuleName "Data.Dynamic"
+tRAVERSE_Name = mkModuleName "Data.Traverse"
gENERICS_Name = mkModuleName "Data.Generics"
+dOTNET_Name = mkModuleName "GHC.Dotnet"
rEAD_PREC_Name = mkModuleName "Text.ParserCombinators.ReadPrec"
lEX_Name = mkModuleName "Text.Read.Lex"
pREL_FLOAT = mkBasePkgModule pREL_FLOAT_Name
pRELUDE = mkBasePkgModule pRELUDE_Name
-
-iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
-
-- MetaHaskell Extension text2 from Meta/work/gen.hs
mETA_META_Name = mkModuleName "Language.Haskell.THSyntax"
+dOLLAR_MAIN_Name = mkModuleName "$Main" -- Root module for initialisation
+dOLLAR_MAIN = mkHomeModule dOLLAR_MAIN_Name
+iNTERACTIVE = mkHomeModule (mkModuleName "$Interactive")
\end{code}
%************************************************************************
unpackCStringUtf8_RDR = nameRdrName unpackCStringUtf8Name
newStablePtr_RDR = nameRdrName newStablePtrName
+addrDataCon_RDR = dataQual_RDR aDDR_Name FSLIT("A#")
bindIO_RDR = nameRdrName bindIOName
returnIO_RDR = nameRdrName returnIOName
\begin{code}
-dollarMainName = varQual mAIN_Name FSLIT("$main") dollarMainKey
+dollarMainName = varQual dOLLAR_MAIN_Name FSLIT("main") dollarMainKey
runIOName = varQual pREL_TOP_HANDLER_Name FSLIT("runIO") runMainKey
-- Stuff from GHC.Prim
wordDataConName = wDataQual pREL_WORD_Name FSLIT("W#") wordDataConKey
-- Addr module
-addrTyConName = wTcQual aDDR_Name FSLIT("Addr") addrTyConKey
-addrDataConName = wDataQual aDDR_Name FSLIT("A#") addrDataConKey
+addrTyConName = tcQual aDDR_Name FSLIT("Addr") addrTyConKey
-- PrelPtr module
-ptrTyConName = wTcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
-ptrDataConName = wDataQual pREL_PTR_Name FSLIT("Ptr") ptrDataConKey
-funPtrTyConName = wTcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
-funPtrDataConName = wDataQual pREL_PTR_Name FSLIT("FunPtr") funPtrDataConKey
+ptrTyConName = tcQual pREL_PTR_Name FSLIT("Ptr") ptrTyConKey
+funPtrTyConName = tcQual pREL_PTR_Name FSLIT("FunPtr") funPtrTyConKey
-- Byte array types
byteArrayTyConName = tcQual pREL_BYTEARR_Name FSLIT("ByteArray") byteArrayTyConKey
-- Foreign objects and weak pointers
stablePtrTyConName = tcQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrTyConKey
-stablePtrDataConName = dataQual pREL_STABLE_Name FSLIT("StablePtr") stablePtrDataConKey
newStablePtrName = varQual pREL_STABLE_Name FSLIT("newStablePtr") newStablePtrIdKey
-- Error module
-- Recursive-do notation
mfixName = varQual mONAD_FIX_Name FSLIT("mfix") mfixIdKey
+
+-- dotnet interop
+objectTyConName = wTcQual dOTNET_Name FSLIT("Object") objectTyConKey
+unmarshalObjectName = varQual dOTNET_Name FSLIT("unmarshalObject") unmarshalObjectIdKey
+marshalObjectName = varQual dOTNET_Name FSLIT("marshalObject") marshalObjectIdKey
+marshalStringName = varQual dOTNET_Name FSLIT("marshalString") marshalStringIdKey
+unmarshalStringName = varQual dOTNET_Name FSLIT("unmarshalString") unmarshalStringIdKey
+checkDotnetResName = varQual dOTNET_Name FSLIT("checkResult") checkDotnetResNameIdKey
+
\end{code}
%************************************************************************
-- Parallel array type constructor
parrTyConKey = mkPreludeTyConUnique 82
+-- dotnet interop
+objectTyConKey = mkPreludeTyConUnique 83
+
---------------- Template Haskell -------------------
-- USES TyConUniques 100-119
-----------------------------------------------------
%************************************************************************
\begin{code}
-addrDataConKey = mkPreludeDataConUnique 0
charDataConKey = mkPreludeDataConUnique 1
consDataConKey = mkPreludeDataConUnique 2
doubleDataConKey = mkPreludeDataConUnique 3
largeIntegerDataConKey = mkPreludeDataConUnique 8
nilDataConKey = mkPreludeDataConUnique 11
ratioDataConKey = mkPreludeDataConUnique 12
-stablePtrDataConKey = mkPreludeDataConUnique 13
stableNameDataConKey = mkPreludeDataConUnique 14
trueDataConKey = mkPreludeDataConUnique 15
wordDataConKey = mkPreludeDataConUnique 16
ioDataConKey = mkPreludeDataConUnique 17
-ptrDataConKey = mkPreludeDataConUnique 18
-funPtrDataConKey = mkPreludeDataConUnique 19
-- Generic data constructors
crossDataConKey = mkPreludeDataConUnique 20
bpermutePIdKey = mkPreludeMiscIdUnique 91
bpermuteDftPIdKey = mkPreludeMiscIdUnique 92
indexOfPIdKey = mkPreludeMiscIdUnique 93
+
+-- dotnet interop
+unmarshalObjectIdKey = mkPreludeMiscIdUnique 94
+marshalObjectIdKey = mkPreludeMiscIdUnique 95
+marshalStringIdKey = mkPreludeMiscIdUnique 96
+unmarshalStringIdKey = mkPreludeMiscIdUnique 97
+checkDotnetResNameIdKey = mkPreludeMiscIdUnique 98
+
\end{code}
Certain class operations from Prelude classes. They get their own