{-# LINE 1 "src/System/GLib/Quarks/Internal.hsc" #-} {-# LANGUAGE BlockArguments, LambdaCase #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module System.GLib.Quarks.Internal ( GQuark(..), gQuarkFromString, gQuarkToString, gInternString, gUninternString, gQuarkTryString ) where import Foreign.Storable import Foreign.C.String import Data.Word import System.IO.Unsafe newtype GQuark = GQuark Word32 deriving (GQuark -> GQuark -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: GQuark -> GQuark -> Bool $c/= :: GQuark -> GQuark -> Bool == :: GQuark -> GQuark -> Bool $c== :: GQuark -> GQuark -> Bool Eq, Ptr GQuark -> IO GQuark Ptr GQuark -> Int -> IO GQuark Ptr GQuark -> Int -> GQuark -> IO () Ptr GQuark -> GQuark -> IO () GQuark -> Int forall b. Ptr b -> Int -> IO GQuark forall b. Ptr b -> Int -> GQuark -> IO () forall a. (a -> Int) -> (a -> Int) -> (Ptr a -> Int -> IO a) -> (Ptr a -> Int -> a -> IO ()) -> (forall b. Ptr b -> Int -> IO a) -> (forall b. Ptr b -> Int -> a -> IO ()) -> (Ptr a -> IO a) -> (Ptr a -> a -> IO ()) -> Storable a poke :: Ptr GQuark -> GQuark -> IO () $cpoke :: Ptr GQuark -> GQuark -> IO () peek :: Ptr GQuark -> IO GQuark $cpeek :: Ptr GQuark -> IO GQuark pokeByteOff :: forall b. Ptr b -> Int -> GQuark -> IO () $cpokeByteOff :: forall b. Ptr b -> Int -> GQuark -> IO () peekByteOff :: forall b. Ptr b -> Int -> IO GQuark $cpeekByteOff :: forall b. Ptr b -> Int -> IO GQuark pokeElemOff :: Ptr GQuark -> Int -> GQuark -> IO () $cpokeElemOff :: Ptr GQuark -> Int -> GQuark -> IO () peekElemOff :: Ptr GQuark -> Int -> IO GQuark $cpeekElemOff :: Ptr GQuark -> Int -> IO GQuark alignment :: GQuark -> Int $calignment :: GQuark -> Int sizeOf :: GQuark -> Int $csizeOf :: GQuark -> Int Storable) {-# LINE 19 "src/System/GLib/Quarks/Internal.hsc" #-} instance Show GQuark where show :: GQuark -> String show GQuark _ = String "GQuark" gQuarkFromString :: String -> GQuark gQuarkFromString :: String -> GQuark gQuarkFromString String s = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ Word32 -> GQuark GQuark forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. String -> (CString -> IO a) -> IO a withCString String s CString -> IO Word32 c_g_quark_from_string foreign import ccall "g_quark_from_string" c_g_quark_from_string :: CString -> IO Word32 {-# LINE 28 "src/System/GLib/Quarks/Internal.hsc" #-} gQuarkToString :: GQuark -> String gQuarkToString :: GQuark -> String gQuarkToString (GQuark Word32 q) = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ CString -> IO String peekCString forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< Word32 -> IO CString c_g_quark_to_string Word32 q foreign import ccall "g_quark_to_string" c_g_quark_to_string :: Word32 -> IO CString {-# LINE 35 "src/System/GLib/Quarks/Internal.hsc" #-} gQuarkTryString :: String -> IO (Maybe GQuark) gQuarkTryString :: String -> IO (Maybe GQuark) gQuarkTryString String s = (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. String -> (CString -> IO a) -> IO a withCString String s CString -> IO Word32 c_g_quark_try_string) \case Word32 0 -> forall a. Maybe a Nothing; Word32 q -> forall a. a -> Maybe a Just forall a b. (a -> b) -> a -> b $ Word32 -> GQuark GQuark Word32 q foreign import ccall "g_quark_try_string" c_g_quark_try_string :: CString -> IO Word32 {-# LINE 42 "src/System/GLib/Quarks/Internal.hsc" #-} newtype InternedString = InternedString CString deriving InternedString -> InternedString -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: InternedString -> InternedString -> Bool $c/= :: InternedString -> InternedString -> Bool == :: InternedString -> InternedString -> Bool $c== :: InternedString -> InternedString -> Bool Eq instance Show InternedString where show :: InternedString -> String show InternedString _ = String "InternedString" gInternString :: String -> InternedString gInternString :: String -> InternedString gInternString String s = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ CString -> InternedString InternedString forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> forall a. String -> (CString -> IO a) -> IO a withCString String s CString -> IO CString c_g_intern_string gUninternString :: InternedString -> String gUninternString :: InternedString -> String gUninternString (InternedString CString i) = forall a. IO a -> a unsafePerformIO forall a b. (a -> b) -> a -> b $ CString -> IO String peekCString CString i foreign import ccall "g_intern_string" c_g_intern_string :: CString -> IO CString