gi-pango-0.1.38.13: GI/Pango/Structs/Language.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
The #PangoLanguage structure is used to
represent a language.
#PangoLanguage pointers can be efficiently
copied and compared with each other.
-}
module GI.Pango.Structs.Language
(
-- * Exported types
Language(..) ,
noLanguage ,
-- * Methods
-- ** languageFromString
languageFromString ,
-- ** languageGetDefault
languageGetDefault ,
-- ** languageGetSampleString
LanguageGetSampleStringMethodInfo ,
languageGetSampleString ,
-- ** languageGetScripts
LanguageGetScriptsMethodInfo ,
languageGetScripts ,
-- ** languageIncludesScript
LanguageIncludesScriptMethodInfo ,
languageIncludesScript ,
-- ** languageMatches
LanguageMatchesMethodInfo ,
languageMatches ,
-- ** languageToString
LanguageToStringMethodInfo ,
languageToString ,
) where
import Prelude ()
import Data.GI.Base.ShortPrelude
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import GI.Pango.Types
import GI.Pango.Callbacks
newtype Language = Language (ForeignPtr Language)
foreign import ccall "pango_language_get_type" c_pango_language_get_type ::
IO GType
instance BoxedObject Language where
boxedType _ = c_pango_language_get_type
noLanguage :: Maybe Language
noLanguage = Nothing
-- method Language::get_sample_string
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False
foreign import ccall "pango_language_get_sample_string" pango_language_get_sample_string ::
Ptr Language -> -- _obj : TInterface "Pango" "Language"
IO CString
languageGetSampleString ::
(MonadIO m) =>
Language -- _obj
-> m T.Text -- result
languageGetSampleString _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
result <- pango_language_get_sample_string _obj'
checkUnexpectedReturnNULL "pango_language_get_sample_string" result
result' <- cstringToText result
touchManagedPtr _obj
return result'
data LanguageGetSampleStringMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => MethodInfo LanguageGetSampleStringMethodInfo Language signature where
overloadedMethod _ = languageGetSampleString
-- method Language::get_scripts
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "num_scripts", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferEverything}]
-- Lengths : [Arg {argCName = "num_scripts", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferEverything}]
-- returnType : TCArray False (-1) 1 (TInterface "Pango" "Script")
-- throws : False
-- Skip return : False
foreign import ccall "pango_language_get_scripts" pango_language_get_scripts ::
Ptr Language -> -- _obj : TInterface "Pango" "Language"
Ptr Int32 -> -- num_scripts : TBasicType TInt32
IO (Ptr CUInt)
languageGetScripts ::
(MonadIO m) =>
Language -- _obj
-> m [Script] -- result
languageGetScripts _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
numScripts <- allocMem :: IO (Ptr Int32)
result <- pango_language_get_scripts _obj' numScripts
numScripts' <- peek numScripts
checkUnexpectedReturnNULL "pango_language_get_scripts" result
result' <- (unpackStorableArrayWithLength numScripts') result
let result'' = map (toEnum . fromIntegral) result'
touchManagedPtr _obj
freeMem numScripts
return result''
data LanguageGetScriptsMethodInfo
instance (signature ~ (m [Script]), MonadIO m) => MethodInfo LanguageGetScriptsMethodInfo Language signature where
overloadedMethod _ = languageGetScripts
-- method Language::includes_script
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "script", argType = TInterface "Pango" "Script", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False
foreign import ccall "pango_language_includes_script" pango_language_includes_script ::
Ptr Language -> -- _obj : TInterface "Pango" "Language"
CUInt -> -- script : TInterface "Pango" "Script"
IO CInt
languageIncludesScript ::
(MonadIO m) =>
Language -- _obj
-> Script -- script
-> m Bool -- result
languageIncludesScript _obj script = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
let script' = (fromIntegral . fromEnum) script
result <- pango_language_includes_script _obj' script'
let result' = (/= 0) result
touchManagedPtr _obj
return result'
data LanguageIncludesScriptMethodInfo
instance (signature ~ (Script -> m Bool), MonadIO m) => MethodInfo LanguageIncludesScriptMethodInfo Language signature where
overloadedMethod _ = languageIncludesScript
-- method Language::matches
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "range_list", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False
foreign import ccall "pango_language_matches" pango_language_matches ::
Ptr Language -> -- _obj : TInterface "Pango" "Language"
CString -> -- range_list : TBasicType TUTF8
IO CInt
languageMatches ::
(MonadIO m) =>
Language -- _obj
-> T.Text -- rangeList
-> m Bool -- result
languageMatches _obj rangeList = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
rangeList' <- textToCString rangeList
result <- pango_language_matches _obj' rangeList'
let result' = (/= 0) result
touchManagedPtr _obj
freeMem rangeList'
return result'
data LanguageMatchesMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m) => MethodInfo LanguageMatchesMethodInfo Language signature where
overloadedMethod _ = languageMatches
-- method Language::to_string
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Language", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUTF8
-- throws : False
-- Skip return : False
foreign import ccall "pango_language_to_string" pango_language_to_string ::
Ptr Language -> -- _obj : TInterface "Pango" "Language"
IO CString
languageToString ::
(MonadIO m) =>
Language -- _obj
-> m T.Text -- result
languageToString _obj = liftIO $ do
let _obj' = unsafeManagedPtrGetPtr _obj
result <- pango_language_to_string _obj'
checkUnexpectedReturnNULL "pango_language_to_string" result
result' <- cstringToText result
touchManagedPtr _obj
return result'
data LanguageToStringMethodInfo
instance (signature ~ (m T.Text), MonadIO m) => MethodInfo LanguageToStringMethodInfo Language signature where
overloadedMethod _ = languageToString
-- method Language::from_string
-- method type : MemberFunction
-- Args : [Arg {argCName = "language", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Pango" "Language"
-- throws : False
-- Skip return : False
foreign import ccall "pango_language_from_string" pango_language_from_string ::
CString -> -- language : TBasicType TUTF8
IO (Ptr Language)
languageFromString ::
(MonadIO m) =>
Maybe (T.Text) -- language
-> m Language -- result
languageFromString language = liftIO $ do
maybeLanguage <- case language of
Nothing -> return nullPtr
Just jLanguage -> do
jLanguage' <- textToCString jLanguage
return jLanguage'
result <- pango_language_from_string maybeLanguage
checkUnexpectedReturnNULL "pango_language_from_string" result
result' <- (newBoxed Language) result
freeMem maybeLanguage
return result'
-- method Language::get_default
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- returnType : TInterface "Pango" "Language"
-- throws : False
-- Skip return : False
foreign import ccall "pango_language_get_default" pango_language_get_default ::
IO (Ptr Language)
languageGetDefault ::
(MonadIO m) =>
m Language -- result
languageGetDefault = liftIO $ do
result <- pango_language_get_default
checkUnexpectedReturnNULL "pango_language_get_default" result
result' <- (newBoxed Language) result
return result'
type family ResolveLanguageMethod (t :: Symbol) (o :: *) :: * where
ResolveLanguageMethod "includesScript" o = LanguageIncludesScriptMethodInfo
ResolveLanguageMethod "matches" o = LanguageMatchesMethodInfo
ResolveLanguageMethod "toString" o = LanguageToStringMethodInfo
ResolveLanguageMethod "getSampleString" o = LanguageGetSampleStringMethodInfo
ResolveLanguageMethod "getScripts" o = LanguageGetScriptsMethodInfo
ResolveLanguageMethod l o = MethodResolutionFailed l o
instance (info ~ ResolveLanguageMethod t Language, MethodInfo info Language p) => IsLabelProxy t (Language -> p) where
fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveLanguageMethod t Language, MethodInfo info Language p) => IsLabel t (Language -> p) where
fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif