gi-gio-2.0.20: GI/Gio/Structs/IOExtensionPoint.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
'GI.Gio.Structs.IOExtensionPoint.IOExtensionPoint' is an opaque data structure and can only be accessed
using the following functions.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Gio.Structs.IOExtensionPoint
(
-- * Exported types
IOExtensionPoint(..) ,
noIOExtensionPoint ,
-- * Methods
-- ** getExtensionByName #method:getExtensionByName#
#if ENABLE_OVERLOADING
IOExtensionPointGetExtensionByNameMethodInfo,
#endif
iOExtensionPointGetExtensionByName ,
-- ** getExtensions #method:getExtensions#
#if ENABLE_OVERLOADING
IOExtensionPointGetExtensionsMethodInfo ,
#endif
iOExtensionPointGetExtensions ,
-- ** getRequiredType #method:getRequiredType#
#if ENABLE_OVERLOADING
IOExtensionPointGetRequiredTypeMethodInfo,
#endif
iOExtensionPointGetRequiredType ,
-- ** implement #method:implement#
iOExtensionPointImplement ,
-- ** lookup #method:lookup#
iOExtensionPointLookup ,
-- ** register #method:register#
iOExtensionPointRegister ,
-- ** setRequiredType #method:setRequiredType#
#if ENABLE_OVERLOADING
IOExtensionPointSetRequiredTypeMethodInfo,
#endif
iOExtensionPointSetRequiredType ,
) 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.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
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.Text as T
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 {-# SOURCE #-} qualified GI.Gio.Structs.IOExtension as Gio.IOExtension
-- | Memory-managed wrapper type.
newtype IOExtensionPoint = IOExtensionPoint (ManagedPtr IOExtensionPoint)
-- XXX Wrapping a foreign struct/union with no known destructor or size, leak?
instance WrappedPtr IOExtensionPoint where
wrappedPtrCalloc = return nullPtr
wrappedPtrCopy = return
wrappedPtrFree = Nothing
-- | A convenience alias for `Nothing` :: `Maybe` `IOExtensionPoint`.
noIOExtensionPoint :: Maybe IOExtensionPoint
noIOExtensionPoint = Nothing
#if ENABLE_OVERLOADING
instance O.HasAttributeList IOExtensionPoint
type instance O.AttributeList IOExtensionPoint = IOExtensionPointAttributeList
type IOExtensionPointAttributeList = ('[ ] :: [(Symbol, *)])
#endif
-- method IOExtensionPoint::get_extension_by_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "extension_point", argType = TInterface (Name {namespace = "Gio", name = "IOExtensionPoint"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GIOExtensionPoint", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of the extension to get", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "IOExtension"}))
-- throws : False
-- Skip return : False
foreign import ccall "g_io_extension_point_get_extension_by_name" g_io_extension_point_get_extension_by_name ::
Ptr IOExtensionPoint -> -- extension_point : TInterface (Name {namespace = "Gio", name = "IOExtensionPoint"})
CString -> -- name : TBasicType TUTF8
IO (Ptr Gio.IOExtension.IOExtension)
{- |
Finds a 'GI.Gio.Structs.IOExtension.IOExtension' for an extension point by name.
-}
iOExtensionPointGetExtensionByName ::
(B.CallStack.HasCallStack, MonadIO m) =>
IOExtensionPoint
{- ^ /@extensionPoint@/: a 'GI.Gio.Structs.IOExtensionPoint.IOExtensionPoint' -}
-> T.Text
{- ^ /@name@/: the name of the extension to get -}
-> m Gio.IOExtension.IOExtension
{- ^ __Returns:__ the 'GI.Gio.Structs.IOExtension.IOExtension' for /@extensionPoint@/ that has the
given name, or 'Nothing' if there is no extension with that name -}
iOExtensionPointGetExtensionByName extensionPoint name = liftIO $ do
extensionPoint' <- unsafeManagedPtrGetPtr extensionPoint
name' <- textToCString name
result <- g_io_extension_point_get_extension_by_name extensionPoint' name'
checkUnexpectedReturnNULL "iOExtensionPointGetExtensionByName" result
result' <- (newPtr Gio.IOExtension.IOExtension) result
touchManagedPtr extensionPoint
freeMem name'
return result'
#if ENABLE_OVERLOADING
data IOExtensionPointGetExtensionByNameMethodInfo
instance (signature ~ (T.Text -> m Gio.IOExtension.IOExtension), MonadIO m) => O.MethodInfo IOExtensionPointGetExtensionByNameMethodInfo IOExtensionPoint signature where
overloadedMethod _ = iOExtensionPointGetExtensionByName
#endif
-- method IOExtensionPoint::get_extensions
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "extension_point", argType = TInterface (Name {namespace = "Gio", name = "IOExtensionPoint"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GIOExtensionPoint", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "Gio", name = "IOExtension"})))
-- throws : False
-- Skip return : False
foreign import ccall "g_io_extension_point_get_extensions" g_io_extension_point_get_extensions ::
Ptr IOExtensionPoint -> -- extension_point : TInterface (Name {namespace = "Gio", name = "IOExtensionPoint"})
IO (Ptr (GList (Ptr Gio.IOExtension.IOExtension)))
{- |
Gets a list of all extensions that implement this extension point.
The list is sorted by priority, beginning with the highest priority.
-}
iOExtensionPointGetExtensions ::
(B.CallStack.HasCallStack, MonadIO m) =>
IOExtensionPoint
{- ^ /@extensionPoint@/: a 'GI.Gio.Structs.IOExtensionPoint.IOExtensionPoint' -}
-> m [Gio.IOExtension.IOExtension]
{- ^ __Returns:__ a 'GI.GLib.Structs.List.List' of
@/GIOExtensions/@. The list is owned by GIO and should not be
modified. -}
iOExtensionPointGetExtensions extensionPoint = liftIO $ do
extensionPoint' <- unsafeManagedPtrGetPtr extensionPoint
result <- g_io_extension_point_get_extensions extensionPoint'
result' <- unpackGList result
result'' <- mapM (newPtr Gio.IOExtension.IOExtension) result'
touchManagedPtr extensionPoint
return result''
#if ENABLE_OVERLOADING
data IOExtensionPointGetExtensionsMethodInfo
instance (signature ~ (m [Gio.IOExtension.IOExtension]), MonadIO m) => O.MethodInfo IOExtensionPointGetExtensionsMethodInfo IOExtensionPoint signature where
overloadedMethod _ = iOExtensionPointGetExtensions
#endif
-- method IOExtensionPoint::get_required_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "extension_point", argType = TInterface (Name {namespace = "Gio", name = "IOExtensionPoint"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GIOExtensionPoint", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TGType)
-- throws : False
-- Skip return : False
foreign import ccall "g_io_extension_point_get_required_type" g_io_extension_point_get_required_type ::
Ptr IOExtensionPoint -> -- extension_point : TInterface (Name {namespace = "Gio", name = "IOExtensionPoint"})
IO CGType
{- |
Gets the required type for /@extensionPoint@/.
-}
iOExtensionPointGetRequiredType ::
(B.CallStack.HasCallStack, MonadIO m) =>
IOExtensionPoint
{- ^ /@extensionPoint@/: a 'GI.Gio.Structs.IOExtensionPoint.IOExtensionPoint' -}
-> m GType
{- ^ __Returns:__ the 'GType' that all implementations must have,
or @/G_TYPE_INVALID/@ if the extension point has no required type -}
iOExtensionPointGetRequiredType extensionPoint = liftIO $ do
extensionPoint' <- unsafeManagedPtrGetPtr extensionPoint
result <- g_io_extension_point_get_required_type extensionPoint'
let result' = GType result
touchManagedPtr extensionPoint
return result'
#if ENABLE_OVERLOADING
data IOExtensionPointGetRequiredTypeMethodInfo
instance (signature ~ (m GType), MonadIO m) => O.MethodInfo IOExtensionPointGetRequiredTypeMethodInfo IOExtensionPoint signature where
overloadedMethod _ = iOExtensionPointGetRequiredType
#endif
-- method IOExtensionPoint::set_required_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "extension_point", argType = TInterface (Name {namespace = "Gio", name = "IOExtensionPoint"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GIOExtensionPoint", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GType to require", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "g_io_extension_point_set_required_type" g_io_extension_point_set_required_type ::
Ptr IOExtensionPoint -> -- extension_point : TInterface (Name {namespace = "Gio", name = "IOExtensionPoint"})
CGType -> -- type : TBasicType TGType
IO ()
{- |
Sets the required type for /@extensionPoint@/ to /@type@/.
All implementations must henceforth have this type.
-}
iOExtensionPointSetRequiredType ::
(B.CallStack.HasCallStack, MonadIO m) =>
IOExtensionPoint
{- ^ /@extensionPoint@/: a 'GI.Gio.Structs.IOExtensionPoint.IOExtensionPoint' -}
-> GType
{- ^ /@type@/: the 'GType' to require -}
-> m ()
iOExtensionPointSetRequiredType extensionPoint type_ = liftIO $ do
extensionPoint' <- unsafeManagedPtrGetPtr extensionPoint
let type_' = gtypeToCGType type_
g_io_extension_point_set_required_type extensionPoint' type_'
touchManagedPtr extensionPoint
return ()
#if ENABLE_OVERLOADING
data IOExtensionPointSetRequiredTypeMethodInfo
instance (signature ~ (GType -> m ()), MonadIO m) => O.MethodInfo IOExtensionPointSetRequiredTypeMethodInfo IOExtensionPoint signature where
overloadedMethod _ = iOExtensionPointSetRequiredType
#endif
-- method IOExtensionPoint::implement
-- method type : MemberFunction
-- Args : [Arg {argCName = "extension_point_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of the extension point", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GType to register as extension", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "extension_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name for the extension", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "priority", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the priority for the extension", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "IOExtension"}))
-- throws : False
-- Skip return : False
foreign import ccall "g_io_extension_point_implement" g_io_extension_point_implement ::
CString -> -- extension_point_name : TBasicType TUTF8
CGType -> -- type : TBasicType TGType
CString -> -- extension_name : TBasicType TUTF8
Int32 -> -- priority : TBasicType TInt
IO (Ptr Gio.IOExtension.IOExtension)
{- |
Registers /@type@/ as extension for the extension point with name
/@extensionPointName@/.
If /@type@/ has already been registered as an extension for this
extension point, the existing 'GI.Gio.Structs.IOExtension.IOExtension' object is returned.
-}
iOExtensionPointImplement ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
{- ^ /@extensionPointName@/: the name of the extension point -}
-> GType
{- ^ /@type@/: the 'GType' to register as extension -}
-> T.Text
{- ^ /@extensionName@/: the name for the extension -}
-> Int32
{- ^ /@priority@/: the priority for the extension -}
-> m Gio.IOExtension.IOExtension
{- ^ __Returns:__ a 'GI.Gio.Structs.IOExtension.IOExtension' object for 'GType' -}
iOExtensionPointImplement extensionPointName type_ extensionName priority = liftIO $ do
extensionPointName' <- textToCString extensionPointName
let type_' = gtypeToCGType type_
extensionName' <- textToCString extensionName
result <- g_io_extension_point_implement extensionPointName' type_' extensionName' priority
checkUnexpectedReturnNULL "iOExtensionPointImplement" result
result' <- (newPtr Gio.IOExtension.IOExtension) result
freeMem extensionPointName'
freeMem extensionName'
return result'
#if ENABLE_OVERLOADING
#endif
-- method IOExtensionPoint::lookup
-- method type : MemberFunction
-- Args : [Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of the extension point", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "IOExtensionPoint"}))
-- throws : False
-- Skip return : False
foreign import ccall "g_io_extension_point_lookup" g_io_extension_point_lookup ::
CString -> -- name : TBasicType TUTF8
IO (Ptr IOExtensionPoint)
{- |
Looks up an existing extension point.
-}
iOExtensionPointLookup ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
{- ^ /@name@/: the name of the extension point -}
-> m IOExtensionPoint
{- ^ __Returns:__ the 'GI.Gio.Structs.IOExtensionPoint.IOExtensionPoint', or 'Nothing' if there
is no registered extension point with the given name. -}
iOExtensionPointLookup name = liftIO $ do
name' <- textToCString name
result <- g_io_extension_point_lookup name'
checkUnexpectedReturnNULL "iOExtensionPointLookup" result
result' <- (newPtr IOExtensionPoint) result
freeMem name'
return result'
#if ENABLE_OVERLOADING
#endif
-- method IOExtensionPoint::register
-- method type : MemberFunction
-- Args : [Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The name of the extension point", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "IOExtensionPoint"}))
-- throws : False
-- Skip return : False
foreign import ccall "g_io_extension_point_register" g_io_extension_point_register ::
CString -> -- name : TBasicType TUTF8
IO (Ptr IOExtensionPoint)
{- |
Registers an extension point.
-}
iOExtensionPointRegister ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
{- ^ /@name@/: The name of the extension point -}
-> m IOExtensionPoint
{- ^ __Returns:__ the new 'GI.Gio.Structs.IOExtensionPoint.IOExtensionPoint'. This object is
owned by GIO and should not be freed. -}
iOExtensionPointRegister name = liftIO $ do
name' <- textToCString name
result <- g_io_extension_point_register name'
checkUnexpectedReturnNULL "iOExtensionPointRegister" result
result' <- (newPtr IOExtensionPoint) result
freeMem name'
return result'
#if ENABLE_OVERLOADING
#endif
#if ENABLE_OVERLOADING
type family ResolveIOExtensionPointMethod (t :: Symbol) (o :: *) :: * where
ResolveIOExtensionPointMethod "getExtensionByName" o = IOExtensionPointGetExtensionByNameMethodInfo
ResolveIOExtensionPointMethod "getExtensions" o = IOExtensionPointGetExtensionsMethodInfo
ResolveIOExtensionPointMethod "getRequiredType" o = IOExtensionPointGetRequiredTypeMethodInfo
ResolveIOExtensionPointMethod "setRequiredType" o = IOExtensionPointSetRequiredTypeMethodInfo
ResolveIOExtensionPointMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveIOExtensionPointMethod t IOExtensionPoint, O.MethodInfo info IOExtensionPoint p) => OL.IsLabel t (IOExtensionPoint -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif