{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- Outputs the video stream from a given image sequence. The start frame chosen
-- will be determined by the in-point property on the track element.
-- 
-- This should not be used anymore, the @imagesequence:\/\/@ protocol should be
-- used instead. Check the @/imagesequencesrc/@ GStreamer element for more
-- information.

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.GES.Objects.MultiFileSource
    ( 

-- * Exported types
    MultiFileSource(..)                     ,
    IsMultiFileSource                       ,
    toMultiFileSource                       ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [addChildProperty]("GI.GES.Objects.TimelineElement#g:method:addChildProperty"), [addChildrenProps]("GI.GES.Objects.TrackElement#g:method:addChildrenProps"), [addMetasFromString]("GI.GES.Interfaces.MetaContainer#g:method:addMetasFromString"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [checkMetaRegistered]("GI.GES.Interfaces.MetaContainer#g:method:checkMetaRegistered"), [clampControlSource]("GI.GES.Objects.TrackElement#g:method:clampControlSource"), [copy]("GI.GES.Objects.TimelineElement#g:method:copy"), [edit]("GI.GES.Objects.TrackElement#g:method:edit"), [editFull]("GI.GES.Objects.TimelineElement#g:method:editFull"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [foreach]("GI.GES.Interfaces.MetaContainer#g:method:foreach"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [hasInternalSource]("GI.GES.Objects.TrackElement#g:method:hasInternalSource"), [isActive]("GI.GES.Objects.TrackElement#g:method:isActive"), [isCore]("GI.GES.Objects.TrackElement#g:method:isCore"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [listChildrenProperties]("GI.GES.Objects.TrackElement#g:method:listChildrenProperties"), [lookupChild]("GI.GES.Objects.TrackElement#g:method:lookupChild"), [metasToString]("GI.GES.Interfaces.MetaContainer#g:method:metasToString"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [paste]("GI.GES.Objects.TimelineElement#g:method:paste"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [registerMeta]("GI.GES.Interfaces.MetaContainer#g:method:registerMeta"), [registerMetaBoolean]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaBoolean"), [registerMetaDate]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaDate"), [registerMetaDateTime]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaDateTime"), [registerMetaDouble]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaDouble"), [registerMetaFloat]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaFloat"), [registerMetaInt]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaInt"), [registerMetaInt64]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaInt64"), [registerMetaString]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaString"), [registerMetaUint]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaUint"), [registerMetaUint64]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaUint64"), [registerStaticMeta]("GI.GES.Interfaces.MetaContainer#g:method:registerStaticMeta"), [removeChildProperty]("GI.GES.Objects.TimelineElement#g:method:removeChildProperty"), [removeControlBinding]("GI.GES.Objects.TrackElement#g:method:removeControlBinding"), [ripple]("GI.GES.Objects.TimelineElement#g:method:ripple"), [rippleEnd]("GI.GES.Objects.TimelineElement#g:method:rippleEnd"), [rollEnd]("GI.GES.Objects.TimelineElement#g:method:rollEnd"), [rollStart]("GI.GES.Objects.TimelineElement#g:method:rollStart"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [trim]("GI.GES.Objects.TimelineElement#g:method:trim"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getAllControlBindings]("GI.GES.Objects.TrackElement#g:method:getAllControlBindings"), [getAsset]("GI.GES.Interfaces.Extractable#g:method:getAsset"), [getAutoClampControlSources]("GI.GES.Objects.TrackElement#g:method:getAutoClampControlSources"), [getBoolean]("GI.GES.Interfaces.MetaContainer#g:method:getBoolean"), [getChildProperty]("GI.GES.Objects.TimelineElement#g:method:getChildProperty"), [getChildPropertyByPspec]("GI.GES.Objects.TimelineElement#g:method:getChildPropertyByPspec"), [getControlBinding]("GI.GES.Objects.TrackElement#g:method:getControlBinding"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getDate]("GI.GES.Interfaces.MetaContainer#g:method:getDate"), [getDateTime]("GI.GES.Interfaces.MetaContainer#g:method:getDateTime"), [getDouble]("GI.GES.Interfaces.MetaContainer#g:method:getDouble"), [getDuration]("GI.GES.Objects.TimelineElement#g:method:getDuration"), [getElement]("GI.GES.Objects.TrackElement#g:method:getElement"), [getFloat]("GI.GES.Interfaces.MetaContainer#g:method:getFloat"), [getGnlobject]("GI.GES.Objects.TrackElement#g:method:getGnlobject"), [getId]("GI.GES.Interfaces.Extractable#g:method:getId"), [getInpoint]("GI.GES.Objects.TimelineElement#g:method:getInpoint"), [getInt]("GI.GES.Interfaces.MetaContainer#g:method:getInt"), [getInt64]("GI.GES.Interfaces.MetaContainer#g:method:getInt64"), [getLayerPriority]("GI.GES.Objects.TimelineElement#g:method:getLayerPriority"), [getMarkerList]("GI.GES.Interfaces.MetaContainer#g:method:getMarkerList"), [getMaxDuration]("GI.GES.Objects.TimelineElement#g:method:getMaxDuration"), [getMeta]("GI.GES.Interfaces.MetaContainer#g:method:getMeta"), [getName]("GI.GES.Objects.TimelineElement#g:method:getName"), [getNaturalFramerate]("GI.GES.Objects.TimelineElement#g:method:getNaturalFramerate"), [getNaturalSize]("GI.GES.Objects.VideoSource#g:method:getNaturalSize"), [getNleobject]("GI.GES.Objects.TrackElement#g:method:getNleobject"), [getParent]("GI.GES.Objects.TimelineElement#g:method:getParent"), [getPriority]("GI.GES.Objects.TimelineElement#g:method:getPriority"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getStart]("GI.GES.Objects.TimelineElement#g:method:getStart"), [getString]("GI.GES.Interfaces.MetaContainer#g:method:getString"), [getTimeline]("GI.GES.Objects.TimelineElement#g:method:getTimeline"), [getToplevelParent]("GI.GES.Objects.TimelineElement#g:method:getToplevelParent"), [getTrack]("GI.GES.Objects.TrackElement#g:method:getTrack"), [getTrackType]("GI.GES.Objects.TrackElement#g:method:getTrackType"), [getTrackTypes]("GI.GES.Objects.TimelineElement#g:method:getTrackTypes"), [getUint]("GI.GES.Interfaces.MetaContainer#g:method:getUint"), [getUint64]("GI.GES.Interfaces.MetaContainer#g:method:getUint64").
-- 
-- ==== Setters
-- [setActive]("GI.GES.Objects.TrackElement#g:method:setActive"), [setAsset]("GI.GES.Interfaces.Extractable#g:method:setAsset"), [setAutoClampControlSources]("GI.GES.Objects.TrackElement#g:method:setAutoClampControlSources"), [setBoolean]("GI.GES.Interfaces.MetaContainer#g:method:setBoolean"), [setChildProperty]("GI.GES.Objects.TimelineElement#g:method:setChildProperty"), [setChildPropertyByPspec]("GI.GES.Objects.TimelineElement#g:method:setChildPropertyByPspec"), [setChildPropertyFull]("GI.GES.Objects.TimelineElement#g:method:setChildPropertyFull"), [setControlSource]("GI.GES.Objects.TrackElement#g:method:setControlSource"), [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setDate]("GI.GES.Interfaces.MetaContainer#g:method:setDate"), [setDateTime]("GI.GES.Interfaces.MetaContainer#g:method:setDateTime"), [setDouble]("GI.GES.Interfaces.MetaContainer#g:method:setDouble"), [setDuration]("GI.GES.Objects.TimelineElement#g:method:setDuration"), [setFloat]("GI.GES.Interfaces.MetaContainer#g:method:setFloat"), [setHasInternalSource]("GI.GES.Objects.TrackElement#g:method:setHasInternalSource"), [setInpoint]("GI.GES.Objects.TimelineElement#g:method:setInpoint"), [setInt]("GI.GES.Interfaces.MetaContainer#g:method:setInt"), [setInt64]("GI.GES.Interfaces.MetaContainer#g:method:setInt64"), [setMarkerList]("GI.GES.Interfaces.MetaContainer#g:method:setMarkerList"), [setMaxDuration]("GI.GES.Objects.TimelineElement#g:method:setMaxDuration"), [setMeta]("GI.GES.Interfaces.MetaContainer#g:method:setMeta"), [setName]("GI.GES.Objects.TimelineElement#g:method:setName"), [setParent]("GI.GES.Objects.TimelineElement#g:method:setParent"), [setPriority]("GI.GES.Objects.TimelineElement#g:method:setPriority"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setStart]("GI.GES.Objects.TimelineElement#g:method:setStart"), [setString]("GI.GES.Interfaces.MetaContainer#g:method:setString"), [setTimeline]("GI.GES.Objects.TimelineElement#g:method:setTimeline"), [setTrackType]("GI.GES.Objects.TrackElement#g:method:setTrackType"), [setUint]("GI.GES.Interfaces.MetaContainer#g:method:setUint"), [setUint64]("GI.GES.Interfaces.MetaContainer#g:method:setUint64").

#if defined(ENABLE_OVERLOADING)
    ResolveMultiFileSourceMethod            ,
#endif

-- ** new #method:new#

    multiFileSourceNew                      ,




 -- * Properties


-- ** uri #attr:uri#
-- | The uri of the file\/resource to use. You can set a start index,
-- a stop index and a sequence pattern.
-- The format is \<multifile:\/\/start:stop\@location-pattern>.
-- The pattern uses printf string formating.
-- 
-- Example uris:
-- 
-- multifile:\/\/\/home\/you\/image%03d.jpg
-- 
-- multifile:\/\/20:50\@\/home\/you\/sequence\/%04d.png

#if defined(ENABLE_OVERLOADING)
    MultiFileSourceUriPropertyInfo          ,
#endif
    constructMultiFileSourceUri             ,
    getMultiFileSourceUri                   ,
#if defined(ENABLE_OVERLOADING)
    multiFileSourceUri                      ,
#endif




    ) 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.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 {-# SOURCE #-} qualified GI.GES.Interfaces.Extractable as GES.Extractable
import {-# SOURCE #-} qualified GI.GES.Interfaces.MetaContainer as GES.MetaContainer
import {-# SOURCE #-} qualified GI.GES.Objects.Source as GES.Source
import {-# SOURCE #-} qualified GI.GES.Objects.TimelineElement as GES.TimelineElement
import {-# SOURCE #-} qualified GI.GES.Objects.TrackElement as GES.TrackElement
import {-# SOURCE #-} qualified GI.GES.Objects.VideoSource as GES.VideoSource
import qualified GI.GObject.Objects.Object as GObject.Object

-- | Memory-managed wrapper type.
newtype MultiFileSource = MultiFileSource (SP.ManagedPtr MultiFileSource)
    deriving (MultiFileSource -> MultiFileSource -> Bool
(MultiFileSource -> MultiFileSource -> Bool)
-> (MultiFileSource -> MultiFileSource -> Bool)
-> Eq MultiFileSource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: MultiFileSource -> MultiFileSource -> Bool
== :: MultiFileSource -> MultiFileSource -> Bool
$c/= :: MultiFileSource -> MultiFileSource -> Bool
/= :: MultiFileSource -> MultiFileSource -> Bool
Eq)

instance SP.ManagedPtrNewtype MultiFileSource where
    toManagedPtr :: MultiFileSource -> ManagedPtr MultiFileSource
toManagedPtr (MultiFileSource ManagedPtr MultiFileSource
p) = ManagedPtr MultiFileSource
p

foreign import ccall "ges_multi_file_source_get_type"
    c_ges_multi_file_source_get_type :: IO B.Types.GType

instance B.Types.TypedObject MultiFileSource where
    glibType :: IO GType
glibType = IO GType
c_ges_multi_file_source_get_type

instance B.Types.GObject MultiFileSource

-- | Type class for types which can be safely cast to `MultiFileSource`, for instance with `toMultiFileSource`.
class (SP.GObject o, O.IsDescendantOf MultiFileSource o) => IsMultiFileSource o
instance (SP.GObject o, O.IsDescendantOf MultiFileSource o) => IsMultiFileSource o

instance O.HasParentTypes MultiFileSource
type instance O.ParentTypes MultiFileSource = '[GES.VideoSource.VideoSource, GES.Source.Source, GES.TrackElement.TrackElement, GES.TimelineElement.TimelineElement, GObject.Object.Object, GES.Extractable.Extractable, GES.MetaContainer.MetaContainer]

-- | Cast to `MultiFileSource`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toMultiFileSource :: (MIO.MonadIO m, IsMultiFileSource o) => o -> m MultiFileSource
toMultiFileSource :: forall (m :: * -> *) o.
(MonadIO m, IsMultiFileSource o) =>
o -> m MultiFileSource
toMultiFileSource = IO MultiFileSource -> m MultiFileSource
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO MultiFileSource -> m MultiFileSource)
-> (o -> IO MultiFileSource) -> o -> m MultiFileSource
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr MultiFileSource -> MultiFileSource)
-> o -> IO MultiFileSource
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr MultiFileSource -> MultiFileSource
MultiFileSource

-- | Convert 'MultiFileSource' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe MultiFileSource) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_ges_multi_file_source_get_type
    gvalueSet_ :: Ptr GValue -> Maybe MultiFileSource -> IO ()
gvalueSet_ Ptr GValue
gv Maybe MultiFileSource
P.Nothing = Ptr GValue -> Ptr MultiFileSource -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr MultiFileSource
forall a. Ptr a
FP.nullPtr :: FP.Ptr MultiFileSource)
    gvalueSet_ Ptr GValue
gv (P.Just MultiFileSource
obj) = MultiFileSource -> (Ptr MultiFileSource -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr MultiFileSource
obj (Ptr GValue -> Ptr MultiFileSource -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe MultiFileSource)
gvalueGet_ Ptr GValue
gv = do
        Ptr MultiFileSource
ptr <- Ptr GValue -> IO (Ptr MultiFileSource)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr MultiFileSource)
        if Ptr MultiFileSource
ptr Ptr MultiFileSource -> Ptr MultiFileSource -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr MultiFileSource
forall a. Ptr a
FP.nullPtr
        then MultiFileSource -> Maybe MultiFileSource
forall a. a -> Maybe a
P.Just (MultiFileSource -> Maybe MultiFileSource)
-> IO MultiFileSource -> IO (Maybe MultiFileSource)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr MultiFileSource -> MultiFileSource)
-> Ptr MultiFileSource -> IO MultiFileSource
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr MultiFileSource -> MultiFileSource
MultiFileSource Ptr MultiFileSource
ptr
        else Maybe MultiFileSource -> IO (Maybe MultiFileSource)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe MultiFileSource
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveMultiFileSourceMethod (t :: Symbol) (o :: *) :: * where
    ResolveMultiFileSourceMethod "addChildProperty" o = GES.TimelineElement.TimelineElementAddChildPropertyMethodInfo
    ResolveMultiFileSourceMethod "addChildrenProps" o = GES.TrackElement.TrackElementAddChildrenPropsMethodInfo
    ResolveMultiFileSourceMethod "addMetasFromString" o = GES.MetaContainer.MetaContainerAddMetasFromStringMethodInfo
    ResolveMultiFileSourceMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveMultiFileSourceMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveMultiFileSourceMethod "checkMetaRegistered" o = GES.MetaContainer.MetaContainerCheckMetaRegisteredMethodInfo
    ResolveMultiFileSourceMethod "clampControlSource" o = GES.TrackElement.TrackElementClampControlSourceMethodInfo
    ResolveMultiFileSourceMethod "copy" o = GES.TimelineElement.TimelineElementCopyMethodInfo
    ResolveMultiFileSourceMethod "edit" o = GES.TrackElement.TrackElementEditMethodInfo
    ResolveMultiFileSourceMethod "editFull" o = GES.TimelineElement.TimelineElementEditFullMethodInfo
    ResolveMultiFileSourceMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveMultiFileSourceMethod "foreach" o = GES.MetaContainer.MetaContainerForeachMethodInfo
    ResolveMultiFileSourceMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveMultiFileSourceMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveMultiFileSourceMethod "hasInternalSource" o = GES.TrackElement.TrackElementHasInternalSourceMethodInfo
    ResolveMultiFileSourceMethod "isActive" o = GES.TrackElement.TrackElementIsActiveMethodInfo
    ResolveMultiFileSourceMethod "isCore" o = GES.TrackElement.TrackElementIsCoreMethodInfo
    ResolveMultiFileSourceMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveMultiFileSourceMethod "listChildrenProperties" o = GES.TrackElement.TrackElementListChildrenPropertiesMethodInfo
    ResolveMultiFileSourceMethod "lookupChild" o = GES.TrackElement.TrackElementLookupChildMethodInfo
    ResolveMultiFileSourceMethod "metasToString" o = GES.MetaContainer.MetaContainerMetasToStringMethodInfo
    ResolveMultiFileSourceMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveMultiFileSourceMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveMultiFileSourceMethod "paste" o = GES.TimelineElement.TimelineElementPasteMethodInfo
    ResolveMultiFileSourceMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveMultiFileSourceMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveMultiFileSourceMethod "registerMeta" o = GES.MetaContainer.MetaContainerRegisterMetaMethodInfo
    ResolveMultiFileSourceMethod "registerMetaBoolean" o = GES.MetaContainer.MetaContainerRegisterMetaBooleanMethodInfo
    ResolveMultiFileSourceMethod "registerMetaDate" o = GES.MetaContainer.MetaContainerRegisterMetaDateMethodInfo
    ResolveMultiFileSourceMethod "registerMetaDateTime" o = GES.MetaContainer.MetaContainerRegisterMetaDateTimeMethodInfo
    ResolveMultiFileSourceMethod "registerMetaDouble" o = GES.MetaContainer.MetaContainerRegisterMetaDoubleMethodInfo
    ResolveMultiFileSourceMethod "registerMetaFloat" o = GES.MetaContainer.MetaContainerRegisterMetaFloatMethodInfo
    ResolveMultiFileSourceMethod "registerMetaInt" o = GES.MetaContainer.MetaContainerRegisterMetaIntMethodInfo
    ResolveMultiFileSourceMethod "registerMetaInt64" o = GES.MetaContainer.MetaContainerRegisterMetaInt64MethodInfo
    ResolveMultiFileSourceMethod "registerMetaString" o = GES.MetaContainer.MetaContainerRegisterMetaStringMethodInfo
    ResolveMultiFileSourceMethod "registerMetaUint" o = GES.MetaContainer.MetaContainerRegisterMetaUintMethodInfo
    ResolveMultiFileSourceMethod "registerMetaUint64" o = GES.MetaContainer.MetaContainerRegisterMetaUint64MethodInfo
    ResolveMultiFileSourceMethod "registerStaticMeta" o = GES.MetaContainer.MetaContainerRegisterStaticMetaMethodInfo
    ResolveMultiFileSourceMethod "removeChildProperty" o = GES.TimelineElement.TimelineElementRemoveChildPropertyMethodInfo
    ResolveMultiFileSourceMethod "removeControlBinding" o = GES.TrackElement.TrackElementRemoveControlBindingMethodInfo
    ResolveMultiFileSourceMethod "ripple" o = GES.TimelineElement.TimelineElementRippleMethodInfo
    ResolveMultiFileSourceMethod "rippleEnd" o = GES.TimelineElement.TimelineElementRippleEndMethodInfo
    ResolveMultiFileSourceMethod "rollEnd" o = GES.TimelineElement.TimelineElementRollEndMethodInfo
    ResolveMultiFileSourceMethod "rollStart" o = GES.TimelineElement.TimelineElementRollStartMethodInfo
    ResolveMultiFileSourceMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveMultiFileSourceMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveMultiFileSourceMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveMultiFileSourceMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveMultiFileSourceMethod "trim" o = GES.TimelineElement.TimelineElementTrimMethodInfo
    ResolveMultiFileSourceMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveMultiFileSourceMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveMultiFileSourceMethod "getAllControlBindings" o = GES.TrackElement.TrackElementGetAllControlBindingsMethodInfo
    ResolveMultiFileSourceMethod "getAsset" o = GES.Extractable.ExtractableGetAssetMethodInfo
    ResolveMultiFileSourceMethod "getAutoClampControlSources" o = GES.TrackElement.TrackElementGetAutoClampControlSourcesMethodInfo
    ResolveMultiFileSourceMethod "getBoolean" o = GES.MetaContainer.MetaContainerGetBooleanMethodInfo
    ResolveMultiFileSourceMethod "getChildProperty" o = GES.TimelineElement.TimelineElementGetChildPropertyMethodInfo
    ResolveMultiFileSourceMethod "getChildPropertyByPspec" o = GES.TimelineElement.TimelineElementGetChildPropertyByPspecMethodInfo
    ResolveMultiFileSourceMethod "getControlBinding" o = GES.TrackElement.TrackElementGetControlBindingMethodInfo
    ResolveMultiFileSourceMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveMultiFileSourceMethod "getDate" o = GES.MetaContainer.MetaContainerGetDateMethodInfo
    ResolveMultiFileSourceMethod "getDateTime" o = GES.MetaContainer.MetaContainerGetDateTimeMethodInfo
    ResolveMultiFileSourceMethod "getDouble" o = GES.MetaContainer.MetaContainerGetDoubleMethodInfo
    ResolveMultiFileSourceMethod "getDuration" o = GES.TimelineElement.TimelineElementGetDurationMethodInfo
    ResolveMultiFileSourceMethod "getElement" o = GES.TrackElement.TrackElementGetElementMethodInfo
    ResolveMultiFileSourceMethod "getFloat" o = GES.MetaContainer.MetaContainerGetFloatMethodInfo
    ResolveMultiFileSourceMethod "getGnlobject" o = GES.TrackElement.TrackElementGetGnlobjectMethodInfo
    ResolveMultiFileSourceMethod "getId" o = GES.Extractable.ExtractableGetIdMethodInfo
    ResolveMultiFileSourceMethod "getInpoint" o = GES.TimelineElement.TimelineElementGetInpointMethodInfo
    ResolveMultiFileSourceMethod "getInt" o = GES.MetaContainer.MetaContainerGetIntMethodInfo
    ResolveMultiFileSourceMethod "getInt64" o = GES.MetaContainer.MetaContainerGetInt64MethodInfo
    ResolveMultiFileSourceMethod "getLayerPriority" o = GES.TimelineElement.TimelineElementGetLayerPriorityMethodInfo
    ResolveMultiFileSourceMethod "getMarkerList" o = GES.MetaContainer.MetaContainerGetMarkerListMethodInfo
    ResolveMultiFileSourceMethod "getMaxDuration" o = GES.TimelineElement.TimelineElementGetMaxDurationMethodInfo
    ResolveMultiFileSourceMethod "getMeta" o = GES.MetaContainer.MetaContainerGetMetaMethodInfo
    ResolveMultiFileSourceMethod "getName" o = GES.TimelineElement.TimelineElementGetNameMethodInfo
    ResolveMultiFileSourceMethod "getNaturalFramerate" o = GES.TimelineElement.TimelineElementGetNaturalFramerateMethodInfo
    ResolveMultiFileSourceMethod "getNaturalSize" o = GES.VideoSource.VideoSourceGetNaturalSizeMethodInfo
    ResolveMultiFileSourceMethod "getNleobject" o = GES.TrackElement.TrackElementGetNleobjectMethodInfo
    ResolveMultiFileSourceMethod "getParent" o = GES.TimelineElement.TimelineElementGetParentMethodInfo
    ResolveMultiFileSourceMethod "getPriority" o = GES.TimelineElement.TimelineElementGetPriorityMethodInfo
    ResolveMultiFileSourceMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveMultiFileSourceMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveMultiFileSourceMethod "getStart" o = GES.TimelineElement.TimelineElementGetStartMethodInfo
    ResolveMultiFileSourceMethod "getString" o = GES.MetaContainer.MetaContainerGetStringMethodInfo
    ResolveMultiFileSourceMethod "getTimeline" o = GES.TimelineElement.TimelineElementGetTimelineMethodInfo
    ResolveMultiFileSourceMethod "getToplevelParent" o = GES.TimelineElement.TimelineElementGetToplevelParentMethodInfo
    ResolveMultiFileSourceMethod "getTrack" o = GES.TrackElement.TrackElementGetTrackMethodInfo
    ResolveMultiFileSourceMethod "getTrackType" o = GES.TrackElement.TrackElementGetTrackTypeMethodInfo
    ResolveMultiFileSourceMethod "getTrackTypes" o = GES.TimelineElement.TimelineElementGetTrackTypesMethodInfo
    ResolveMultiFileSourceMethod "getUint" o = GES.MetaContainer.MetaContainerGetUintMethodInfo
    ResolveMultiFileSourceMethod "getUint64" o = GES.MetaContainer.MetaContainerGetUint64MethodInfo
    ResolveMultiFileSourceMethod "setActive" o = GES.TrackElement.TrackElementSetActiveMethodInfo
    ResolveMultiFileSourceMethod "setAsset" o = GES.Extractable.ExtractableSetAssetMethodInfo
    ResolveMultiFileSourceMethod "setAutoClampControlSources" o = GES.TrackElement.TrackElementSetAutoClampControlSourcesMethodInfo
    ResolveMultiFileSourceMethod "setBoolean" o = GES.MetaContainer.MetaContainerSetBooleanMethodInfo
    ResolveMultiFileSourceMethod "setChildProperty" o = GES.TimelineElement.TimelineElementSetChildPropertyMethodInfo
    ResolveMultiFileSourceMethod "setChildPropertyByPspec" o = GES.TimelineElement.TimelineElementSetChildPropertyByPspecMethodInfo
    ResolveMultiFileSourceMethod "setChildPropertyFull" o = GES.TimelineElement.TimelineElementSetChildPropertyFullMethodInfo
    ResolveMultiFileSourceMethod "setControlSource" o = GES.TrackElement.TrackElementSetControlSourceMethodInfo
    ResolveMultiFileSourceMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveMultiFileSourceMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveMultiFileSourceMethod "setDate" o = GES.MetaContainer.MetaContainerSetDateMethodInfo
    ResolveMultiFileSourceMethod "setDateTime" o = GES.MetaContainer.MetaContainerSetDateTimeMethodInfo
    ResolveMultiFileSourceMethod "setDouble" o = GES.MetaContainer.MetaContainerSetDoubleMethodInfo
    ResolveMultiFileSourceMethod "setDuration" o = GES.TimelineElement.TimelineElementSetDurationMethodInfo
    ResolveMultiFileSourceMethod "setFloat" o = GES.MetaContainer.MetaContainerSetFloatMethodInfo
    ResolveMultiFileSourceMethod "setHasInternalSource" o = GES.TrackElement.TrackElementSetHasInternalSourceMethodInfo
    ResolveMultiFileSourceMethod "setInpoint" o = GES.TimelineElement.TimelineElementSetInpointMethodInfo
    ResolveMultiFileSourceMethod "setInt" o = GES.MetaContainer.MetaContainerSetIntMethodInfo
    ResolveMultiFileSourceMethod "setInt64" o = GES.MetaContainer.MetaContainerSetInt64MethodInfo
    ResolveMultiFileSourceMethod "setMarkerList" o = GES.MetaContainer.MetaContainerSetMarkerListMethodInfo
    ResolveMultiFileSourceMethod "setMaxDuration" o = GES.TimelineElement.TimelineElementSetMaxDurationMethodInfo
    ResolveMultiFileSourceMethod "setMeta" o = GES.MetaContainer.MetaContainerSetMetaMethodInfo
    ResolveMultiFileSourceMethod "setName" o = GES.TimelineElement.TimelineElementSetNameMethodInfo
    ResolveMultiFileSourceMethod "setParent" o = GES.TimelineElement.TimelineElementSetParentMethodInfo
    ResolveMultiFileSourceMethod "setPriority" o = GES.TimelineElement.TimelineElementSetPriorityMethodInfo
    ResolveMultiFileSourceMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveMultiFileSourceMethod "setStart" o = GES.TimelineElement.TimelineElementSetStartMethodInfo
    ResolveMultiFileSourceMethod "setString" o = GES.MetaContainer.MetaContainerSetStringMethodInfo
    ResolveMultiFileSourceMethod "setTimeline" o = GES.TimelineElement.TimelineElementSetTimelineMethodInfo
    ResolveMultiFileSourceMethod "setTrackType" o = GES.TrackElement.TrackElementSetTrackTypeMethodInfo
    ResolveMultiFileSourceMethod "setUint" o = GES.MetaContainer.MetaContainerSetUintMethodInfo
    ResolveMultiFileSourceMethod "setUint64" o = GES.MetaContainer.MetaContainerSetUint64MethodInfo
    ResolveMultiFileSourceMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveMultiFileSourceMethod t MultiFileSource, O.OverloadedMethod info MultiFileSource p) => OL.IsLabel t (MultiFileSource -> 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 ~ ResolveMultiFileSourceMethod t MultiFileSource, O.OverloadedMethod info MultiFileSource p, R.HasField t MultiFileSource p) => R.HasField t MultiFileSource p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveMultiFileSourceMethod t MultiFileSource, O.OverloadedMethodInfo info MultiFileSource) => OL.IsLabel t (O.MethodProxy info MultiFileSource) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif

-- VVV Prop "uri"
   -- Type: TBasicType TUTF8
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@uri@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' multiFileSource #uri
-- @
getMultiFileSourceUri :: (MonadIO m, IsMultiFileSource o) => o -> m (Maybe T.Text)
getMultiFileSourceUri :: forall (m :: * -> *) o.
(MonadIO m, IsMultiFileSource o) =>
o -> m (Maybe Text)
getMultiFileSourceUri o
obj = IO (Maybe Text) -> m (Maybe Text)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ o -> String -> IO (Maybe Text)
forall a. GObject a => a -> String -> IO (Maybe Text)
B.Properties.getObjectPropertyString o
obj String
"uri"

-- | Construct a `GValueConstruct` with valid value for the “@uri@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructMultiFileSourceUri :: (IsMultiFileSource o, MIO.MonadIO m) => T.Text -> m (GValueConstruct o)
constructMultiFileSourceUri :: forall o (m :: * -> *).
(IsMultiFileSource o, MonadIO m) =>
Text -> m (GValueConstruct o)
constructMultiFileSourceUri Text
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a. IO a -> IO a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Maybe Text -> IO (GValueConstruct o)
forall o. String -> Maybe Text -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyString String
"uri" (Text -> Maybe Text
forall a. a -> Maybe a
P.Just Text
val)

#if defined(ENABLE_OVERLOADING)
data MultiFileSourceUriPropertyInfo
instance AttrInfo MultiFileSourceUriPropertyInfo where
    type AttrAllowedOps MultiFileSourceUriPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint MultiFileSourceUriPropertyInfo = IsMultiFileSource
    type AttrSetTypeConstraint MultiFileSourceUriPropertyInfo = (~) T.Text
    type AttrTransferTypeConstraint MultiFileSourceUriPropertyInfo = (~) T.Text
    type AttrTransferType MultiFileSourceUriPropertyInfo = T.Text
    type AttrGetType MultiFileSourceUriPropertyInfo = (Maybe T.Text)
    type AttrLabel MultiFileSourceUriPropertyInfo = "uri"
    type AttrOrigin MultiFileSourceUriPropertyInfo = MultiFileSource
    attrGet = getMultiFileSourceUri
    attrSet = undefined
    attrTransfer _ v = do
        return v
    attrConstruct = constructMultiFileSourceUri
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GES.Objects.MultiFileSource.uri"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-ges-1.0.2/docs/GI-GES-Objects-MultiFileSource.html#g:attr:uri"
        })
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList MultiFileSource
type instance O.AttributeList MultiFileSource = MultiFileSourceAttributeList
type MultiFileSourceAttributeList = ('[ '("active", GES.TrackElement.TrackElementActivePropertyInfo), '("autoClampControlSources", GES.TrackElement.TrackElementAutoClampControlSourcesPropertyInfo), '("duration", GES.TimelineElement.TimelineElementDurationPropertyInfo), '("hasInternalSource", GES.TrackElement.TrackElementHasInternalSourcePropertyInfo), '("inPoint", GES.TimelineElement.TimelineElementInPointPropertyInfo), '("maxDuration", GES.TimelineElement.TimelineElementMaxDurationPropertyInfo), '("name", GES.TimelineElement.TimelineElementNamePropertyInfo), '("parent", GES.TimelineElement.TimelineElementParentPropertyInfo), '("priority", GES.TimelineElement.TimelineElementPriorityPropertyInfo), '("serialize", GES.TimelineElement.TimelineElementSerializePropertyInfo), '("start", GES.TimelineElement.TimelineElementStartPropertyInfo), '("timeline", GES.TimelineElement.TimelineElementTimelinePropertyInfo), '("track", GES.TrackElement.TrackElementTrackPropertyInfo), '("trackType", GES.TrackElement.TrackElementTrackTypePropertyInfo), '("uri", MultiFileSourceUriPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
multiFileSourceUri :: AttrLabelProxy "uri"
multiFileSourceUri = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList MultiFileSource = MultiFileSourceSignalList
type MultiFileSourceSignalList = ('[ '("childPropertyAdded", GES.TimelineElement.TimelineElementChildPropertyAddedSignalInfo), '("childPropertyRemoved", GES.TimelineElement.TimelineElementChildPropertyRemovedSignalInfo), '("controlBindingAdded", GES.TrackElement.TrackElementControlBindingAddedSignalInfo), '("controlBindingRemoved", GES.TrackElement.TrackElementControlBindingRemovedSignalInfo), '("deepNotify", GES.TimelineElement.TimelineElementDeepNotifySignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("notifyMeta", GES.MetaContainer.MetaContainerNotifyMetaSignalInfo)] :: [(Symbol, *)])

#endif

-- method MultiFileSource::new
-- method type : Constructor
-- Args: [ Arg
--           { argCName = "uri"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "GES" , name = "MultiFileSource" })
-- throws : False
-- Skip return : False

foreign import ccall "ges_multi_file_source_new" ges_multi_file_source_new :: 
    CString ->                              -- uri : TBasicType TUTF8
    IO (Ptr MultiFileSource)

-- | /No description available in the introspection data./
multiFileSourceNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    T.Text
    -> m MultiFileSource
multiFileSourceNew :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> m MultiFileSource
multiFileSourceNew Text
uri = IO MultiFileSource -> m MultiFileSource
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO MultiFileSource -> m MultiFileSource)
-> IO MultiFileSource -> m MultiFileSource
forall a b. (a -> b) -> a -> b
$ do
    CString
uri' <- Text -> IO CString
textToCString Text
uri
    Ptr MultiFileSource
result <- CString -> IO (Ptr MultiFileSource)
ges_multi_file_source_new CString
uri'
    Text -> Ptr MultiFileSource -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"multiFileSourceNew" Ptr MultiFileSource
result
    MultiFileSource
result' <- ((ManagedPtr MultiFileSource -> MultiFileSource)
-> Ptr MultiFileSource -> IO MultiFileSource
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr MultiFileSource -> MultiFileSource
MultiFileSource) Ptr MultiFileSource
result
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
uri'
    MultiFileSource -> IO MultiFileSource
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return MultiFileSource
result'

#if defined(ENABLE_OVERLOADING)
#endif