{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) A plugin should export a variable of this type called plugin_desc. The plugin loader will use the data provided there to initialize the plugin. The @licence parameter must be one of: LGPL, GPL, QPL, GPL/QPL, MPL, BSD, MIT/X11, Proprietary, unknown. -} module GI.Gst.Structs.PluginDesc ( -- * Exported types PluginDesc(..) , newZeroPluginDesc , noPluginDesc , -- * Properties -- ** Description pluginDescReadDescription , -- ** License pluginDescReadLicense , -- ** MajorVersion pluginDescReadMajorVersion , -- ** MinorVersion pluginDescReadMinorVersion , -- ** Name pluginDescReadName , -- ** Origin pluginDescReadOrigin , -- ** Package pluginDescReadPackage , -- ** ReleaseDatetime pluginDescReadReleaseDatetime , -- ** Source pluginDescReadSource , -- ** Version pluginDescReadVersion , ) 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.Gst.Types import GI.Gst.Callbacks newtype PluginDesc = PluginDesc (ForeignPtr PluginDesc) -- | Construct a `PluginDesc` struct initialized to zero. newZeroPluginDesc :: MonadIO m => m PluginDesc newZeroPluginDesc = liftIO $ callocBytes 112 >>= wrapPtr PluginDesc noPluginDesc :: Maybe PluginDesc noPluginDesc = Nothing pluginDescReadMajorVersion :: PluginDesc -> IO Int32 pluginDescReadMajorVersion s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Int32 return val pluginDescReadMinorVersion :: PluginDesc -> IO Int32 pluginDescReadMinorVersion s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 4) :: IO Int32 return val pluginDescReadName :: PluginDesc -> IO T.Text pluginDescReadName s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO CString val' <- cstringToText val return val' pluginDescReadDescription :: PluginDesc -> IO T.Text pluginDescReadDescription s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 16) :: IO CString val' <- cstringToText val return val' -- XXX Skipped getter for "PluginDesc:plugin_init" :: Not implemented: "Wrapping foreign callbacks is not supported yet" pluginDescReadVersion :: PluginDesc -> IO T.Text pluginDescReadVersion s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 32) :: IO CString val' <- cstringToText val return val' pluginDescReadLicense :: PluginDesc -> IO T.Text pluginDescReadLicense s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 40) :: IO CString val' <- cstringToText val return val' pluginDescReadSource :: PluginDesc -> IO T.Text pluginDescReadSource s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 48) :: IO CString val' <- cstringToText val return val' pluginDescReadPackage :: PluginDesc -> IO T.Text pluginDescReadPackage s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 56) :: IO CString val' <- cstringToText val return val' pluginDescReadOrigin :: PluginDesc -> IO T.Text pluginDescReadOrigin s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 64) :: IO CString val' <- cstringToText val return val' pluginDescReadReleaseDatetime :: PluginDesc -> IO T.Text pluginDescReadReleaseDatetime s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 72) :: IO CString val' <- cstringToText val return val' type family ResolvePluginDescMethod (t :: Symbol) (o :: *) :: * where ResolvePluginDescMethod l o = MethodResolutionFailed l o instance (info ~ ResolvePluginDescMethod t PluginDesc, MethodInfo info PluginDesc p) => IsLabelProxy t (PluginDesc -> p) where fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolvePluginDescMethod t PluginDesc, MethodInfo info PluginDesc p) => IsLabel t (PluginDesc -> p) where fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info) #endif