[project @ 2000-10-12 10:48:04 by sewardj]
authorsewardj <unknown>
Thu, 12 Oct 2000 10:48:04 +0000 (10:48 +0000)
committersewardj <unknown>
Thu, 12 Oct 2000 10:48:04 +0000 (10:48 +0000)
Add ModuleEnv stuff.

ghc/compiler/basicTypes/Module.lhs

index 2fd7c87..312b381 100644 (file)
@@ -54,6 +54,12 @@ module Module
        -- Where to find a .hi file
     , WhereFrom(..)
 
+    , ModuleEnv,
+    , elemModuleEnv, extendModuleEnv, extendModuleEnvList, plusModuleEnv_C
+    , delModuleEnvList, delModuleEnv, plusModuleEnv, lookupModuleEnv
+    , lookupWithDefaultModuleEnv, mapModuleEnv, mkModuleEnv, emptyModuleEnv
+    , rngModuleEnv, unitModuleEnv, isEmptyModuleEnv, foldModuleEnv
+
     ) where
 
 #include "HsVersions.h"
@@ -62,6 +68,7 @@ import Outputable
 import CmdLineOpts     ( opt_InPackage )
 import FastString      ( FastString, uniqueOfFS )
 import Unique          ( Uniquable(..), mkUniqueGrimily )
+import UniqFM
 \end{code}
 
 
@@ -260,3 +267,49 @@ moduleUserString (Module mod _) = moduleNameUserString mod
 --isLocalModule (Module _ ThisPackage) = True
 --isLocalModule _                           = False
 \end{code}
+
+%************************************************************************
+%*                                                                      *
+\subsection{@ModuleEnv@s}
+%*                                                                      *
+%************************************************************************
+
+\begin{code}
+type ModuleEnv elt = UniqFM elt
+
+emptyModuleEnv       :: ModuleEnv a
+mkModuleEnv          :: [(Module, a)] -> ModuleEnv a
+unitModuleEnv        :: Module -> a -> ModuleEnv a
+extendModuleEnv      :: ModuleEnv a -> Module -> a -> ModuleEnv a
+plusModuleEnv        :: ModuleEnv a -> ModuleEnv a -> ModuleEnv a
+extendModuleEnvList  :: ModuleEnv a -> [(Module, a)] -> ModuleEnv a
+                  
+delModuleEnvList     :: ModuleEnv a -> [Module] -> ModuleEnv a
+delModuleEnv         :: ModuleEnv a -> Module -> ModuleEnv a
+plusModuleEnv_C      :: (a -> a -> a) -> ModuleEnv a -> ModuleEnv a -> ModuleEnv a
+mapModuleEnv         :: (a -> b) -> ModuleEnv a -> ModuleEnv b
+rngModuleEnv         :: ModuleEnv a -> [a]
+                  
+isEmptyModuleEnv     :: ModuleEnv a -> Bool
+lookupModuleEnv      :: ModuleEnv a -> Module -> Maybe a
+lookupWithDefaultModuleEnv :: ModuleEnv a -> a -> Module -> a
+elemModuleEnv        :: Module -> ModuleEnv a -> Bool
+foldModuleEnv        :: (a -> b -> b) -> b -> ModuleEnv a -> b
+
+elemModuleEnv       = elemUFM
+extendModuleEnv     = addToUFM
+extendModuleEnvList = addListToUFM
+plusModuleEnv_C     = plusUFM_C
+delModuleEnvList    = delListFromUFM
+delModuleEnv        = delFromUFM
+plusModuleEnv       = plusUFM
+lookupModuleEnv     = lookupUFM
+lookupWithDefaultModuleEnv = lookupWithDefaultUFM
+mapModuleEnv        = mapUFM
+mkModuleEnv         = listToUFM
+emptyModuleEnv      = emptyUFM
+rngModuleEnv        = eltsUFM
+unitModuleEnv       = unitUFM
+isEmptyModuleEnv    = isNullUFM
+foldModuleEnv       = foldUFM
+\end{code}
\ No newline at end of file