module FastStringEnv (
FastStringEnv,
mkFsEnv,
emptyFsEnv, unitFsEnv,
extendFsEnv_C, extendFsEnv_Acc, extendFsEnv,
extendFsEnvList, extendFsEnvList_C,
filterFsEnv,
plusFsEnv, plusFsEnv_C, alterFsEnv,
lookupFsEnv, lookupFsEnv_NF, delFromFsEnv, delListFromFsEnv,
elemFsEnv, mapFsEnv,
DFastStringEnv,
mkDFsEnv, emptyDFsEnv, dFsEnvElts, lookupDFsEnv
) where
import GhcPrelude
import UniqFM
import UniqDFM
import Maybes
import FastString
type FastStringEnv a = UniqFM a
emptyFsEnv :: FastStringEnv a
mkFsEnv :: [(FastString,a)] -> FastStringEnv a
alterFsEnv :: (Maybe a-> Maybe a) -> FastStringEnv a -> FastString -> FastStringEnv a
extendFsEnv_C :: (a->a->a) -> FastStringEnv a -> FastString -> a -> FastStringEnv a
extendFsEnv_Acc :: (a->b->b) -> (a->b) -> FastStringEnv b -> FastString -> a -> FastStringEnv b
extendFsEnv :: FastStringEnv a -> FastString -> a -> FastStringEnv a
plusFsEnv :: FastStringEnv a -> FastStringEnv a -> FastStringEnv a
plusFsEnv_C :: (a->a->a) -> FastStringEnv a -> FastStringEnv a -> FastStringEnv a
extendFsEnvList :: FastStringEnv a -> [(FastString,a)] -> FastStringEnv a
extendFsEnvList_C :: (a->a->a) -> FastStringEnv a -> [(FastString,a)] -> FastStringEnv a
delFromFsEnv :: FastStringEnv a -> FastString -> FastStringEnv a
delListFromFsEnv :: FastStringEnv a -> [FastString] -> FastStringEnv a
elemFsEnv :: FastString -> FastStringEnv a -> Bool
unitFsEnv :: FastString -> a -> FastStringEnv a
lookupFsEnv :: FastStringEnv a -> FastString -> Maybe a
lookupFsEnv_NF :: FastStringEnv a -> FastString -> a
filterFsEnv :: (elt -> Bool) -> FastStringEnv elt -> FastStringEnv elt
mapFsEnv :: (elt1 -> elt2) -> FastStringEnv elt1 -> FastStringEnv elt2
emptyFsEnv :: FastStringEnv a
emptyFsEnv = FastStringEnv a
forall elt. UniqFM elt
emptyUFM
unitFsEnv :: FastString -> a -> FastStringEnv a
unitFsEnv FastString
x a
y = FastString -> a -> FastStringEnv a
forall key elt. Uniquable key => key -> elt -> UniqFM elt
unitUFM FastString
x a
y
extendFsEnv :: FastStringEnv a -> FastString -> a -> FastStringEnv a
extendFsEnv FastStringEnv a
x FastString
y a
z = FastStringEnv a -> FastString -> a -> FastStringEnv a
forall key elt.
Uniquable key =>
UniqFM elt -> key -> elt -> UniqFM elt
addToUFM FastStringEnv a
x FastString
y a
z
extendFsEnvList :: FastStringEnv a -> [(FastString, a)] -> FastStringEnv a
extendFsEnvList FastStringEnv a
x [(FastString, a)]
l = FastStringEnv a -> [(FastString, a)] -> FastStringEnv a
forall key elt.
Uniquable key =>
UniqFM elt -> [(key, elt)] -> UniqFM elt
addListToUFM FastStringEnv a
x [(FastString, a)]
l
lookupFsEnv :: FastStringEnv a -> FastString -> Maybe a
lookupFsEnv FastStringEnv a
x FastString
y = FastStringEnv a -> FastString -> Maybe a
forall key elt. Uniquable key => UniqFM elt -> key -> Maybe elt
lookupUFM FastStringEnv a
x FastString
y
alterFsEnv :: (Maybe a -> Maybe a)
-> FastStringEnv a -> FastString -> FastStringEnv a
alterFsEnv = (Maybe a -> Maybe a)
-> FastStringEnv a -> FastString -> FastStringEnv a
forall key elt.
Uniquable key =>
(Maybe elt -> Maybe elt) -> UniqFM elt -> key -> UniqFM elt
alterUFM
mkFsEnv :: [(FastString, a)] -> FastStringEnv a
mkFsEnv [(FastString, a)]
l = [(FastString, a)] -> FastStringEnv a
forall key elt. Uniquable key => [(key, elt)] -> UniqFM elt
listToUFM [(FastString, a)]
l
elemFsEnv :: FastString -> FastStringEnv a -> Bool
elemFsEnv FastString
x FastStringEnv a
y = FastString -> FastStringEnv a -> Bool
forall key elt. Uniquable key => key -> UniqFM elt -> Bool
elemUFM FastString
x FastStringEnv a
y
plusFsEnv :: FastStringEnv a -> FastStringEnv a -> FastStringEnv a
plusFsEnv FastStringEnv a
x FastStringEnv a
y = FastStringEnv a -> FastStringEnv a -> FastStringEnv a
forall elt. UniqFM elt -> UniqFM elt -> UniqFM elt
plusUFM FastStringEnv a
x FastStringEnv a
y
plusFsEnv_C :: (a -> a -> a)
-> FastStringEnv a -> FastStringEnv a -> FastStringEnv a
plusFsEnv_C a -> a -> a
f FastStringEnv a
x FastStringEnv a
y = (a -> a -> a)
-> FastStringEnv a -> FastStringEnv a -> FastStringEnv a
forall elt.
(elt -> elt -> elt) -> UniqFM elt -> UniqFM elt -> UniqFM elt
plusUFM_C a -> a -> a
f FastStringEnv a
x FastStringEnv a
y
extendFsEnv_C :: (a -> a -> a)
-> FastStringEnv a -> FastString -> a -> FastStringEnv a
extendFsEnv_C a -> a -> a
f FastStringEnv a
x FastString
y a
z = (a -> a -> a)
-> FastStringEnv a -> FastString -> a -> FastStringEnv a
forall key elt.
Uniquable key =>
(elt -> elt -> elt) -> UniqFM elt -> key -> elt -> UniqFM elt
addToUFM_C a -> a -> a
f FastStringEnv a
x FastString
y a
z
mapFsEnv :: (elt1 -> elt2) -> FastStringEnv elt1 -> FastStringEnv elt2
mapFsEnv elt1 -> elt2
f FastStringEnv elt1
x = (elt1 -> elt2) -> FastStringEnv elt1 -> FastStringEnv elt2
forall elt1 elt2. (elt1 -> elt2) -> UniqFM elt1 -> UniqFM elt2
mapUFM elt1 -> elt2
f FastStringEnv elt1
x
extendFsEnv_Acc :: (a -> b -> b)
-> (a -> b)
-> FastStringEnv b
-> FastString
-> a
-> FastStringEnv b
extendFsEnv_Acc a -> b -> b
x a -> b
y FastStringEnv b
z FastString
a a
b = (a -> b -> b)
-> (a -> b)
-> FastStringEnv b
-> FastString
-> a
-> FastStringEnv b
forall key elt elts.
Uniquable key =>
(elt -> elts -> elts)
-> (elt -> elts) -> UniqFM elts -> key -> elt -> UniqFM elts
addToUFM_Acc a -> b -> b
x a -> b
y FastStringEnv b
z FastString
a a
b
extendFsEnvList_C :: (a -> a -> a)
-> FastStringEnv a -> [(FastString, a)] -> FastStringEnv a
extendFsEnvList_C a -> a -> a
x FastStringEnv a
y [(FastString, a)]
z = (a -> a -> a)
-> FastStringEnv a -> [(FastString, a)] -> FastStringEnv a
forall key elt.
Uniquable key =>
(elt -> elt -> elt) -> UniqFM elt -> [(key, elt)] -> UniqFM elt
addListToUFM_C a -> a -> a
x FastStringEnv a
y [(FastString, a)]
z
delFromFsEnv :: FastStringEnv a -> FastString -> FastStringEnv a
delFromFsEnv FastStringEnv a
x FastString
y = FastStringEnv a -> FastString -> FastStringEnv a
forall key elt. Uniquable key => UniqFM elt -> key -> UniqFM elt
delFromUFM FastStringEnv a
x FastString
y
delListFromFsEnv :: FastStringEnv a -> [FastString] -> FastStringEnv a
delListFromFsEnv FastStringEnv a
x [FastString]
y = FastStringEnv a -> [FastString] -> FastStringEnv a
forall key elt. Uniquable key => UniqFM elt -> [key] -> UniqFM elt
delListFromUFM FastStringEnv a
x [FastString]
y
filterFsEnv :: (elt -> Bool) -> FastStringEnv elt -> FastStringEnv elt
filterFsEnv elt -> Bool
x FastStringEnv elt
y = (elt -> Bool) -> FastStringEnv elt -> FastStringEnv elt
forall elt. (elt -> Bool) -> UniqFM elt -> UniqFM elt
filterUFM elt -> Bool
x FastStringEnv elt
y
lookupFsEnv_NF :: FastStringEnv a -> FastString -> a
lookupFsEnv_NF FastStringEnv a
env FastString
n = String -> Maybe a -> a
forall a. HasCallStack => String -> Maybe a -> a
expectJust String
"lookupFsEnv_NF" (FastStringEnv a -> FastString -> Maybe a
forall a. FastStringEnv a -> FastString -> Maybe a
lookupFsEnv FastStringEnv a
env FastString
n)
type DFastStringEnv a = UniqDFM a
emptyDFsEnv :: DFastStringEnv a
emptyDFsEnv :: DFastStringEnv a
emptyDFsEnv = DFastStringEnv a
forall elt. UniqDFM elt
emptyUDFM
dFsEnvElts :: DFastStringEnv a -> [a]
dFsEnvElts :: DFastStringEnv a -> [a]
dFsEnvElts = DFastStringEnv a -> [a]
forall elt. UniqDFM elt -> [elt]
eltsUDFM
mkDFsEnv :: [(FastString,a)] -> DFastStringEnv a
mkDFsEnv :: [(FastString, a)] -> DFastStringEnv a
mkDFsEnv [(FastString, a)]
l = [(FastString, a)] -> DFastStringEnv a
forall key elt. Uniquable key => [(key, elt)] -> UniqDFM elt
listToUDFM [(FastString, a)]
l
lookupDFsEnv :: DFastStringEnv a -> FastString -> Maybe a
lookupDFsEnv :: DFastStringEnv a -> FastString -> Maybe a
lookupDFsEnv = DFastStringEnv a -> FastString -> Maybe a
forall key elt. Uniquable key => UniqDFM elt -> key -> Maybe elt
lookupUDFM