\begin{code}
module VarSet (
- VarSet, IdSet, TyVarSet, IdOrTyVarSet,
+ VarSet, IdSet, TyVarSet,
emptyVarSet, unitVarSet, mkVarSet,
- extendVarSet,
- elemVarSet, varSetElems,
+ extendVarSet, extendVarSet_C,
+ elemVarSet, varSetElems, subVarSet,
unionVarSet, unionVarSets,
intersectVarSet, intersectsVarSet,
- isEmptyVarSet, delVarSet,
+ isEmptyVarSet, delVarSet, delVarSetByKey,
minusVarSet, foldVarSet, filterVarSet,
- lookupVarSet, mapVarSet,
-
- uniqAway
+ lookupVarSet, mapVarSet, sizeVarSet, seqVarSet
) where
#include "HsVersions.h"
-import Var ( Var, Id, TyVar, IdOrTyVar, setVarUnique )
-import Unique ( Uniquable(..), incrUnique )
+import Var ( Var, Id, TyVar )
+import Unique ( Unique )
import UniqSet
-import Outputable
+import UniqFM ( delFromUFM_Directly, addToUFM_C )
\end{code}
%************************************************************************
type VarSet = UniqSet Var
type IdSet = UniqSet Id
type TyVarSet = UniqSet TyVar
-type IdOrTyVarSet = UniqSet IdOrTyVar
emptyVarSet :: VarSet
intersectVarSet :: VarSet -> VarSet -> VarSet
-- Returns the set element, which may be
-- (==) to the argument, but not the same as
mapVarSet :: (Var -> Var) -> VarSet -> VarSet
+sizeVarSet :: VarSet -> Int
filterVarSet :: (Var -> Bool) -> VarSet -> VarSet
+subVarSet :: VarSet -> VarSet -> Bool
+extendVarSet_C :: (Var->Var->Var) -> VarSet -> Var -> VarSet
+
+delVarSetByKey :: VarSet -> Unique -> VarSet
emptyVarSet = emptyUniqSet
unitVarSet = unitUniqSet
foldVarSet = foldUniqSet
lookupVarSet = lookupUniqSet
mapVarSet = mapUniqSet
+sizeVarSet = sizeUniqSet
filterVarSet = filterUniqSet
+extendVarSet_C combine s x = addToUFM_C combine s x x
+a `subVarSet` b = isEmptyVarSet (a `minusVarSet` b)
+delVarSetByKey = delFromUFM_Directly -- Can't be bothered to add this to UniqSet
\end{code}
\begin{code}
-uniqAway :: VarSet -> Var -> Var
--- Give the Var a new unique, different to any in the VarSet
-uniqAway set var
- = try 1 (incrUnique (getUnique var))
- where
- try n uniq | uniq `elemUniqSet_Directly` set = try ((n+1)::Int) (incrUnique uniq)
- | otherwise = {- pprTrace "uniqAway:" (ppr n <+> text "tries") -}
- setVarUnique var uniq
+seqVarSet :: VarSet -> ()
+seqVarSet s = sizeVarSet s `seq` ()
\end{code}
+