added new names for LabelMap functions
authorNorman Ramsey <nr@cs.tufts.edu>
Thu, 22 Apr 2010 01:24:45 +0000 (21:24 -0400)
committerNorman Ramsey <nr@cs.tufts.edu>
Thu, 22 Apr 2010 01:24:45 +0000 (21:24 -0400)
I have felt really silly using FactBase names to manipulate
LabelMap's that don't contain dataflow facts.  So I've added a bunch
of extra names for use in those cases.

src/Compiler/Hoopl/Label.hs

index a129ccb..6358da2 100644 (file)
@@ -1,7 +1,9 @@
 module Compiler.Hoopl.Label
   ( Label
   , allLabels -- to be used only by the Fuel monad
-  , LabelMap
+  , LabelMap, emptyLabelMap, mkLabelMap, lookupLabel, extendLabelMap
+            , delFromLabelMap, unionLabelMap
+            , elemLabelMap, labelMapLabels, labelMapList
   , FactBase, noFacts, mkFactBase, unitFact, lookupFact, extendFactBase
             , delFromFactBase, unionFactBase
             , elemFactBase, factBaseLabels, factBaseList
@@ -25,9 +27,6 @@ instance Show Label where
 allLabels :: [Label]
 allLabels = map Label [1..]
 
-type LabelMap a = M.IntMap a
-
-
 
 -----------------------------------------------------------------------------
 --             Label, FactBase, LabelSet
@@ -73,6 +72,36 @@ factBaseList = map (mapFst Label) . M.toList
 delFromFactBase :: FactBase f -> [(Label,a)] -> FactBase f
 delFromFactBase fb blks = foldr (M.delete . unLabel . fst) fb blks
 
+----------------------------------------------------------------
+type LabelMap a = M.IntMap a
+
+emptyLabelMap :: LabelMap f
+emptyLabelMap = M.empty
+
+mkLabelMap :: [(Label, f)] -> LabelMap f
+mkLabelMap = mkFactBase
+
+lookupLabel :: LabelMap f -> Label -> Maybe f
+lookupLabel = lookupFact
+
+extendLabelMap :: LabelMap f -> Label -> f -> LabelMap f
+extendLabelMap = extendFactBase
+
+unionLabelMap :: LabelMap f -> LabelMap f -> LabelMap f
+unionLabelMap = M.union
+
+elemLabelMap :: Label -> LabelMap f -> Bool
+elemLabelMap = elemFactBase
+
+labelMapLabels :: LabelMap f -> [Label]
+labelMapLabels = factBaseLabels
+
+labelMapList :: LabelMap f -> [(Label, f)]
+labelMapList = factBaseList
+
+delFromLabelMap :: LabelMap f -> [(Label,a)] -> LabelMap f
+delFromLabelMap = delFromFactBase
+
 ----------------------
 newtype LabelSet = LS { unLS :: S.IntSet }