module InternAtom(internAtomK, internAtomF, internAtom,
atomNameK, atomNameF, atomName) where
import Command
import Event
import Xrequest
internAtomK :: String -> Bool -> Cont (K b c) Atom
internAtomK = forall {t}.
(XRequest -> (XResponse -> Maybe Atom) -> t) -> String -> Bool -> t
ia forall {a} {b} {c}.
XRequest -> (XResponse -> Maybe a) -> Cont (K b c) a
xrequestK
internAtomF :: String -> Bool -> Cont (F b c) Atom
internAtomF = forall {t}.
(XRequest -> (XResponse -> Maybe Atom) -> t) -> String -> Bool -> t
ia forall {a} {b} {c}.
XRequest -> (XResponse -> Maybe a) -> Cont (F b c) a
xrequestF
internAtom :: String -> Bool -> (Atom -> f hi ho) -> f hi ho
internAtom String
a Bool
e = forall {t}.
(XRequest -> (XResponse -> Maybe Atom) -> t) -> String -> Bool -> t
ia forall {f :: * -> * -> *} {ans} {hi} {ho}.
FudgetIO f =>
XRequest -> (XResponse -> Maybe ans) -> (ans -> f hi ho) -> f hi ho
xrequest String
a Bool
e
ia :: (XRequest -> (XResponse -> Maybe Atom) -> t) -> String -> Bool -> t
ia XRequest -> (XResponse -> Maybe Atom) -> t
k String
atomNm Bool
ifExists =
let gotit :: XResponse -> Maybe Atom
gotit (GotAtom Atom
atom) = forall a. a -> Maybe a
Just Atom
atom
gotit XResponse
_ = forall a. Maybe a
Nothing
in XRequest -> (XResponse -> Maybe Atom) -> t
k (String -> Bool -> XRequest
InternAtom String
atomNm Bool
ifExists) XResponse -> Maybe Atom
gotit
atomNameK :: Atom -> Cont (K b c) (Maybe String)
atomNameK = forall {t}.
(XRequest -> (XResponse -> Maybe (Maybe String)) -> t) -> Atom -> t
an forall {a} {b} {c}.
XRequest -> (XResponse -> Maybe a) -> Cont (K b c) a
xrequestK
atomNameF :: Atom -> Cont (F b c) (Maybe String)
atomNameF = forall {t}.
(XRequest -> (XResponse -> Maybe (Maybe String)) -> t) -> Atom -> t
an forall {a} {b} {c}.
XRequest -> (XResponse -> Maybe a) -> Cont (F b c) a
xrequestF
atomName :: Atom -> (Maybe String -> f hi ho) -> f hi ho
atomName Atom
a = forall {t}.
(XRequest -> (XResponse -> Maybe (Maybe String)) -> t) -> Atom -> t
an forall {f :: * -> * -> *} {ans} {hi} {ho}.
FudgetIO f =>
XRequest -> (XResponse -> Maybe ans) -> (ans -> f hi ho) -> f hi ho
xrequest Atom
a
an :: (XRequest -> (XResponse -> Maybe (Maybe String)) -> t) -> Atom -> t
an XRequest -> (XResponse -> Maybe (Maybe String)) -> t
k Atom
atom =
let gotit :: XResponse -> Maybe (Maybe String)
gotit (GotAtomName (Just String
s)) = forall a. a -> Maybe a
Just (forall a. a -> Maybe a
Just String
s)
gotit XResponse
_ = forall a. Maybe a
Nothing
in XRequest -> (XResponse -> Maybe (Maybe String)) -> t
k (Atom -> XRequest
GetAtomName Atom
atom) XResponse -> Maybe (Maybe String)
gotit