{-# 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 (GQuark -> GQuark -> Bool) -> (GQuark -> GQuark -> Bool) -> Eq GQuark forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: GQuark -> GQuark -> Bool == :: GQuark -> GQuark -> Bool $c/= :: GQuark -> GQuark -> Bool /= :: GQuark -> GQuark -> Bool Eq, Ptr GQuark -> IO GQuark Ptr GQuark -> Int -> IO GQuark Ptr GQuark -> Int -> GQuark -> IO () Ptr GQuark -> GQuark -> IO () GQuark -> Int (GQuark -> Int) -> (GQuark -> Int) -> (Ptr GQuark -> Int -> IO GQuark) -> (Ptr GQuark -> Int -> GQuark -> IO ()) -> (forall b. Ptr b -> Int -> IO GQuark) -> (forall b. Ptr b -> Int -> GQuark -> IO ()) -> (Ptr GQuark -> IO GQuark) -> (Ptr GQuark -> GQuark -> IO ()) -> Storable GQuark 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 $csizeOf :: GQuark -> Int sizeOf :: GQuark -> Int $calignment :: GQuark -> Int alignment :: GQuark -> Int $cpeekElemOff :: Ptr GQuark -> Int -> IO GQuark peekElemOff :: Ptr GQuark -> Int -> IO GQuark $cpokeElemOff :: Ptr GQuark -> Int -> GQuark -> IO () pokeElemOff :: Ptr GQuark -> Int -> GQuark -> IO () $cpeekByteOff :: forall b. Ptr b -> Int -> IO GQuark peekByteOff :: forall b. Ptr b -> Int -> IO GQuark $cpokeByteOff :: forall b. Ptr b -> Int -> GQuark -> IO () pokeByteOff :: forall b. Ptr b -> Int -> GQuark -> IO () $cpeek :: Ptr GQuark -> IO GQuark peek :: Ptr GQuark -> IO GQuark $cpoke :: Ptr GQuark -> GQuark -> IO () poke :: Ptr GQuark -> GQuark -> IO () 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 = IO GQuark -> GQuark forall a. IO a -> a unsafePerformIO (IO GQuark -> GQuark) -> IO GQuark -> GQuark forall a b. (a -> b) -> a -> b $ Word32 -> GQuark GQuark (Word32 -> GQuark) -> IO Word32 -> IO GQuark forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> String -> (CString -> IO Word32) -> IO Word32 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) = IO String -> String forall a. IO a -> a unsafePerformIO (IO String -> String) -> IO String -> String forall a b. (a -> b) -> a -> b $ CString -> IO String peekCString (CString -> IO String) -> IO CString -> IO String 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 = ((Word32 -> Maybe GQuark) -> IO Word32 -> IO (Maybe GQuark) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> String -> (CString -> IO Word32) -> IO Word32 forall a. String -> (CString -> IO a) -> IO a withCString String s CString -> IO Word32 c_g_quark_try_string) \case Word32 0 -> Maybe GQuark forall a. Maybe a Nothing; Word32 q -> GQuark -> Maybe GQuark forall a. a -> Maybe a Just (GQuark -> Maybe GQuark) -> GQuark -> Maybe GQuark 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 (InternedString -> InternedString -> Bool) -> (InternedString -> InternedString -> Bool) -> Eq InternedString forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: InternedString -> InternedString -> Bool == :: InternedString -> InternedString -> Bool $c/= :: InternedString -> InternedString -> Bool /= :: InternedString -> InternedString -> Bool Eq instance Show InternedString where show :: InternedString -> String show InternedString _ = String "InternedString" gInternString :: String -> InternedString gInternString :: String -> InternedString gInternString String s = IO InternedString -> InternedString forall a. IO a -> a unsafePerformIO (IO InternedString -> InternedString) -> IO InternedString -> InternedString forall a b. (a -> b) -> a -> b $ CString -> InternedString InternedString (CString -> InternedString) -> IO CString -> IO InternedString forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> String -> (CString -> IO CString) -> IO CString 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) = IO String -> String forall a. IO a -> a unsafePerformIO (IO String -> String) -> IO String -> String 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