gi-gst-1.0.18: GI/Gst/Structs/Toc.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.Gst.Structs.Toc.Toc' functions are used to create\/free 'GI.Gst.Structs.Toc.Toc' and 'GI.Gst.Structs.TocEntry.TocEntry' structures.
Also they are used to convert 'GI.Gst.Structs.Toc.Toc' into 'GI.Gst.Structs.Structure.Structure' and vice versa.
'GI.Gst.Structs.Toc.Toc' lets you to inform other elements in pipeline or application that playing
source has some kind of table of contents (TOC). These may be chapters, editions,
angles or other types. For example: DVD chapters, Matroska chapters or cue sheet
TOC. Such TOC will be useful for applications to display instead of just a
playlist.
Using TOC is very easy. Firstly, create 'GI.Gst.Structs.Toc.Toc' structure which represents root
contents of the source. You can also attach TOC-specific tags to it. Then fill
it with 'GI.Gst.Structs.TocEntry.TocEntry' entries by appending them to the 'GI.Gst.Structs.Toc.Toc' using
'GI.Gst.Structs.Toc.tocAppendEntry', and appending subentries to a 'GI.Gst.Structs.TocEntry.TocEntry' using
'GI.Gst.Structs.TocEntry.tocEntryAppendSubEntry'.
Note that root level of the TOC can contain only either editions or chapters. You
should not mix them together at the same level. Otherwise you will get serialization
\/deserialization errors. Make sure that no one of the entries has negative start and
stop values.
Use 'GI.Gst.Structs.Event.eventNewToc' to create a new TOC 'GI.Gst.Structs.Event.Event', and 'GI.Gst.Structs.Event.eventParseToc' to
parse received TOC event. Use 'GI.Gst.Structs.Event.eventNewTocSelect' to create a new TOC select 'GI.Gst.Structs.Event.Event',
and 'GI.Gst.Structs.Event.eventParseTocSelect' to parse received TOC select event. The same rule for
the 'GI.Gst.Structs.Message.Message': 'GI.Gst.Structs.Message.messageNewToc' to create new TOC 'GI.Gst.Structs.Message.Message', and
'GI.Gst.Structs.Message.messageParseToc' to parse received TOC message.
TOCs can have global scope or current scope. Global scope TOCs contain
all entries that can possibly be selected using a toc select event, and
are what an application is usually interested in. TOCs with current scope
only contain the parts of the TOC relevant to the currently selected\/playing
stream; the current scope TOC is used by downstream elements such as muxers
to write correct TOC entries when transcoding files, for example. When
playing a DVD, the global TOC would contain a hierarchy of all titles,
chapters and angles, for example, while the current TOC would only contain
the chapters for the currently playing title if playback of a specific
title was requested.
Applications and plugins should not rely on TOCs having a certain kind of
structure, but should allow for different alternatives. For example, a
simple CUE sheet embedded in a file may be presented as a flat list of
track entries, or could have a top-level edition node (or some other
alternative type entry) with track entries underneath that node; or even
multiple top-level edition nodes (or some other alternative type entries)
each with track entries underneath, in case the source file has extracted
a track listing from different sources).
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Gst.Structs.Toc
(
-- * Exported types
Toc(..) ,
noToc ,
-- * Methods
-- ** appendEntry #method:appendEntry#
#if ENABLE_OVERLOADING
TocAppendEntryMethodInfo ,
#endif
tocAppendEntry ,
-- ** dump #method:dump#
#if ENABLE_OVERLOADING
TocDumpMethodInfo ,
#endif
tocDump ,
-- ** findEntry #method:findEntry#
#if ENABLE_OVERLOADING
TocFindEntryMethodInfo ,
#endif
tocFindEntry ,
-- ** getEntries #method:getEntries#
#if ENABLE_OVERLOADING
TocGetEntriesMethodInfo ,
#endif
tocGetEntries ,
-- ** getScope #method:getScope#
#if ENABLE_OVERLOADING
TocGetScopeMethodInfo ,
#endif
tocGetScope ,
-- ** getTags #method:getTags#
#if ENABLE_OVERLOADING
TocGetTagsMethodInfo ,
#endif
tocGetTags ,
-- ** mergeTags #method:mergeTags#
#if ENABLE_OVERLOADING
TocMergeTagsMethodInfo ,
#endif
tocMergeTags ,
-- ** new #method:new#
tocNew ,
-- ** setTags #method:setTags#
#if ENABLE_OVERLOADING
TocSetTagsMethodInfo ,
#endif
tocSetTags ,
) 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.Gst.Enums as Gst.Enums
import {-# SOURCE #-} qualified GI.Gst.Structs.TagList as Gst.TagList
import {-# SOURCE #-} qualified GI.Gst.Structs.TocEntry as Gst.TocEntry
-- | Memory-managed wrapper type.
newtype Toc = Toc (ManagedPtr Toc)
foreign import ccall "gst_toc_get_type" c_gst_toc_get_type ::
IO GType
instance BoxedObject Toc where
boxedType _ = c_gst_toc_get_type
-- | A convenience alias for `Nothing` :: `Maybe` `Toc`.
noToc :: Maybe Toc
noToc = Nothing
#if ENABLE_OVERLOADING
instance O.HasAttributeList Toc
type instance O.AttributeList Toc = TocAttributeList
type TocAttributeList = ('[ ] :: [(Symbol, *)])
#endif
-- method Toc::new
-- method type : Constructor
-- Args : [Arg {argCName = "scope", argType = TInterface (Name {namespace = "Gst", name = "TocScope"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "scope of this TOC", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "Toc"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_toc_new" gst_toc_new ::
CUInt -> -- scope : TInterface (Name {namespace = "Gst", name = "TocScope"})
IO (Ptr Toc)
{- |
Create a new 'GI.Gst.Structs.Toc.Toc' structure.
-}
tocNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
Gst.Enums.TocScope
{- ^ /@scope@/: scope of this TOC -}
-> m Toc
{- ^ __Returns:__ newly allocated 'GI.Gst.Structs.Toc.Toc' structure, free it
with @/gst_toc_unref()/@. -}
tocNew scope = liftIO $ do
let scope' = (fromIntegral . fromEnum) scope
result <- gst_toc_new scope'
checkUnexpectedReturnNULL "tocNew" result
result' <- (wrapBoxed Toc) result
return result'
#if ENABLE_OVERLOADING
#endif
-- method Toc::append_entry
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "toc", argType = TInterface (Name {namespace = "Gst", name = "Toc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstToc instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "entry", argType = TInterface (Name {namespace = "Gst", name = "TocEntry"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstTocEntry", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_toc_append_entry" gst_toc_append_entry ::
Ptr Toc -> -- toc : TInterface (Name {namespace = "Gst", name = "Toc"})
Ptr Gst.TocEntry.TocEntry -> -- entry : TInterface (Name {namespace = "Gst", name = "TocEntry"})
IO ()
{- |
Appends the 'GI.Gst.Structs.TocEntry.TocEntry' /@entry@/ to /@toc@/.
-}
tocAppendEntry ::
(B.CallStack.HasCallStack, MonadIO m) =>
Toc
{- ^ /@toc@/: A 'GI.Gst.Structs.Toc.Toc' instance -}
-> Gst.TocEntry.TocEntry
{- ^ /@entry@/: A 'GI.Gst.Structs.TocEntry.TocEntry' -}
-> m ()
tocAppendEntry toc entry = liftIO $ do
toc' <- unsafeManagedPtrGetPtr toc
entry' <- B.ManagedPtr.disownBoxed entry
gst_toc_append_entry toc' entry'
touchManagedPtr toc
touchManagedPtr entry
return ()
#if ENABLE_OVERLOADING
data TocAppendEntryMethodInfo
instance (signature ~ (Gst.TocEntry.TocEntry -> m ()), MonadIO m) => O.MethodInfo TocAppendEntryMethodInfo Toc signature where
overloadedMethod _ = tocAppendEntry
#endif
-- method Toc::dump
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "toc", argType = TInterface (Name {namespace = "Gst", name = "Toc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_toc_dump" gst_toc_dump ::
Ptr Toc -> -- toc : TInterface (Name {namespace = "Gst", name = "Toc"})
IO ()
{- |
/No description available in the introspection data./
-}
tocDump ::
(B.CallStack.HasCallStack, MonadIO m) =>
Toc
-> m ()
tocDump toc = liftIO $ do
toc' <- unsafeManagedPtrGetPtr toc
gst_toc_dump toc'
touchManagedPtr toc
return ()
#if ENABLE_OVERLOADING
data TocDumpMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo TocDumpMethodInfo Toc signature where
overloadedMethod _ = tocDump
#endif
-- method Toc::find_entry
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "toc", argType = TInterface (Name {namespace = "Gst", name = "Toc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#GstToc to search in.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uid", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "UID to find #GstTocEntry with.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "TocEntry"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_toc_find_entry" gst_toc_find_entry ::
Ptr Toc -> -- toc : TInterface (Name {namespace = "Gst", name = "Toc"})
CString -> -- uid : TBasicType TUTF8
IO (Ptr Gst.TocEntry.TocEntry)
{- |
Find 'GI.Gst.Structs.TocEntry.TocEntry' with given /@uid@/ in the /@toc@/.
-}
tocFindEntry ::
(B.CallStack.HasCallStack, MonadIO m) =>
Toc
{- ^ /@toc@/: 'GI.Gst.Structs.Toc.Toc' to search in. -}
-> T.Text
{- ^ /@uid@/: UID to find 'GI.Gst.Structs.TocEntry.TocEntry' with. -}
-> m (Maybe Gst.TocEntry.TocEntry)
{- ^ __Returns:__ 'GI.Gst.Structs.TocEntry.TocEntry' with specified
/@uid@/ from the /@toc@/, or 'Nothing' if not found. -}
tocFindEntry toc uid = liftIO $ do
toc' <- unsafeManagedPtrGetPtr toc
uid' <- textToCString uid
result <- gst_toc_find_entry toc' uid'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- (newBoxed Gst.TocEntry.TocEntry) result'
return result''
touchManagedPtr toc
freeMem uid'
return maybeResult
#if ENABLE_OVERLOADING
data TocFindEntryMethodInfo
instance (signature ~ (T.Text -> m (Maybe Gst.TocEntry.TocEntry)), MonadIO m) => O.MethodInfo TocFindEntryMethodInfo Toc signature where
overloadedMethod _ = tocFindEntry
#endif
-- method Toc::get_entries
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "toc", argType = TInterface (Name {namespace = "Gst", name = "Toc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstToc instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "Gst", name = "TocEntry"})))
-- throws : False
-- Skip return : False
foreign import ccall "gst_toc_get_entries" gst_toc_get_entries ::
Ptr Toc -> -- toc : TInterface (Name {namespace = "Gst", name = "Toc"})
IO (Ptr (GList (Ptr Gst.TocEntry.TocEntry)))
{- |
Gets the list of 'GI.Gst.Structs.TocEntry.TocEntry' of /@toc@/.
-}
tocGetEntries ::
(B.CallStack.HasCallStack, MonadIO m) =>
Toc
{- ^ /@toc@/: A 'GI.Gst.Structs.Toc.Toc' instance -}
-> m [Gst.TocEntry.TocEntry]
{- ^ __Returns:__ A 'GI.GLib.Structs.List.List' of 'GI.Gst.Structs.TocEntry.TocEntry' for /@entry@/ -}
tocGetEntries toc = liftIO $ do
toc' <- unsafeManagedPtrGetPtr toc
result <- gst_toc_get_entries toc'
result' <- unpackGList result
result'' <- mapM (newBoxed Gst.TocEntry.TocEntry) result'
touchManagedPtr toc
return result''
#if ENABLE_OVERLOADING
data TocGetEntriesMethodInfo
instance (signature ~ (m [Gst.TocEntry.TocEntry]), MonadIO m) => O.MethodInfo TocGetEntriesMethodInfo Toc signature where
overloadedMethod _ = tocGetEntries
#endif
-- method Toc::get_scope
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "toc", argType = TInterface (Name {namespace = "Gst", name = "Toc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstToc instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "TocScope"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_toc_get_scope" gst_toc_get_scope ::
Ptr Toc -> -- toc : TInterface (Name {namespace = "Gst", name = "Toc"})
IO CUInt
{- |
/No description available in the introspection data./
-}
tocGetScope ::
(B.CallStack.HasCallStack, MonadIO m) =>
Toc
{- ^ /@toc@/: a 'GI.Gst.Structs.Toc.Toc' instance -}
-> m Gst.Enums.TocScope
{- ^ __Returns:__ scope of /@toc@/ -}
tocGetScope toc = liftIO $ do
toc' <- unsafeManagedPtrGetPtr toc
result <- gst_toc_get_scope toc'
let result' = (toEnum . fromIntegral) result
touchManagedPtr toc
return result'
#if ENABLE_OVERLOADING
data TocGetScopeMethodInfo
instance (signature ~ (m Gst.Enums.TocScope), MonadIO m) => O.MethodInfo TocGetScopeMethodInfo Toc signature where
overloadedMethod _ = tocGetScope
#endif
-- method Toc::get_tags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "toc", argType = TInterface (Name {namespace = "Gst", name = "Toc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstToc instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "TagList"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_toc_get_tags" gst_toc_get_tags ::
Ptr Toc -> -- toc : TInterface (Name {namespace = "Gst", name = "Toc"})
IO (Ptr Gst.TagList.TagList)
{- |
Gets the tags for /@toc@/.
-}
tocGetTags ::
(B.CallStack.HasCallStack, MonadIO m) =>
Toc
{- ^ /@toc@/: A 'GI.Gst.Structs.Toc.Toc' instance -}
-> m Gst.TagList.TagList
{- ^ __Returns:__ A 'GI.Gst.Structs.TagList.TagList' for /@entry@/ -}
tocGetTags toc = liftIO $ do
toc' <- unsafeManagedPtrGetPtr toc
result <- gst_toc_get_tags toc'
checkUnexpectedReturnNULL "tocGetTags" result
result' <- (newBoxed Gst.TagList.TagList) result
touchManagedPtr toc
return result'
#if ENABLE_OVERLOADING
data TocGetTagsMethodInfo
instance (signature ~ (m Gst.TagList.TagList), MonadIO m) => O.MethodInfo TocGetTagsMethodInfo Toc signature where
overloadedMethod _ = tocGetTags
#endif
-- method Toc::merge_tags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "toc", argType = TInterface (Name {namespace = "Gst", name = "Toc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstToc instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tags", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "A #GstTagList or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mode", argType = TInterface (Name {namespace = "Gst", name = "TagMergeMode"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstTagMergeMode", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_toc_merge_tags" gst_toc_merge_tags ::
Ptr Toc -> -- toc : TInterface (Name {namespace = "Gst", name = "Toc"})
Ptr Gst.TagList.TagList -> -- tags : TInterface (Name {namespace = "Gst", name = "TagList"})
CUInt -> -- mode : TInterface (Name {namespace = "Gst", name = "TagMergeMode"})
IO ()
{- |
Merge /@tags@/ into the existing tags of /@toc@/ using /@mode@/.
-}
tocMergeTags ::
(B.CallStack.HasCallStack, MonadIO m) =>
Toc
{- ^ /@toc@/: A 'GI.Gst.Structs.Toc.Toc' instance -}
-> Maybe (Gst.TagList.TagList)
{- ^ /@tags@/: A 'GI.Gst.Structs.TagList.TagList' or 'Nothing' -}
-> Gst.Enums.TagMergeMode
{- ^ /@mode@/: A 'GI.Gst.Enums.TagMergeMode' -}
-> m ()
tocMergeTags toc tags mode = liftIO $ do
toc' <- unsafeManagedPtrGetPtr toc
maybeTags <- case tags of
Nothing -> return nullPtr
Just jTags -> do
jTags' <- unsafeManagedPtrGetPtr jTags
return jTags'
let mode' = (fromIntegral . fromEnum) mode
gst_toc_merge_tags toc' maybeTags mode'
touchManagedPtr toc
whenJust tags touchManagedPtr
return ()
#if ENABLE_OVERLOADING
data TocMergeTagsMethodInfo
instance (signature ~ (Maybe (Gst.TagList.TagList) -> Gst.Enums.TagMergeMode -> m ()), MonadIO m) => O.MethodInfo TocMergeTagsMethodInfo Toc signature where
overloadedMethod _ = tocMergeTags
#endif
-- method Toc::set_tags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "toc", argType = TInterface (Name {namespace = "Gst", name = "Toc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstToc instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tags", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "A #GstTagList or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_toc_set_tags" gst_toc_set_tags ::
Ptr Toc -> -- toc : TInterface (Name {namespace = "Gst", name = "Toc"})
Ptr Gst.TagList.TagList -> -- tags : TInterface (Name {namespace = "Gst", name = "TagList"})
IO ()
{- |
Set a 'GI.Gst.Structs.TagList.TagList' with tags for the complete /@toc@/.
-}
tocSetTags ::
(B.CallStack.HasCallStack, MonadIO m) =>
Toc
{- ^ /@toc@/: A 'GI.Gst.Structs.Toc.Toc' instance -}
-> Maybe (Gst.TagList.TagList)
{- ^ /@tags@/: A 'GI.Gst.Structs.TagList.TagList' or 'Nothing' -}
-> m ()
tocSetTags toc tags = liftIO $ do
toc' <- unsafeManagedPtrGetPtr toc
maybeTags <- case tags of
Nothing -> return nullPtr
Just jTags -> do
jTags' <- B.ManagedPtr.disownBoxed jTags
return jTags'
gst_toc_set_tags toc' maybeTags
touchManagedPtr toc
whenJust tags touchManagedPtr
return ()
#if ENABLE_OVERLOADING
data TocSetTagsMethodInfo
instance (signature ~ (Maybe (Gst.TagList.TagList) -> m ()), MonadIO m) => O.MethodInfo TocSetTagsMethodInfo Toc signature where
overloadedMethod _ = tocSetTags
#endif
#if ENABLE_OVERLOADING
type family ResolveTocMethod (t :: Symbol) (o :: *) :: * where
ResolveTocMethod "appendEntry" o = TocAppendEntryMethodInfo
ResolveTocMethod "dump" o = TocDumpMethodInfo
ResolveTocMethod "findEntry" o = TocFindEntryMethodInfo
ResolveTocMethod "mergeTags" o = TocMergeTagsMethodInfo
ResolveTocMethod "getEntries" o = TocGetEntriesMethodInfo
ResolveTocMethod "getScope" o = TocGetScopeMethodInfo
ResolveTocMethod "getTags" o = TocGetTagsMethodInfo
ResolveTocMethod "setTags" o = TocSetTagsMethodInfo
ResolveTocMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveTocMethod t Toc, O.MethodInfo info Toc p) => OL.IsLabel t (Toc -> 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