[project @ 2000-11-16 11:39:36 by simonmar]
[ghc-hetmet.git] / ghc / compiler / basicTypes / Module.lhs
index 276a0e4..5676bc2 100644 (file)
@@ -21,7 +21,7 @@ in a different DLL, by setting the DLL flag.
 \begin{code}
 module Module 
     (
-      Module, moduleName
+      Module, moduleName, packageOfModule,
                            -- abstract, instance of Eq, Ord, Outputable
     , ModuleName
     , isModuleInThisPackage, mkModuleInThisPackage,
@@ -33,7 +33,6 @@ module Module
 
     , moduleString             -- :: Module -> EncodedString
     , moduleUserString         -- :: Module -> UserString
-    , moduleName               -- :: Module -> ModuleName
 
     , mkVanillaModule          -- :: ModuleName -> Module
     , mkPrelModule             -- :: UserString -> Module
@@ -60,6 +59,8 @@ module Module
     , moduleEnvElts, unitModuleEnv, isEmptyModuleEnv, foldModuleEnv
     , lookupModuleEnvByName, extendModuleEnv_C
 
+    , ModuleSet, emptyModuleSet, mkModuleSet, moduleSetElts, extendModuleSet, elemModuleSet
+
     ) where
 
 #include "HsVersions.h"
@@ -69,6 +70,7 @@ import CmdLineOpts    ( opt_InPackage )
 import FastString      ( FastString, uniqueOfFS )
 import Unique          ( Uniquable(..), mkUniqueGrimily )
 import UniqFM
+import UniqSet
 \end{code}
 
 
@@ -252,7 +254,7 @@ moduleString :: Module -> EncodedString
 moduleString (Module (ModuleName fs) _) = _UNPK_ fs
 
 moduleName :: Module -> ModuleName
-moduleName (Module mod _) = mod
+moduleName (Module mod pkg_info) = mod
 
 moduleUserString :: Module -> UserString
 moduleUserString (Module mod _) = moduleNameUserString mod
@@ -261,6 +263,10 @@ isModuleInThisPackage :: Module -> Bool
 isModuleInThisPackage (Module nm ThisPackage) = True
 isModuleInThisPackage _                       = False
 
+packageOfModule :: Module -> Maybe PackageName
+packageOfModule (Module nm (AnotherPackage pn)) = Just pn
+packageOfModule _                               = Nothing
+
 printModulePrefix :: Module -> Bool
   -- When printing, say M.x
 printModulePrefix (Module nm ThisPackage) = False
@@ -317,3 +323,19 @@ unitModuleEnv       = unitUFM
 isEmptyModuleEnv    = isNullUFM
 foldModuleEnv       = foldUFM
 \end{code}
+
+\begin{code}
+
+type ModuleSet = UniqSet Module
+mkModuleSet    :: [Module] -> ModuleSet
+extendModuleSet :: ModuleSet -> Module -> ModuleSet
+emptyModuleSet  :: ModuleSet
+moduleSetElts   :: ModuleSet -> [Module]
+elemModuleSet   :: Module -> ModuleSet -> Bool
+
+emptyModuleSet  = emptyUniqSet
+mkModuleSet     = mkUniqSet
+extendModuleSet = addOneToUniqSet
+moduleSetElts   = uniqSetToList
+elemModuleSet   = elementOfUniqSet
+\end{code}