monomer-flatpak-example-0.0.13.0: app/Bindings/Util.hs
module Bindings.Util
( withText,
withNull,
cStringToText,
)
where
import Data.ByteString (packCString, useAsCString)
import Data.Text (Text)
import Data.Text.Encoding qualified as T
import Foreign (Ptr, nullPtr)
import Foreign.C (CString)
withText :: Text -> (CString -> IO b) -> IO b
withText t = useAsCString (T.encodeUtf8 t)
withNull :: (Ptr a -> b) -> b
withNull f = f nullPtr
cStringToText :: CString -> IO Text
cStringToText cstr =
T.decodeUtf8 <$> packCString cstr