From c29e18e3a77864e062ebc93c277fdc4dbbb17aa0 Mon Sep 17 00:00:00 2001 From: sewardj Date: Thu, 12 Oct 2000 10:48:04 +0000 Subject: [PATCH] [project @ 2000-10-12 10:48:04 by sewardj] Add ModuleEnv stuff. --- ghc/compiler/basicTypes/Module.lhs | 53 ++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/ghc/compiler/basicTypes/Module.lhs b/ghc/compiler/basicTypes/Module.lhs index 2fd7c87..312b381 100644 --- a/ghc/compiler/basicTypes/Module.lhs +++ b/ghc/compiler/basicTypes/Module.lhs @@ -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 -- 1.7.10.4