{-# LINE 1 "src/Termbox/Internal.chs" #-}
{-# language InstanceSigs #-}
module Termbox.Internal where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.Ptr as C2HSImp
import qualified Foreign.Storable as C2HSImp
import Data.Char (ord)
import Data.Word
import Foreign
import Foreign.C
import Prelude hiding (mod)
_INPUT_CURRENT, _INPUT_ESC, _INPUT_ALT, _INPUT_MOUSE :: Int
_HIDE_CURSOR :: Int
_BOLD, _UNDERLINE, _REVERSE :: Word16
_DEFAULT, _BLACK, _RED, _GREEN, _YELLOW, _BLUE, _MAGENTA, _CYAN, _WHITE :: Word16
_INPUT_CURRENT = 0
{-# LINE 26 "src/Termbox/Internal.chs" #-}
_INPUT_ESC = 1
{-# LINE 27 "src/Termbox/Internal.chs" #-}
_INPUT_ALT = 2
{-# LINE 28 "src/Termbox/Internal.chs" #-}
_INPUT_MOUSE = 4
{-# LINE 29 "src/Termbox/Internal.chs" #-}
_HIDE_CURSOR = -1
{-# LINE 31 "src/Termbox/Internal.chs" #-}
_BOLD = 0x100
{-# LINE 33 "src/Termbox/Internal.chs" #-}
_UNDERLINE = 0x200
{-# LINE 34 "src/Termbox/Internal.chs" #-}
_REVERSE = 0x400
{-# LINE 35 "src/Termbox/Internal.chs" #-}
_DEFAULT = 0x0
{-# LINE 37 "src/Termbox/Internal.chs" #-}
_BLACK = 0x1
{-# LINE 38 "src/Termbox/Internal.chs" #-}
_RED = 0x2
{-# LINE 39 "src/Termbox/Internal.chs" #-}
_GREEN = 0x3
{-# LINE 40 "src/Termbox/Internal.chs" #-}
_YELLOW = 0x4
{-# LINE 41 "src/Termbox/Internal.chs" #-}
_BLUE = 0x5
{-# LINE 42 "src/Termbox/Internal.chs" #-}
_MAGENTA = 0x6
{-# LINE 43 "src/Termbox/Internal.chs" #-}
_CYAN = 0x7
{-# LINE 44 "src/Termbox/Internal.chs" #-}
_WHITE = 0x8
{-# LINE 45 "src/Termbox/Internal.chs" #-}
data EventType = EventKey
| EventResize
| EventMouse
instance Enum EventType where
succ EventKey = EventResize
succ EventResize = EventMouse
succ EventMouse = error "EventType.succ: EventMouse has no successor"
pred EventResize = EventKey
pred EventMouse = EventResize
pred EventKey = error "EventType.pred: EventKey has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from EventMouse
fromEnum EventKey = 1
fromEnum EventResize = 2
fromEnum EventMouse = 3
toEnum 1 = EventKey
toEnum 2 = EventResize
toEnum 3 = EventMouse
toEnum unmatched = error ("EventType.toEnum: Cannot match " ++ show unmatched)
{-# LINE 57 "src/Termbox/Internal.chs" #-}
data InitResult = PipeTrapError
| FailedToOpenTTY
| UnsupportedTerminal
| InitOk
instance Enum InitResult where
succ PipeTrapError = FailedToOpenTTY
succ FailedToOpenTTY = UnsupportedTerminal
succ UnsupportedTerminal = InitOk
succ InitOk = error "InitResult.succ: InitOk has no successor"
pred FailedToOpenTTY = PipeTrapError
pred UnsupportedTerminal = FailedToOpenTTY
pred InitOk = UnsupportedTerminal
pred PipeTrapError = error "InitResult.pred: PipeTrapError has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from InitOk
fromEnum PipeTrapError = (-3)
fromEnum FailedToOpenTTY = (-2)
fromEnum UnsupportedTerminal = (-1)
fromEnum InitOk = 0
toEnum (-3) = PipeTrapError
toEnum (-2) = FailedToOpenTTY
toEnum (-1) = UnsupportedTerminal
toEnum 0 = InitOk
toEnum unmatched = error ("InitResult.toEnum: Cannot match " ++ show unmatched)
{-# LINE 66 "src/Termbox/Internal.chs" #-}
data Key = KeyCtrlTilde
| KeyCtrl2
| KeyCtrlA
| KeyCtrlB
| KeyCtrlC
| KeyCtrlD
| KeyCtrlE
| KeyCtrlF
| KeyCtrlG
| KeyBackspace
| KeyCtrlH
| KeyTab
| KeyCtrlI
| KeyCtrlJ
| KeyCtrlK
| KeyCtrlL
| KeyEnter
| KeyCtrlM
| KeyCtrlN
| KeyCtrlO
| KeyCtrlP
| KeyCtrlQ
| KeyCtrlR
| KeyCtrlS
| KeyCtrlT
| KeyCtrlU
| KeyCtrlV
| KeyCtrlW
| KeyCtrlX
| KeyCtrlY
| KeyCtrlZ
| KeyEsc
| KeyCtrlLsqBracket
| KeyCtrl3
| KeyCtrl4
| KeyCtrlBackslash
| KeyCtrl5
| KeyCtrlRsqBracket
| KeyCtrl6
| KeyCtrl7
| KeyCtrlSlash
| KeyCtrlUnderscore
| KeySpace
| KeyBackspace2
| KeyCtrl8
| KeyMouseWheelDown
| KeyMouseWheelUp
| KeyMouseRelease
| KeyMouseMiddle
| KeyMouseRight
| KeyMouseLeft
| KeyArrowRight
| KeyArrowLeft
| KeyArrowDown
| KeyArrowUp
| KeyPageDn
| KeyPageUp
| KeyEnd
| KeyHome
| KeyDelete
| KeyInsert
| KeyF12
| KeyF11
| KeyF10
| KeyF9
| KeyF8
| KeyF7
| KeyF6
| KeyF5
| KeyF4
| KeyF3
| KeyF2
| KeyF1
deriving (Show)
instance Enum Key where
succ KeyCtrlTilde = KeyCtrlA
succ KeyCtrl2 = KeyCtrlA
succ KeyCtrlA = KeyCtrlB
succ KeyCtrlB = KeyCtrlC
succ KeyCtrlC = KeyCtrlD
succ KeyCtrlD = KeyCtrlE
succ KeyCtrlE = KeyCtrlF
succ KeyCtrlF = KeyCtrlG
succ KeyCtrlG = KeyBackspace
succ KeyBackspace = KeyTab
succ KeyCtrlH = KeyTab
succ KeyTab = KeyCtrlJ
succ KeyCtrlI = KeyCtrlJ
succ KeyCtrlJ = KeyCtrlK
succ KeyCtrlK = KeyCtrlL
succ KeyCtrlL = KeyEnter
succ KeyEnter = KeyCtrlN
succ KeyCtrlM = KeyCtrlN
succ KeyCtrlN = KeyCtrlO
succ KeyCtrlO = KeyCtrlP
succ KeyCtrlP = KeyCtrlQ
succ KeyCtrlQ = KeyCtrlR
succ KeyCtrlR = KeyCtrlS
succ KeyCtrlS = KeyCtrlT
succ KeyCtrlT = KeyCtrlU
succ KeyCtrlU = KeyCtrlV
succ KeyCtrlV = KeyCtrlW
succ KeyCtrlW = KeyCtrlX
succ KeyCtrlX = KeyCtrlY
succ KeyCtrlY = KeyCtrlZ
succ KeyCtrlZ = KeyEsc
succ KeyEsc = KeyCtrl4
succ KeyCtrlLsqBracket = KeyCtrl4
succ KeyCtrl3 = KeyCtrl4
succ KeyCtrl4 = KeyCtrl5
succ KeyCtrlBackslash = KeyCtrl5
succ KeyCtrl5 = KeyCtrl6
succ KeyCtrlRsqBracket = KeyCtrl6
succ KeyCtrl6 = KeyCtrl7
succ KeyCtrl7 = KeySpace
succ KeyCtrlSlash = KeySpace
succ KeyCtrlUnderscore = KeySpace
succ KeySpace = KeyBackspace2
succ KeyBackspace2 = KeyMouseWheelDown
succ KeyCtrl8 = KeyMouseWheelDown
succ KeyMouseWheelDown = KeyMouseWheelUp
succ KeyMouseWheelUp = KeyMouseRelease
succ KeyMouseRelease = KeyMouseMiddle
succ KeyMouseMiddle = KeyMouseRight
succ KeyMouseRight = KeyMouseLeft
succ KeyMouseLeft = KeyArrowRight
succ KeyArrowRight = KeyArrowLeft
succ KeyArrowLeft = KeyArrowDown
succ KeyArrowDown = KeyArrowUp
succ KeyArrowUp = KeyPageDn
succ KeyPageDn = KeyPageUp
succ KeyPageUp = KeyEnd
succ KeyEnd = KeyHome
succ KeyHome = KeyDelete
succ KeyDelete = KeyInsert
succ KeyInsert = KeyF12
succ KeyF12 = KeyF11
succ KeyF11 = KeyF10
succ KeyF10 = KeyF9
succ KeyF9 = KeyF8
succ KeyF8 = KeyF7
succ KeyF7 = KeyF6
succ KeyF6 = KeyF5
succ KeyF5 = KeyF4
succ KeyF4 = KeyF3
succ KeyF3 = KeyF2
succ KeyF2 = KeyF1
succ KeyF1 = error "Key.succ: KeyF1 has no successor"
pred KeyCtrlA = KeyCtrlTilde
pred KeyCtrlB = KeyCtrlA
pred KeyCtrlC = KeyCtrlB
pred KeyCtrlD = KeyCtrlC
pred KeyCtrlE = KeyCtrlD
pred KeyCtrlF = KeyCtrlE
pred KeyCtrlG = KeyCtrlF
pred KeyBackspace = KeyCtrlG
pred KeyCtrlH = KeyCtrlG
pred KeyTab = KeyBackspace
pred KeyCtrlI = KeyBackspace
pred KeyCtrlJ = KeyTab
pred KeyCtrlK = KeyCtrlJ
pred KeyCtrlL = KeyCtrlK
pred KeyEnter = KeyCtrlL
pred KeyCtrlM = KeyCtrlL
pred KeyCtrlN = KeyEnter
pred KeyCtrlO = KeyCtrlN
pred KeyCtrlP = KeyCtrlO
pred KeyCtrlQ = KeyCtrlP
pred KeyCtrlR = KeyCtrlQ
pred KeyCtrlS = KeyCtrlR
pred KeyCtrlT = KeyCtrlS
pred KeyCtrlU = KeyCtrlT
pred KeyCtrlV = KeyCtrlU
pred KeyCtrlW = KeyCtrlV
pred KeyCtrlX = KeyCtrlW
pred KeyCtrlY = KeyCtrlX
pred KeyCtrlZ = KeyCtrlY
pred KeyEsc = KeyCtrlZ
pred KeyCtrlLsqBracket = KeyCtrlZ
pred KeyCtrl3 = KeyCtrlZ
pred KeyCtrl4 = KeyEsc
pred KeyCtrlBackslash = KeyEsc
pred KeyCtrl5 = KeyCtrl4
pred KeyCtrlRsqBracket = KeyCtrl4
pred KeyCtrl6 = KeyCtrl5
pred KeyCtrl7 = KeyCtrl6
pred KeyCtrlSlash = KeyCtrl6
pred KeyCtrlUnderscore = KeyCtrl6
pred KeySpace = KeyCtrl7
pred KeyBackspace2 = KeySpace
pred KeyCtrl8 = KeySpace
pred KeyMouseWheelDown = KeyBackspace2
pred KeyMouseWheelUp = KeyMouseWheelDown
pred KeyMouseRelease = KeyMouseWheelUp
pred KeyMouseMiddle = KeyMouseRelease
pred KeyMouseRight = KeyMouseMiddle
pred KeyMouseLeft = KeyMouseRight
pred KeyArrowRight = KeyMouseLeft
pred KeyArrowLeft = KeyArrowRight
pred KeyArrowDown = KeyArrowLeft
pred KeyArrowUp = KeyArrowDown
pred KeyPageDn = KeyArrowUp
pred KeyPageUp = KeyPageDn
pred KeyEnd = KeyPageUp
pred KeyHome = KeyEnd
pred KeyDelete = KeyHome
pred KeyInsert = KeyDelete
pred KeyF12 = KeyInsert
pred KeyF11 = KeyF12
pred KeyF10 = KeyF11
pred KeyF9 = KeyF10
pred KeyF8 = KeyF9
pred KeyF7 = KeyF8
pred KeyF6 = KeyF7
pred KeyF5 = KeyF6
pred KeyF4 = KeyF5
pred KeyF3 = KeyF4
pred KeyF2 = KeyF3
pred KeyF1 = KeyF2
pred KeyCtrlTilde = error "Key.pred: KeyCtrlTilde has no predecessor"
pred KeyCtrl2 = error "Key.pred: KeyCtrl2 has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from KeyF1
fromEnum KeyCtrlTilde = 0
fromEnum KeyCtrl2 = 0
fromEnum KeyCtrlA = 1
fromEnum KeyCtrlB = 2
fromEnum KeyCtrlC = 3
fromEnum KeyCtrlD = 4
fromEnum KeyCtrlE = 5
fromEnum KeyCtrlF = 6
fromEnum KeyCtrlG = 7
fromEnum KeyBackspace = 8
fromEnum KeyCtrlH = 8
fromEnum KeyTab = 9
fromEnum KeyCtrlI = 9
fromEnum KeyCtrlJ = 10
fromEnum KeyCtrlK = 11
fromEnum KeyCtrlL = 12
fromEnum KeyEnter = 13
fromEnum KeyCtrlM = 13
fromEnum KeyCtrlN = 14
fromEnum KeyCtrlO = 15
fromEnum KeyCtrlP = 16
fromEnum KeyCtrlQ = 17
fromEnum KeyCtrlR = 18
fromEnum KeyCtrlS = 19
fromEnum KeyCtrlT = 20
fromEnum KeyCtrlU = 21
fromEnum KeyCtrlV = 22
fromEnum KeyCtrlW = 23
fromEnum KeyCtrlX = 24
fromEnum KeyCtrlY = 25
fromEnum KeyCtrlZ = 26
fromEnum KeyEsc = 27
fromEnum KeyCtrlLsqBracket = 27
fromEnum KeyCtrl3 = 27
fromEnum KeyCtrl4 = 28
fromEnum KeyCtrlBackslash = 28
fromEnum KeyCtrl5 = 29
fromEnum KeyCtrlRsqBracket = 29
fromEnum KeyCtrl6 = 30
fromEnum KeyCtrl7 = 31
fromEnum KeyCtrlSlash = 31
fromEnum KeyCtrlUnderscore = 31
fromEnum KeySpace = 32
fromEnum KeyBackspace2 = 127
fromEnum KeyCtrl8 = 127
fromEnum KeyMouseWheelDown = 65508
fromEnum KeyMouseWheelUp = 65509
fromEnum KeyMouseRelease = 65510
fromEnum KeyMouseMiddle = 65511
fromEnum KeyMouseRight = 65512
fromEnum KeyMouseLeft = 65513
fromEnum KeyArrowRight = 65514
fromEnum KeyArrowLeft = 65515
fromEnum KeyArrowDown = 65516
fromEnum KeyArrowUp = 65517
fromEnum KeyPageDn = 65518
fromEnum KeyPageUp = 65519
fromEnum KeyEnd = 65520
fromEnum KeyHome = 65521
fromEnum KeyDelete = 65522
fromEnum KeyInsert = 65523
fromEnum KeyF12 = 65524
fromEnum KeyF11 = 65525
fromEnum KeyF10 = 65526
fromEnum KeyF9 = 65527
fromEnum KeyF8 = 65528
fromEnum KeyF7 = 65529
fromEnum KeyF6 = 65530
fromEnum KeyF5 = 65531
fromEnum KeyF4 = 65532
fromEnum KeyF3 = 65533
fromEnum KeyF2 = 65534
fromEnum KeyF1 = 65535
toEnum 0 = KeyCtrlTilde
toEnum 1 = KeyCtrlA
toEnum 2 = KeyCtrlB
toEnum 3 = KeyCtrlC
toEnum 4 = KeyCtrlD
toEnum 5 = KeyCtrlE
toEnum 6 = KeyCtrlF
toEnum 7 = KeyCtrlG
toEnum 8 = KeyBackspace
toEnum 9 = KeyTab
toEnum 10 = KeyCtrlJ
toEnum 11 = KeyCtrlK
toEnum 12 = KeyCtrlL
toEnum 13 = KeyEnter
toEnum 14 = KeyCtrlN
toEnum 15 = KeyCtrlO
toEnum 16 = KeyCtrlP
toEnum 17 = KeyCtrlQ
toEnum 18 = KeyCtrlR
toEnum 19 = KeyCtrlS
toEnum 20 = KeyCtrlT
toEnum 21 = KeyCtrlU
toEnum 22 = KeyCtrlV
toEnum 23 = KeyCtrlW
toEnum 24 = KeyCtrlX
toEnum 25 = KeyCtrlY
toEnum 26 = KeyCtrlZ
toEnum 27 = KeyEsc
toEnum 28 = KeyCtrl4
toEnum 29 = KeyCtrl5
toEnum 30 = KeyCtrl6
toEnum 31 = KeyCtrl7
toEnum 32 = KeySpace
toEnum 127 = KeyBackspace2
toEnum 65508 = KeyMouseWheelDown
toEnum 65509 = KeyMouseWheelUp
toEnum 65510 = KeyMouseRelease
toEnum 65511 = KeyMouseMiddle
toEnum 65512 = KeyMouseRight
toEnum 65513 = KeyMouseLeft
toEnum 65514 = KeyArrowRight
toEnum 65515 = KeyArrowLeft
toEnum 65516 = KeyArrowDown
toEnum 65517 = KeyArrowUp
toEnum 65518 = KeyPageDn
toEnum 65519 = KeyPageUp
toEnum 65520 = KeyEnd
toEnum 65521 = KeyHome
toEnum 65522 = KeyDelete
toEnum 65523 = KeyInsert
toEnum 65524 = KeyF12
toEnum 65525 = KeyF11
toEnum 65526 = KeyF10
toEnum 65527 = KeyF9
toEnum 65528 = KeyF8
toEnum 65529 = KeyF7
toEnum 65530 = KeyF6
toEnum 65531 = KeyF5
toEnum 65532 = KeyF4
toEnum 65533 = KeyF3
toEnum 65534 = KeyF2
toEnum 65535 = KeyF1
toEnum unmatched = error ("Key.toEnum: Cannot match " ++ show unmatched)
{-# LINE 144 "src/Termbox/Internal.chs" #-}
data Mod = ModNone
| ModAlt
instance Enum Mod where
succ ModNone = ModAlt
succ ModAlt = error "Mod.succ: ModAlt has no successor"
pred ModAlt = ModNone
pred ModNone = error "Mod.pred: ModNone has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from ModAlt
fromEnum ModNone = 0
fromEnum ModAlt = 1
toEnum 0 = ModNone
toEnum 1 = ModAlt
toEnum unmatched = error ("Mod.toEnum: Cannot match " ++ show unmatched)
{-# LINE 151 "src/Termbox/Internal.chs" #-}
data OutputMode = OutputModeCurrent
| OutputModeNormal
| OutputMode256
| OutputMode216
| OutputModeGrayscale
instance Enum OutputMode where
succ OutputModeCurrent = OutputModeNormal
succ OutputModeNormal = OutputMode256
succ OutputMode256 = OutputMode216
succ OutputMode216 = OutputModeGrayscale
succ OutputModeGrayscale = error "OutputMode.succ: OutputModeGrayscale has no successor"
pred OutputModeNormal = OutputModeCurrent
pred OutputMode256 = OutputModeNormal
pred OutputMode216 = OutputMode256
pred OutputModeGrayscale = OutputMode216
pred OutputModeCurrent = error "OutputMode.pred: OutputModeCurrent has no predecessor"
enumFromTo from to = go from
where
end = fromEnum to
go v = case compare (fromEnum v) end of
LT -> v : go (succ v)
EQ -> [v]
GT -> []
enumFrom from = enumFromTo from OutputModeGrayscale
fromEnum OutputModeCurrent = 0
fromEnum OutputModeNormal = 1
fromEnum OutputMode256 = 2
fromEnum OutputMode216 = 3
fromEnum OutputModeGrayscale = 4
toEnum 0 = OutputModeCurrent
toEnum 1 = OutputModeNormal
toEnum 2 = OutputMode256
toEnum 3 = OutputMode216
toEnum 4 = OutputModeGrayscale
toEnum unmatched = error ("OutputMode.toEnum: Cannot match " ++ show unmatched)
{-# LINE 162 "src/Termbox/Internal.chs" #-}
sizeofCell :: Int
sizeofCell =
8
{-# LINE 170 "src/Termbox/Internal.chs" #-}
alignofCell :: Int
alignofCell =
4
{-# LINE 174 "src/Termbox/Internal.chs" #-}
getCellCh :: Ptr a -> IO Char
getCellCh =
fmap (toEnum . fromIntegral) . (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CUInt})
{-# LINE 178 "src/Termbox/Internal.chs" #-}
getCellFg :: Ptr a -> IO Word16
getCellFg =
fmap fromIntegral . (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CUShort})
{-# LINE 182 "src/Termbox/Internal.chs" #-}
getCellBg :: Ptr a -> IO Word16
getCellBg =
fmap fromIntegral . (\ptr -> do {C2HSImp.peekByteOff ptr 6 :: IO C2HSImp.CUShort})
{-# LINE 186 "src/Termbox/Internal.chs" #-}
setCellCh :: Ptr a -> Char -> IO ()
setCellCh p =
(\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CUInt)}) p . fromIntegral . fromEnum
setCellFg :: Ptr a -> Word16 -> IO ()
setCellFg p =
(\ptr val -> do {C2HSImp.pokeByteOff ptr 4 (val :: C2HSImp.CUShort)}) p . fromIntegral
setCellBg :: Ptr a -> Word16 -> IO ()
setCellBg p =
(\ptr val -> do {C2HSImp.pokeByteOff ptr 6 (val :: C2HSImp.CUShort)}) p . fromIntegral
data Event
= Event !EventType Mod Key Char Int Int Int Int
instance Storable Event where
sizeOf :: Event -> Int
sizeOf _ =
24
{-# LINE 206 "src/Termbox/Internal.chs" #-}
alignment :: Event -> Int
alignment _ =
4
{-# LINE 210 "src/Termbox/Internal.chs" #-}
peek :: Ptr Event -> IO Event
peek p =
Event
<$> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 0 :: IO C2HSImp.CUChar}) p)
<*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 1 :: IO C2HSImp.CUChar}) p)
<*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 2 :: IO C2HSImp.CUShort}) p)
<*> ((toEnum . fromIntegral) <$> (\ptr -> do {C2HSImp.peekByteOff ptr 4 :: IO C2HSImp.CUInt}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 8 :: IO C2HSImp.CInt}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 12 :: IO C2HSImp.CInt}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 16 :: IO C2HSImp.CInt}) p)
<*> (fromIntegral <$> (\ptr -> do {C2HSImp.peekByteOff ptr 20 :: IO C2HSImp.CInt}) p)
poke :: Ptr Event -> Event -> IO ()
poke p (Event typ mod key ch w h x y) = do
(\ptr val -> do {C2HSImp.pokeByteOff ptr 0 (val :: C2HSImp.CUChar)}) p (fromIntegral (fromEnum typ))
(\ptr val -> do {C2HSImp.pokeByteOff ptr 1 (val :: C2HSImp.CUChar)}) p (fromIntegral (fromEnum mod))
(\ptr val -> do {C2HSImp.pokeByteOff ptr 2 (val :: C2HSImp.CUShort)}) p (fromIntegral (fromEnum key))
(\ptr val -> do {C2HSImp.pokeByteOff ptr 4 (val :: C2HSImp.CUInt)}) p (fromIntegral (fromEnum ch))
(\ptr val -> do {C2HSImp.pokeByteOff ptr 8 (val :: C2HSImp.CInt)}) p (fromIntegral w)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 12 (val :: C2HSImp.CInt)}) p (fromIntegral h)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 16 (val :: C2HSImp.CInt)}) p (fromIntegral x)
(\ptr val -> do {C2HSImp.pokeByteOff ptr 20 (val :: C2HSImp.CInt)}) p (fromIntegral y)
type EventPtr = C2HSImp.Ptr (Event)
{-# LINE 235 "src/Termbox/Internal.chs" #-}
changeCell :: (Int) -> (Int) -> (Char) -> (Word16) -> (Word16) -> IO ()
changeCell a1 a2 a3 a4 a5 =
let {a1' = fromIntegral a1} in
let {a2' = fromIntegral a2} in
let {a3' = charToUInt a3} in
let {a4' = fromIntegral a4} in
let {a5' = fromIntegral a5} in
changeCell'_ a1' a2' a3' a4' a5' >>
return ()
{-# LINE 244 "src/Termbox/Internal.chs" #-}
clear :: IO ()
clear =
clear'_ >>
return ()
{-# LINE 249 "src/Termbox/Internal.chs" #-}
height :: IO ((Int))
height =
height'_ >>= \res ->
let {res' = fromIntegral res} in
return (res')
{-# LINE 254 "src/Termbox/Internal.chs" #-}
init :: IO ((InitResult))
init =
init'_ >>= \res ->
let {res' = (toEnum . fromIntegral) res} in
return (res')
{-# LINE 259 "src/Termbox/Internal.chs" #-}
peekEvent :: (EventPtr) -> (Int) -> IO ((Int))
peekEvent a1 a2 =
let {a1' = id a1} in
let {a2' = fromIntegral a2} in
peekEvent'_ a1' a2' >>= \res ->
let {res' = fromIntegral res} in
return (res')
{-# LINE 264 "src/Termbox/Internal.chs" #-}
pollEvent :: (EventPtr) -> IO ((Int))
pollEvent a1 =
let {a1' = id a1} in
pollEvent'_ a1' >>= \res ->
let {res' = fromIntegral res} in
return (res')
{-# LINE 269 "src/Termbox/Internal.chs" #-}
present :: IO ()
present =
present'_ >>
return ()
{-# LINE 274 "src/Termbox/Internal.chs" #-}
selectInputMode :: (Int) -> IO ((Int))
selectInputMode a1 =
let {a1' = fromIntegral a1} in
selectInputMode'_ a1' >>= \res ->
let {res' = fromIntegral res} in
return (res')
{-# LINE 279 "src/Termbox/Internal.chs" #-}
selectOutputMode :: (OutputMode) -> IO ((OutputMode))
selectOutputMode a1 =
let {a1' = (fromIntegral . fromEnum) a1} in
selectOutputMode'_ a1' >>= \res ->
let {res' = (toEnum . fromIntegral) res} in
return (res')
{-# LINE 284 "src/Termbox/Internal.chs" #-}
setClearAttributes :: (Word16) -> (Word16) -> IO ()
setClearAttributes a1 a2 =
let {a1' = fromIntegral a1} in
let {a2' = fromIntegral a2} in
setClearAttributes'_ a1' a2' >>
return ()
{-# LINE 289 "src/Termbox/Internal.chs" #-}
setCursor :: (Int) -> (Int) -> IO ()
setCursor a1 a2 =
let {a1' = fromIntegral a1} in
let {a2' = fromIntegral a2} in
setCursor'_ a1' a2' >>
return ()
{-# LINE 294 "src/Termbox/Internal.chs" #-}
shutdown :: IO ()
shutdown =
shutdown'_ >>
return ()
{-# LINE 299 "src/Termbox/Internal.chs" #-}
width :: IO ((Int))
width =
width'_ >>= \res ->
let {res' = fromIntegral res} in
return (res')
{-# LINE 304 "src/Termbox/Internal.chs" #-}
charToUInt :: Char -> CUInt
charToUInt =
fromIntegral . ord
foreign import ccall safe "Termbox/Internal.chs.h tb_change_cell"
changeCell'_ :: (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CUInt -> (C2HSImp.CUShort -> (C2HSImp.CUShort -> (IO ()))))))
foreign import ccall safe "Termbox/Internal.chs.h tb_clear"
clear'_ :: (IO ())
foreign import ccall safe "Termbox/Internal.chs.h tb_height"
height'_ :: (IO C2HSImp.CInt)
foreign import ccall safe "Termbox/Internal.chs.h tb_init"
init'_ :: (IO C2HSImp.CInt)
foreign import ccall safe "Termbox/Internal.chs.h tb_peek_event"
peekEvent'_ :: ((EventPtr) -> (C2HSImp.CInt -> (IO C2HSImp.CInt)))
foreign import ccall safe "Termbox/Internal.chs.h tb_poll_event"
pollEvent'_ :: ((EventPtr) -> (IO C2HSImp.CInt))
foreign import ccall safe "Termbox/Internal.chs.h tb_present"
present'_ :: (IO ())
foreign import ccall safe "Termbox/Internal.chs.h tb_select_input_mode"
selectInputMode'_ :: (C2HSImp.CInt -> (IO C2HSImp.CInt))
foreign import ccall safe "Termbox/Internal.chs.h tb_select_output_mode"
selectOutputMode'_ :: (C2HSImp.CInt -> (IO C2HSImp.CInt))
foreign import ccall safe "Termbox/Internal.chs.h tb_set_clear_attributes"
setClearAttributes'_ :: (C2HSImp.CUShort -> (C2HSImp.CUShort -> (IO ())))
foreign import ccall safe "Termbox/Internal.chs.h tb_set_cursor"
setCursor'_ :: (C2HSImp.CInt -> (C2HSImp.CInt -> (IO ())))
foreign import ccall safe "Termbox/Internal.chs.h tb_shutdown"
shutdown'_ :: (IO ())
foreign import ccall safe "Termbox/Internal.chs.h tb_width"
width'_ :: (IO C2HSImp.CInt)