module Data.Text.Glyphize.Oom where
import Control.Exception
import Foreign.Ptr (nullPtr, Ptr)
data HarfbuzzError = OutOfMemory deriving (Int -> HarfbuzzError -> ShowS
[HarfbuzzError] -> ShowS
HarfbuzzError -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [HarfbuzzError] -> ShowS
$cshowList :: [HarfbuzzError] -> ShowS
show :: HarfbuzzError -> String
$cshow :: HarfbuzzError -> String
showsPrec :: Int -> HarfbuzzError -> ShowS
$cshowsPrec :: Int -> HarfbuzzError -> ShowS
Show)
instance Exception HarfbuzzError
throwFalse :: IO Bool -> IO ()
throwFalse :: IO Bool -> IO ()
throwFalse IO Bool
cb = do
Bool
ret <- IO Bool
cb
if Bool
ret then forall (m :: * -> *) a. Monad m => a -> m a
return () else forall e a. Exception e => e -> IO a
throwIO HarfbuzzError
OutOfMemory
throwNull :: IO (Ptr a) -> IO (Ptr a)
throwNull :: forall a. IO (Ptr a) -> IO (Ptr a)
throwNull IO (Ptr a)
cb = do
Ptr a
ptr <- IO (Ptr a)
cb
if Ptr a
ptr forall a. Eq a => a -> a -> Bool
== forall a. Ptr a
nullPtr then forall e a. Exception e => e -> IO a
throwIO HarfbuzzError
OutOfMemory else forall (m :: * -> *) a. Monad m => a -> m a
return Ptr a
ptr