{-# LANGUAGE TypeApplications #-}
#if !defined(__HADDOCK_VERSION__)
#define ENABLE_OVERLOADING
#endif
module GI.Pango.Structs.Language
(
Language(..) ,
#if defined(ENABLE_OVERLOADING)
ResolveLanguageMethod ,
#endif
languageFromString ,
languageGetDefault ,
languageGetPreferred ,
#if defined(ENABLE_OVERLOADING)
LanguageGetSampleStringMethodInfo ,
#endif
languageGetSampleString ,
#if defined(ENABLE_OVERLOADING)
LanguageGetScriptsMethodInfo ,
#endif
languageGetScripts ,
#if defined(ENABLE_OVERLOADING)
LanguageIncludesScriptMethodInfo ,
#endif
languageIncludesScript ,
#if defined(ENABLE_OVERLOADING)
LanguageMatchesMethodInfo ,
#endif
languageMatches ,
#if defined(ENABLE_OVERLOADING)
LanguageToStringMethodInfo ,
#endif
languageToString ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R
import qualified Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT
#if MIN_VERSION_base(4,18,0)
import {-# SOURCE #-} qualified GI.Pango.Enums as Pango.Enums
#else
import {-# SOURCE #-} qualified GI.Pango.Enums as Pango.Enums
#endif
newtype Language = Language (SP.ManagedPtr Language)
deriving (Language -> Language -> Bool
(Language -> Language -> Bool)
-> (Language -> Language -> Bool) -> Eq Language
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Language -> Language -> Bool
== :: Language -> Language -> Bool
$c/= :: Language -> Language -> Bool
/= :: Language -> Language -> Bool
Eq)
instance SP.ManagedPtrNewtype Language where
toManagedPtr :: Language -> ManagedPtr Language
toManagedPtr (Language ManagedPtr Language
p) = ManagedPtr Language
p
foreign import ccall "pango_language_get_type" c_pango_language_get_type ::
IO GType
type instance O.ParentTypes Language = '[]
instance O.HasParentTypes Language
instance B.Types.TypedObject Language where
glibType :: IO GType
glibType = IO GType
c_pango_language_get_type
instance B.Types.GBoxed Language
instance B.GValue.IsGValue (Maybe Language) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_pango_language_get_type
gvalueSet_ :: Ptr GValue -> Maybe Language -> IO ()
gvalueSet_ Ptr GValue
gv Maybe Language
P.Nothing = Ptr GValue -> Ptr Language -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr Language
forall a. Ptr a
FP.nullPtr :: FP.Ptr Language)
gvalueSet_ Ptr GValue
gv (P.Just Language
obj) = Language -> (Ptr Language -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr Language
obj (Ptr GValue -> Ptr Language -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe Language)
gvalueGet_ Ptr GValue
gv = do
ptr <- Ptr GValue -> IO (Ptr Language)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr Language)
if ptr /= FP.nullPtr
then P.Just <$> B.ManagedPtr.newBoxed Language ptr
else return P.Nothing
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList Language
type instance O.AttributeList Language = LanguageAttributeList
type LanguageAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "pango_language_get_sample_string" pango_language_get_sample_string ::
Ptr Language ->
IO CString
languageGetSampleString ::
(B.CallStack.HasCallStack, MonadIO m) =>
Maybe (Language)
-> m T.Text
languageGetSampleString :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Maybe Language -> m Text
languageGetSampleString Maybe Language
language = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
maybeLanguage <- case Maybe Language
language of
Maybe Language
Nothing -> Ptr Language -> IO (Ptr Language)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Language
forall a. Ptr a
FP.nullPtr
Just Language
jLanguage -> do
jLanguage' <- Language -> IO (Ptr Language)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Language
jLanguage
return jLanguage'
result <- pango_language_get_sample_string maybeLanguage
checkUnexpectedReturnNULL "languageGetSampleString" result
result' <- cstringToText result
whenJust language touchManagedPtr
return result'
#if defined(ENABLE_OVERLOADING)
data LanguageGetSampleStringMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.OverloadedMethod LanguageGetSampleStringMethodInfo Language signature where
overloadedMethod i = languageGetSampleString (Just i)
instance O.OverloadedMethodInfo LanguageGetSampleStringMethodInfo Language where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Pango.Structs.Language.languageGetSampleString",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-pango-1.0.30/docs/GI-Pango-Structs-Language.html#v:languageGetSampleString"
})
#endif
foreign import ccall "pango_language_get_scripts" pango_language_get_scripts ::
Ptr Language ->
Ptr Int32 ->
IO (Ptr CInt)
languageGetScripts ::
(B.CallStack.HasCallStack, MonadIO m) =>
Maybe (Language)
-> m (Maybe [Pango.Enums.Script])
languageGetScripts :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Maybe Language -> m (Maybe [Script])
languageGetScripts Maybe Language
language = IO (Maybe [Script]) -> m (Maybe [Script])
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe [Script]) -> m (Maybe [Script]))
-> IO (Maybe [Script]) -> m (Maybe [Script])
forall a b. (a -> b) -> a -> b
$ do
maybeLanguage <- case Maybe Language
language of
Maybe Language
Nothing -> Ptr Language -> IO (Ptr Language)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Language
forall a. Ptr a
FP.nullPtr
Just Language
jLanguage -> do
jLanguage' <- Language -> IO (Ptr Language)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Language
jLanguage
return jLanguage'
numScripts <- allocMem :: IO (Ptr Int32)
result <- pango_language_get_scripts maybeLanguage numScripts
numScripts' <- peek numScripts
maybeResult <- convertIfNonNull result $ \Ptr CInt
result' -> do
result'' <- (Int32 -> Ptr CInt -> IO [CInt]
forall a b. (Integral a, Storable b) => a -> Ptr b -> IO [b]
unpackStorableArrayWithLength Int32
numScripts') Ptr CInt
result'
let result''' = (CInt -> Script) -> [CInt] -> [Script]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> Script
forall a. Enum a => Int -> a
toEnum (Int -> Script) -> (CInt -> Int) -> CInt -> Script
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) [CInt]
result''
return result'''
whenJust language touchManagedPtr
freeMem numScripts
return maybeResult
#if defined(ENABLE_OVERLOADING)
data LanguageGetScriptsMethodInfo
instance (signature ~ (m (Maybe [Pango.Enums.Script])), MonadIO m) => O.OverloadedMethod LanguageGetScriptsMethodInfo Language signature where
overloadedMethod i = languageGetScripts (Just i)
instance O.OverloadedMethodInfo LanguageGetScriptsMethodInfo Language where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Pango.Structs.Language.languageGetScripts",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-pango-1.0.30/docs/GI-Pango-Structs-Language.html#v:languageGetScripts"
})
#endif
foreign import ccall "pango_language_includes_script" pango_language_includes_script ::
Ptr Language ->
CInt ->
IO CInt
languageIncludesScript ::
(B.CallStack.HasCallStack, MonadIO m) =>
Maybe (Language)
-> Pango.Enums.Script
-> m Bool
languageIncludesScript :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Maybe Language -> Script -> m Bool
languageIncludesScript Maybe Language
language Script
script = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
maybeLanguage <- case Maybe Language
language of
Maybe Language
Nothing -> Ptr Language -> IO (Ptr Language)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Language
forall a. Ptr a
FP.nullPtr
Just Language
jLanguage -> do
jLanguage' <- Language -> IO (Ptr Language)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Language
jLanguage
return jLanguage'
let script' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (Script -> Int) -> Script -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Script -> Int
forall a. Enum a => a -> Int
fromEnum) Script
script
result <- pango_language_includes_script maybeLanguage script'
let result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
whenJust language touchManagedPtr
return result'
#if defined(ENABLE_OVERLOADING)
data LanguageIncludesScriptMethodInfo
instance (signature ~ (Pango.Enums.Script -> m Bool), MonadIO m) => O.OverloadedMethod LanguageIncludesScriptMethodInfo Language signature where
overloadedMethod i = languageIncludesScript (Just i)
instance O.OverloadedMethodInfo LanguageIncludesScriptMethodInfo Language where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Pango.Structs.Language.languageIncludesScript",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-pango-1.0.30/docs/GI-Pango-Structs-Language.html#v:languageIncludesScript"
})
#endif
foreign import ccall "pango_language_matches" pango_language_matches ::
Ptr Language ->
CString ->
IO CInt
languageMatches ::
(B.CallStack.HasCallStack, MonadIO m) =>
Maybe (Language)
-> T.Text
-> m Bool
languageMatches :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Maybe Language -> Text -> m Bool
languageMatches Maybe Language
language Text
rangeList = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
maybeLanguage <- case Maybe Language
language of
Maybe Language
Nothing -> Ptr Language -> IO (Ptr Language)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Language
forall a. Ptr a
FP.nullPtr
Just Language
jLanguage -> do
jLanguage' <- Language -> IO (Ptr Language)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Language
jLanguage
return jLanguage'
rangeList' <- textToCString rangeList
result <- pango_language_matches maybeLanguage rangeList'
let result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
whenJust language touchManagedPtr
freeMem rangeList'
return result'
#if defined(ENABLE_OVERLOADING)
data LanguageMatchesMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m) => O.OverloadedMethod LanguageMatchesMethodInfo Language signature where
overloadedMethod i = languageMatches (Just i)
instance O.OverloadedMethodInfo LanguageMatchesMethodInfo Language where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Pango.Structs.Language.languageMatches",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-pango-1.0.30/docs/GI-Pango-Structs-Language.html#v:languageMatches"
})
#endif
foreign import ccall "pango_language_to_string" pango_language_to_string ::
Ptr Language ->
IO CString
languageToString ::
(B.CallStack.HasCallStack, MonadIO m) =>
Language
-> m T.Text
languageToString :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Language -> m Text
languageToString Language
language = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
language' <- Language -> IO (Ptr Language)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Language
language
result <- pango_language_to_string language'
checkUnexpectedReturnNULL "languageToString" result
result' <- cstringToText result
touchManagedPtr language
return result'
#if defined(ENABLE_OVERLOADING)
data LanguageToStringMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => O.OverloadedMethod LanguageToStringMethodInfo Language signature where
overloadedMethod = languageToString
instance O.OverloadedMethodInfo LanguageToStringMethodInfo Language where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Pango.Structs.Language.languageToString",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-pango-1.0.30/docs/GI-Pango-Structs-Language.html#v:languageToString"
})
#endif
foreign import ccall "pango_language_from_string" pango_language_from_string ::
CString ->
IO (Ptr Language)
languageFromString ::
(B.CallStack.HasCallStack, MonadIO m) =>
Maybe (T.Text)
-> m (Maybe Language)
languageFromString :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Maybe Text -> m (Maybe Language)
languageFromString Maybe Text
language = IO (Maybe Language) -> m (Maybe Language)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Language) -> m (Maybe Language))
-> IO (Maybe Language) -> m (Maybe Language)
forall a b. (a -> b) -> a -> b
$ do
maybeLanguage <- case Maybe Text
language of
Maybe Text
Nothing -> CString -> IO CString
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CString
forall a. Ptr a
FP.nullPtr
Just Text
jLanguage -> do
jLanguage' <- Text -> IO CString
textToCString Text
jLanguage
return jLanguage'
result <- pango_language_from_string maybeLanguage
maybeResult <- convertIfNonNull result $ \Ptr Language
result' -> do
result'' <- ((ManagedPtr Language -> Language) -> Ptr Language -> IO Language
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr Language -> Language
Language) Ptr Language
result'
return result''
freeMem maybeLanguage
return maybeResult
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "pango_language_get_default" pango_language_get_default ::
IO (Ptr Language)
languageGetDefault ::
(B.CallStack.HasCallStack, MonadIO m) =>
m Language
languageGetDefault :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m Language
languageGetDefault = IO Language -> m Language
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Language -> m Language) -> IO Language -> m Language
forall a b. (a -> b) -> a -> b
$ do
result <- IO (Ptr Language)
pango_language_get_default
checkUnexpectedReturnNULL "languageGetDefault" result
result' <- (newBoxed Language) result
return result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "pango_language_get_preferred" pango_language_get_preferred ::
IO (Ptr (Ptr Language))
languageGetPreferred ::
(B.CallStack.HasCallStack, MonadIO m) =>
m (Maybe [Language])
languageGetPreferred :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
m (Maybe [Language])
languageGetPreferred = IO (Maybe [Language]) -> m (Maybe [Language])
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe [Language]) -> m (Maybe [Language]))
-> IO (Maybe [Language]) -> m (Maybe [Language])
forall a b. (a -> b) -> a -> b
$ do
result <- IO (Ptr (Ptr Language))
pango_language_get_preferred
maybeResult <- convertIfNonNull result $ \Ptr (Ptr Language)
result' -> do
result'' <- Ptr (Ptr Language) -> IO [Ptr Language]
forall a. Ptr (Ptr a) -> IO [Ptr a]
unpackZeroTerminatedPtrArray Ptr (Ptr Language)
result'
result''' <- mapM (newBoxed Language) result''
return result'''
return maybeResult
#if defined(ENABLE_OVERLOADING)
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveLanguageMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveLanguageMethod "includesScript" o = LanguageIncludesScriptMethodInfo
ResolveLanguageMethod "matches" o = LanguageMatchesMethodInfo
ResolveLanguageMethod "toString" o = LanguageToStringMethodInfo
ResolveLanguageMethod "getSampleString" o = LanguageGetSampleStringMethodInfo
ResolveLanguageMethod "getScripts" o = LanguageGetScriptsMethodInfo
ResolveLanguageMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveLanguageMethod t Language, O.OverloadedMethod info Language p) => OL.IsLabel t (Language -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveLanguageMethod t Language, O.OverloadedMethod info Language p, R.HasField t Language p) => R.HasField t Language p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveLanguageMethod t Language, O.OverloadedMethodInfo info Language) => OL.IsLabel t (O.MethodProxy info Language) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif