[project @ 2003-06-23 10:35:15 by simonpj]
[ghc-hetmet.git] / ghc / compiler / prelude / PrelNames.lhs
index 4aa78af..d65c9f1 100644 (file)
@@ -136,8 +136,6 @@ basicKnownKeyNames
        byteArrayTyConName,
        mutableByteArrayTyConName,
        bcoPrimTyConName,
-       stablePtrTyConName,
-       stablePtrDataConName,
 
        --  Classes.  *Must* include:
        --      classes that are grabbed by key (e.g., eqClassKey)
@@ -157,6 +155,8 @@ basicKnownKeyNames
        realFloatClassName,             -- numeric
        cCallableClassName,             -- mentioned, ccallish
        cReturnableClassName,           -- mentioned, ccallish
+       dataClassName, 
+       typeableClassName,
 
        -- Numeric stuff
        negateName, minusName, 
@@ -201,6 +201,7 @@ basicKnownKeyNames
        toPName, bpermutePName, bpermuteDftPName, indexOfPName,
 
        -- FFI primitive types that are not wired-in.
+       stablePtrTyConName, ptrTyConName, funPtrTyConName, addrTyConName,
        int8TyConName, int16TyConName, int32TyConName, int64TyConName,
        word8TyConName, word16TyConName, word32TyConName, word64TyConName,
 
@@ -213,6 +214,10 @@ basicKnownKeyNames
 
        -- Booleans
        andName, orName
+       
+       -- dotnet interop
+       , objectTyConName, marshalObjectName, unmarshalObjectName
+       , marshalStringName, unmarshalStringName, checkDotnetResName
     ]
 
 monadNames :: [Name]   -- The monad ops need by a HsDo
@@ -253,6 +258,10 @@ pREL_REAL_Name    = mkModuleName "GHC.Real"
 pREL_FLOAT_Name   = mkModuleName "GHC.Float"
 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"
@@ -278,12 +287,12 @@ pREL_REAL         = mkBasePkgModule pREL_REAL_Name
 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}
 
 %************************************************************************
@@ -318,8 +327,6 @@ mkTupNameStr Unboxed n = (gHC_PRIM_Name, mkFastString ("(#" ++ nOfThem (n-1) ','
 %************************************************************************
 
 \begin{code}
-getTag_RDR             = nameRdrName getTagName
-
 eq_RDR                         = nameRdrName eqName
 ge_RDR                         = nameRdrName geName
 ne_RDR                         = varQual_RDR  pREL_BASE_Name FSLIT("/=")
@@ -374,6 +381,7 @@ unpackCStringFoldr_RDR      = nameRdrName unpackCStringFoldrName
 unpackCStringUtf8_RDR          = nameRdrName unpackCStringUtf8Name
 
 newStablePtr_RDR       = nameRdrName newStablePtrName
+addrDataCon_RDR                = dataQual_RDR aDDR_Name FSLIT("A#")
 
 bindIO_RDR             = nameRdrName bindIOName
 returnIO_RDR           = nameRdrName returnIOName
@@ -387,6 +395,7 @@ plus_RDR                = varQual_RDR pREL_NUM_Name FSLIT("+")
 compose_RDR            = varQual_RDR pREL_BASE_Name FSLIT(".")
 
 not_RDR                = varQual_RDR pREL_BASE_Name FSLIT("not")
+getTag_RDR             = varQual_RDR pREL_BASE_Name FSLIT("getTag")
 succ_RDR               = varQual_RDR pREL_ENUM_Name FSLIT("succ")
 pred_RDR                = varQual_RDR pREL_ENUM_Name FSLIT("pred")
 minBound_RDR            = varQual_RDR pREL_ENUM_Name FSLIT("minBound")
@@ -419,6 +428,22 @@ showsPrec_RDR           = varQual_RDR pREL_SHOW_Name FSLIT("showsPrec")
 showString_RDR          = varQual_RDR pREL_SHOW_Name FSLIT("showString")
 showSpace_RDR           = varQual_RDR pREL_SHOW_Name FSLIT("showSpace") 
 showParen_RDR           = varQual_RDR pREL_SHOW_Name FSLIT("showParen") 
+
+typeOf_RDR     = varQual_RDR dYNAMIC_Name FSLIT("typeOf")
+mkTypeRep_RDR  = varQual_RDR dYNAMIC_Name FSLIT("mkAppTy")
+mkTyConRep_RDR = varQual_RDR dYNAMIC_Name FSLIT("mkTyCon")
+
+constr_RDR  = dataQual_RDR gENERICS_Name FSLIT("Constr")
+gfoldl_RDR  = varQual_RDR gENERICS_Name FSLIT("gfoldl")
+gfoldr_RDR  = varQual_RDR gENERICS_Name FSLIT("gfoldr")
+gunfold_RDR = varQual_RDR gENERICS_Name FSLIT("gunfold")
+gmapT_RDR   = varQual_RDR gENERICS_Name FSLIT("gmapT")
+gmapQ_RDR   = varQual_RDR gENERICS_Name FSLIT("gmapQ")
+gmapM_RDR   = varQual_RDR gENERICS_Name FSLIT("gmapM")
+conOf_RDR   = varQual_RDR gENERICS_Name FSLIT("conOf")
+consOf_RDR  = varQual_RDR gENERICS_Name FSLIT("consOf")
+
+undefined_RDR = varQual_RDR pREL_ERR_Name FSLIT("undefined")
 \end{code}
 
 
@@ -437,18 +462,15 @@ and it's convenient to write them all down in one place.
 
 
 \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
-usOnceTyConName  = kindQual FSLIT(".") usOnceTyConKey
-usManyTyConName  = kindQual FSLIT("!") usManyTyConKey
 superKindName    = kindQual FSLIT("KX") kindConKey
 superBoxityName  = kindQual FSLIT("BX") boxityConKey
 liftedConName    = kindQual FSLIT("*") liftedConKey
 unliftedConName  = kindQual FSLIT("#") unliftedConKey
 openKindConName  = kindQual FSLIT("?") anyBoxConKey
-usageKindConName = kindQual FSLIT("$") usageConKey
 typeConName     = kindQual FSLIT("Type") typeConKey
 
 funTyConName                 = tcQual  gHC_PRIM_Name FSLIT("(->)")  funTyConKey
@@ -479,7 +501,6 @@ threadIdPrimTyConName             = tcQual  gHC_PRIM_Name FSLIT("ThreadId#") threadI
 cCallableClassName           = clsQual gHC_PRIM_Name FSLIT("CCallable") cCallableClassKey
 cReturnableClassName         = clsQual gHC_PRIM_Name FSLIT("CReturnable") cReturnableClassKey
 
-getTagName      = wVarQual gHC_PRIM_Name FSLIT("getTag#")      getTagIdKey
 unsafeCoerceName = wVarQual gHC_PRIM_Name FSLIT("unsafeCoerce#") unsafeCoerceIdKey 
 nullAddrName     = wVarQual gHC_PRIM_Name FSLIT("nullAddr#")   nullAddrIdKey
 seqName                 = wVarQual gHC_PRIM_Name FSLIT("seq")          seqIdKey
@@ -576,6 +597,10 @@ realFloatClassName = clsQual  pREL_FLOAT_Name FSLIT("RealFloat") realFloatClassK
 -- Class Ix
 ixClassName       = clsQual pREL_ARR_Name FSLIT("Ix") ixClassKey
 
+-- Class Typeable and Data
+typeableClassName = clsQual dYNAMIC_Name  FSLIT("Typeable") typeableClassKey
+dataClassName     = clsQual gENERICS_Name FSLIT("Data")     dataClassKey
+
 -- Enum module (Enum, Bounded)
 enumClassName     = clsQual pREL_ENUM_Name FSLIT("Enum") enumClassKey
 enumFromName      = varQual pREL_ENUM_Name FSLIT("enumFrom") enumFromClassOpKey
@@ -639,14 +664,11 @@ wordTyConName     = wTcQual   pREL_WORD_Name FSLIT("Word")   wordTyConKey
 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
@@ -654,7 +676,6 @@ mutableByteArrayTyConName = tcQual pREL_BYTEARR_Name  FSLIT("MutableByteArray")
 
 -- 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
@@ -677,6 +698,15 @@ splitName          = varQual gLA_EXTS_Name FSLIT("split") splitIdKey
 
 -- 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}
 
 %************************************************************************
@@ -689,7 +719,8 @@ All these are original names; hence mkOrig
 
 \begin{code}
 varQual  = mk_known_key_name varName
-dataQual = mk_known_key_name dataName
+dataQual = mk_known_key_name dataName  -- All the constructor names here are for the DataCon
+                                       -- itself, which lives in the VarName name space
 tcQual   = mk_known_key_name tcName
 clsQual  = mk_known_key_name clsName
 
@@ -697,10 +728,10 @@ wVarQual  = mk_wired_in_name varName      -- The wired-in analogues
 wDataQual = mk_wired_in_name dataName          
 wTcQual   = mk_wired_in_name tcName
 
-varQual_RDR  mod str = mkOrig mod (mkOccFS varName str)   -- note use of local alias vName
+varQual_RDR  mod str = mkOrig mod (mkOccFS varName str)        -- The RDR analogues
+dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
 tcQual_RDR   mod str = mkOrig mod (mkOccFS tcName str)
 clsQual_RDR  mod str = mkOrig mod (mkOccFS clsName str)
-dataQual_RDR mod str = mkOrig mod (mkOccFS dataName str)
 
 mk_known_key_name space mod str uniq 
   = mkKnownKeyExternalName (mkBasePkgModule mod) (mkOccFS space str) uniq 
@@ -724,10 +755,12 @@ kindQual str uq = mkInternalName uq (mkKindOccFS tcName str) noSrcLoc
 boundedClassKey                = mkPreludeClassUnique 1 
 enumClassKey           = mkPreludeClassUnique 2 
 eqClassKey             = mkPreludeClassUnique 3 
+typeableClassKey       = mkPreludeClassUnique 4
 floatingClassKey       = mkPreludeClassUnique 5 
 fractionalClassKey     = mkPreludeClassUnique 6 
 integralClassKey       = mkPreludeClassUnique 7 
 monadClassKey          = mkPreludeClassUnique 8 
+dataClassKey           = mkPreludeClassUnique 9
 functorClassKey                = mkPreludeClassUnique 10
 numClassKey            = mkPreludeClassUnique 11
 ordClassKey            = mkPreludeClassUnique 12
@@ -736,10 +769,8 @@ realClassKey               = mkPreludeClassUnique 14
 realFloatClassKey      = mkPreludeClassUnique 15
 realFracClassKey       = mkPreludeClassUnique 16
 showClassKey           = mkPreludeClassUnique 17
-
 cCallableClassKey      = mkPreludeClassUnique 18
 cReturnableClassKey    = mkPreludeClassUnique 19
-
 ixClassKey             = mkPreludeClassUnique 20
 \end{code}
 
@@ -809,11 +840,6 @@ bcoPrimTyConKey                            = mkPreludeTyConUnique 73
 ptrTyConKey                            = mkPreludeTyConUnique 74
 funPtrTyConKey                         = mkPreludeTyConUnique 75
 
--- Usage type constructors
-usageConKey                            = mkPreludeTyConUnique 76
-usOnceTyConKey                         = mkPreludeTyConUnique 77
-usManyTyConKey                         = mkPreludeTyConUnique 78
-
 -- Generic Type Constructors
 crossTyConKey                          = mkPreludeTyConUnique 79
 plusTyConKey                           = mkPreludeTyConUnique 80
@@ -822,6 +848,9 @@ genUnitTyConKey                             = mkPreludeTyConUnique 81
 -- Parallel array type constructor
 parrTyConKey                           = mkPreludeTyConUnique 82
 
+-- dotnet interop
+objectTyConKey                         = mkPreludeTyConUnique 83
+
 ---------------- Template Haskell -------------------
 --     USES TyConUniques 100-119
 -----------------------------------------------------
@@ -836,7 +865,6 @@ unitTyConKey = mkTupleTyConUnique Boxed 0
 %************************************************************************
 
 \begin{code}
-addrDataConKey                         = mkPreludeDataConUnique  0
 charDataConKey                         = mkPreludeDataConUnique  1
 consDataConKey                         = mkPreludeDataConUnique  2
 doubleDataConKey                       = mkPreludeDataConUnique  3
@@ -847,13 +875,10 @@ smallIntegerDataConKey                    = mkPreludeDataConUnique  7
 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
@@ -873,7 +898,6 @@ parrDataConKey                              = mkPreludeDataConUnique 24
 
 \begin{code}
 absentErrorIdKey             = mkPreludeMiscIdUnique  1
-getTagIdKey                  = mkPreludeMiscIdUnique  2
 augmentIdKey                 = mkPreludeMiscIdUnique  3
 appendIdKey                  = mkPreludeMiscIdUnique  4
 buildIdKey                   = mkPreludeMiscIdUnique  5
@@ -949,6 +973,14 @@ enumFromThenToPIdKey          = mkPreludeMiscIdUnique 90
 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