{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- This interface is implemented by elements that are able to do XMP serialization. Examples for
-- such elements are @/jifmux/@ and @/qtmux/@.
-- 
-- Applications can use this interface to configure which XMP schemas should be used when serializing
-- tags into XMP. Schemas are represented by their names, a full list of the supported schemas can be
-- obtained from 'GI.GstTag.Functions.tagXmpListSchemas'. By default, all schemas are used.

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

module GI.GstTag.Interfaces.TagXmpWriter
    ( 

-- * Exported types
    TagXmpWriter(..)                        ,
    IsTagXmpWriter                          ,
    toTagXmpWriter                          ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [abortState]("GI.Gst.Objects.Element#g:method:abortState"), [addAllSchemas]("GI.GstTag.Interfaces.TagXmpWriter#g:method:addAllSchemas"), [addControlBinding]("GI.Gst.Objects.Object#g:method:addControlBinding"), [addPad]("GI.Gst.Objects.Element#g:method:addPad"), [addPropertyDeepNotifyWatch]("GI.Gst.Objects.Element#g:method:addPropertyDeepNotifyWatch"), [addPropertyNotifyWatch]("GI.Gst.Objects.Element#g:method:addPropertyNotifyWatch"), [addSchema]("GI.GstTag.Interfaces.TagXmpWriter#g:method:addSchema"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [callAsync]("GI.Gst.Objects.Element#g:method:callAsync"), [changeState]("GI.Gst.Objects.Element#g:method:changeState"), [continueState]("GI.Gst.Objects.Element#g:method:continueState"), [createAllPads]("GI.Gst.Objects.Element#g:method:createAllPads"), [defaultError]("GI.Gst.Objects.Object#g:method:defaultError"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [foreachPad]("GI.Gst.Objects.Element#g:method:foreachPad"), [foreachSinkPad]("GI.Gst.Objects.Element#g:method:foreachSinkPad"), [foreachSrcPad]("GI.Gst.Objects.Element#g:method:foreachSrcPad"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [hasActiveControlBindings]("GI.Gst.Objects.Object#g:method:hasActiveControlBindings"), [hasAncestor]("GI.Gst.Objects.Object#g:method:hasAncestor"), [hasAsAncestor]("GI.Gst.Objects.Object#g:method:hasAsAncestor"), [hasAsParent]("GI.Gst.Objects.Object#g:method:hasAsParent"), [hasSchema]("GI.GstTag.Interfaces.TagXmpWriter#g:method:hasSchema"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [isLockedState]("GI.Gst.Objects.Element#g:method:isLockedState"), [iteratePads]("GI.Gst.Objects.Element#g:method:iteratePads"), [iterateSinkPads]("GI.Gst.Objects.Element#g:method:iterateSinkPads"), [iterateSrcPads]("GI.Gst.Objects.Element#g:method:iterateSrcPads"), [link]("GI.Gst.Objects.Element#g:method:link"), [linkFiltered]("GI.Gst.Objects.Element#g:method:linkFiltered"), [linkPads]("GI.Gst.Objects.Element#g:method:linkPads"), [linkPadsFiltered]("GI.Gst.Objects.Element#g:method:linkPadsFiltered"), [linkPadsFull]("GI.Gst.Objects.Element#g:method:linkPadsFull"), [lostState]("GI.Gst.Objects.Element#g:method:lostState"), [messageFull]("GI.Gst.Objects.Element#g:method:messageFull"), [messageFullWithDetails]("GI.Gst.Objects.Element#g:method:messageFullWithDetails"), [noMorePads]("GI.Gst.Objects.Element#g:method:noMorePads"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [postMessage]("GI.Gst.Objects.Element#g:method:postMessage"), [provideClock]("GI.Gst.Objects.Element#g:method:provideClock"), [query]("GI.Gst.Objects.Element#g:method:query"), [queryConvert]("GI.Gst.Objects.Element#g:method:queryConvert"), [queryDuration]("GI.Gst.Objects.Element#g:method:queryDuration"), [queryPosition]("GI.Gst.Objects.Element#g:method:queryPosition"), [ref]("GI.Gst.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [releaseRequestPad]("GI.Gst.Objects.Element#g:method:releaseRequestPad"), [removeAllSchemas]("GI.GstTag.Interfaces.TagXmpWriter#g:method:removeAllSchemas"), [removeControlBinding]("GI.Gst.Objects.Object#g:method:removeControlBinding"), [removePad]("GI.Gst.Objects.Element#g:method:removePad"), [removePropertyNotifyWatch]("GI.Gst.Objects.Element#g:method:removePropertyNotifyWatch"), [removeSchema]("GI.GstTag.Interfaces.TagXmpWriter#g:method:removeSchema"), [requestPad]("GI.Gst.Objects.Element#g:method:requestPad"), [requestPadSimple]("GI.Gst.Objects.Element#g:method:requestPadSimple"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [seek]("GI.Gst.Objects.Element#g:method:seek"), [seekSimple]("GI.Gst.Objects.Element#g:method:seekSimple"), [sendEvent]("GI.Gst.Objects.Element#g:method:sendEvent"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [suggestNextSync]("GI.Gst.Objects.Object#g:method:suggestNextSync"), [syncStateWithParent]("GI.Gst.Objects.Element#g:method:syncStateWithParent"), [syncValues]("GI.Gst.Objects.Object#g:method:syncValues"), [tagListToXmpBuffer]("GI.GstTag.Interfaces.TagXmpWriter#g:method:tagListToXmpBuffer"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [unlink]("GI.Gst.Objects.Element#g:method:unlink"), [unlinkPads]("GI.Gst.Objects.Element#g:method:unlinkPads"), [unparent]("GI.Gst.Objects.Object#g:method:unparent"), [unref]("GI.Gst.Objects.Object#g:method:unref"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getBaseTime]("GI.Gst.Objects.Element#g:method:getBaseTime"), [getBus]("GI.Gst.Objects.Element#g:method:getBus"), [getClock]("GI.Gst.Objects.Element#g:method:getClock"), [getCompatiblePad]("GI.Gst.Objects.Element#g:method:getCompatiblePad"), [getCompatiblePadTemplate]("GI.Gst.Objects.Element#g:method:getCompatiblePadTemplate"), [getContext]("GI.Gst.Objects.Element#g:method:getContext"), [getContextUnlocked]("GI.Gst.Objects.Element#g:method:getContextUnlocked"), [getContexts]("GI.Gst.Objects.Element#g:method:getContexts"), [getControlBinding]("GI.Gst.Objects.Object#g:method:getControlBinding"), [getControlRate]("GI.Gst.Objects.Object#g:method:getControlRate"), [getCurrentClockTime]("GI.Gst.Objects.Element#g:method:getCurrentClockTime"), [getCurrentRunningTime]("GI.Gst.Objects.Element#g:method:getCurrentRunningTime"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getFactory]("GI.Gst.Objects.Element#g:method:getFactory"), [getGValueArray]("GI.Gst.Objects.Object#g:method:getGValueArray"), [getMetadata]("GI.Gst.Objects.Element#g:method:getMetadata"), [getName]("GI.Gst.Objects.Object#g:method:getName"), [getPadTemplate]("GI.Gst.Objects.Element#g:method:getPadTemplate"), [getPadTemplateList]("GI.Gst.Objects.Element#g:method:getPadTemplateList"), [getParent]("GI.Gst.Objects.Object#g:method:getParent"), [getPathString]("GI.Gst.Objects.Object#g:method:getPathString"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getRequestPad]("GI.Gst.Objects.Element#g:method:getRequestPad"), [getStartTime]("GI.Gst.Objects.Element#g:method:getStartTime"), [getState]("GI.Gst.Objects.Element#g:method:getState"), [getStaticPad]("GI.Gst.Objects.Element#g:method:getStaticPad"), [getValue]("GI.Gst.Objects.Object#g:method:getValue").
-- 
-- ==== Setters
-- [setBaseTime]("GI.Gst.Objects.Element#g:method:setBaseTime"), [setBus]("GI.Gst.Objects.Element#g:method:setBus"), [setClock]("GI.Gst.Objects.Element#g:method:setClock"), [setContext]("GI.Gst.Objects.Element#g:method:setContext"), [setControlBindingDisabled]("GI.Gst.Objects.Object#g:method:setControlBindingDisabled"), [setControlBindingsDisabled]("GI.Gst.Objects.Object#g:method:setControlBindingsDisabled"), [setControlRate]("GI.Gst.Objects.Object#g:method:setControlRate"), [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setLockedState]("GI.Gst.Objects.Element#g:method:setLockedState"), [setName]("GI.Gst.Objects.Object#g:method:setName"), [setParent]("GI.Gst.Objects.Object#g:method:setParent"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setStartTime]("GI.Gst.Objects.Element#g:method:setStartTime"), [setState]("GI.Gst.Objects.Element#g:method:setState").

#if defined(ENABLE_OVERLOADING)
    ResolveTagXmpWriterMethod               ,
#endif

-- ** addAllSchemas #method:addAllSchemas#

#if defined(ENABLE_OVERLOADING)
    TagXmpWriterAddAllSchemasMethodInfo     ,
#endif
    tagXmpWriterAddAllSchemas               ,


-- ** addSchema #method:addSchema#

#if defined(ENABLE_OVERLOADING)
    TagXmpWriterAddSchemaMethodInfo         ,
#endif
    tagXmpWriterAddSchema                   ,


-- ** hasSchema #method:hasSchema#

#if defined(ENABLE_OVERLOADING)
    TagXmpWriterHasSchemaMethodInfo         ,
#endif
    tagXmpWriterHasSchema                   ,


-- ** removeAllSchemas #method:removeAllSchemas#

#if defined(ENABLE_OVERLOADING)
    TagXmpWriterRemoveAllSchemasMethodInfo  ,
#endif
    tagXmpWriterRemoveAllSchemas            ,


-- ** removeSchema #method:removeSchema#

#if defined(ENABLE_OVERLOADING)
    TagXmpWriterRemoveSchemaMethodInfo      ,
#endif
    tagXmpWriterRemoveSchema                ,


-- ** tagListToXmpBuffer #method:tagListToXmpBuffer#

#if defined(ENABLE_OVERLOADING)
    TagXmpWriterTagListToXmpBufferMethodInfo,
#endif
    tagXmpWriterTagListToXmpBuffer          ,




    ) 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.Kind as DK
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 qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gst.Objects.Element as Gst.Element
import qualified GI.Gst.Objects.Object as Gst.Object
import qualified GI.Gst.Structs.Buffer as Gst.Buffer
import qualified GI.Gst.Structs.TagList as Gst.TagList

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

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

foreign import ccall "gst_tag_xmp_writer_get_type"
    c_gst_tag_xmp_writer_get_type :: IO B.Types.GType

instance B.Types.TypedObject TagXmpWriter where
    glibType :: IO GType
glibType = IO GType
c_gst_tag_xmp_writer_get_type

instance B.Types.GObject TagXmpWriter

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

instance O.HasParentTypes TagXmpWriter
type instance O.ParentTypes TagXmpWriter = '[Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]

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

-- | Convert 'TagXmpWriter' 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 TagXmpWriter) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_gst_tag_xmp_writer_get_type
    gvalueSet_ :: Ptr GValue -> Maybe TagXmpWriter -> IO ()
gvalueSet_ Ptr GValue
gv Maybe TagXmpWriter
P.Nothing = Ptr GValue -> Ptr TagXmpWriter -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr TagXmpWriter
forall a. Ptr a
FP.nullPtr :: FP.Ptr TagXmpWriter)
    gvalueSet_ Ptr GValue
gv (P.Just TagXmpWriter
obj) = TagXmpWriter -> (Ptr TagXmpWriter -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr TagXmpWriter
obj (Ptr GValue -> Ptr TagXmpWriter -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe TagXmpWriter)
gvalueGet_ Ptr GValue
gv = do
        Ptr TagXmpWriter
ptr <- Ptr GValue -> IO (Ptr TagXmpWriter)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr TagXmpWriter)
        if Ptr TagXmpWriter
ptr Ptr TagXmpWriter -> Ptr TagXmpWriter -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr TagXmpWriter
forall a. Ptr a
FP.nullPtr
        then TagXmpWriter -> Maybe TagXmpWriter
forall a. a -> Maybe a
P.Just (TagXmpWriter -> Maybe TagXmpWriter)
-> IO TagXmpWriter -> IO (Maybe TagXmpWriter)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr TagXmpWriter -> TagXmpWriter)
-> Ptr TagXmpWriter -> IO TagXmpWriter
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr TagXmpWriter -> TagXmpWriter
TagXmpWriter Ptr TagXmpWriter
ptr
        else Maybe TagXmpWriter -> IO (Maybe TagXmpWriter)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe TagXmpWriter
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList TagXmpWriter
type instance O.AttributeList TagXmpWriter = TagXmpWriterAttributeList
type TagXmpWriterAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo)] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveTagXmpWriterMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveTagXmpWriterMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
    ResolveTagXmpWriterMethod "addAllSchemas" o = TagXmpWriterAddAllSchemasMethodInfo
    ResolveTagXmpWriterMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
    ResolveTagXmpWriterMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
    ResolveTagXmpWriterMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
    ResolveTagXmpWriterMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
    ResolveTagXmpWriterMethod "addSchema" o = TagXmpWriterAddSchemaMethodInfo
    ResolveTagXmpWriterMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveTagXmpWriterMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveTagXmpWriterMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
    ResolveTagXmpWriterMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
    ResolveTagXmpWriterMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
    ResolveTagXmpWriterMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
    ResolveTagXmpWriterMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
    ResolveTagXmpWriterMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveTagXmpWriterMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
    ResolveTagXmpWriterMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
    ResolveTagXmpWriterMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
    ResolveTagXmpWriterMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveTagXmpWriterMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveTagXmpWriterMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
    ResolveTagXmpWriterMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
    ResolveTagXmpWriterMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
    ResolveTagXmpWriterMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
    ResolveTagXmpWriterMethod "hasSchema" o = TagXmpWriterHasSchemaMethodInfo
    ResolveTagXmpWriterMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveTagXmpWriterMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
    ResolveTagXmpWriterMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
    ResolveTagXmpWriterMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
    ResolveTagXmpWriterMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
    ResolveTagXmpWriterMethod "link" o = Gst.Element.ElementLinkMethodInfo
    ResolveTagXmpWriterMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
    ResolveTagXmpWriterMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
    ResolveTagXmpWriterMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
    ResolveTagXmpWriterMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
    ResolveTagXmpWriterMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
    ResolveTagXmpWriterMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
    ResolveTagXmpWriterMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
    ResolveTagXmpWriterMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
    ResolveTagXmpWriterMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveTagXmpWriterMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveTagXmpWriterMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
    ResolveTagXmpWriterMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
    ResolveTagXmpWriterMethod "query" o = Gst.Element.ElementQueryMethodInfo
    ResolveTagXmpWriterMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
    ResolveTagXmpWriterMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
    ResolveTagXmpWriterMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
    ResolveTagXmpWriterMethod "ref" o = Gst.Object.ObjectRefMethodInfo
    ResolveTagXmpWriterMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveTagXmpWriterMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
    ResolveTagXmpWriterMethod "removeAllSchemas" o = TagXmpWriterRemoveAllSchemasMethodInfo
    ResolveTagXmpWriterMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
    ResolveTagXmpWriterMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
    ResolveTagXmpWriterMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
    ResolveTagXmpWriterMethod "removeSchema" o = TagXmpWriterRemoveSchemaMethodInfo
    ResolveTagXmpWriterMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
    ResolveTagXmpWriterMethod "requestPadSimple" o = Gst.Element.ElementRequestPadSimpleMethodInfo
    ResolveTagXmpWriterMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveTagXmpWriterMethod "seek" o = Gst.Element.ElementSeekMethodInfo
    ResolveTagXmpWriterMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
    ResolveTagXmpWriterMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
    ResolveTagXmpWriterMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveTagXmpWriterMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveTagXmpWriterMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
    ResolveTagXmpWriterMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
    ResolveTagXmpWriterMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
    ResolveTagXmpWriterMethod "tagListToXmpBuffer" o = TagXmpWriterTagListToXmpBufferMethodInfo
    ResolveTagXmpWriterMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveTagXmpWriterMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
    ResolveTagXmpWriterMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
    ResolveTagXmpWriterMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
    ResolveTagXmpWriterMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
    ResolveTagXmpWriterMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveTagXmpWriterMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
    ResolveTagXmpWriterMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
    ResolveTagXmpWriterMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
    ResolveTagXmpWriterMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
    ResolveTagXmpWriterMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
    ResolveTagXmpWriterMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
    ResolveTagXmpWriterMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
    ResolveTagXmpWriterMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
    ResolveTagXmpWriterMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
    ResolveTagXmpWriterMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
    ResolveTagXmpWriterMethod "getCurrentClockTime" o = Gst.Element.ElementGetCurrentClockTimeMethodInfo
    ResolveTagXmpWriterMethod "getCurrentRunningTime" o = Gst.Element.ElementGetCurrentRunningTimeMethodInfo
    ResolveTagXmpWriterMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveTagXmpWriterMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
    ResolveTagXmpWriterMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
    ResolveTagXmpWriterMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
    ResolveTagXmpWriterMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
    ResolveTagXmpWriterMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
    ResolveTagXmpWriterMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
    ResolveTagXmpWriterMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
    ResolveTagXmpWriterMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
    ResolveTagXmpWriterMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveTagXmpWriterMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveTagXmpWriterMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
    ResolveTagXmpWriterMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
    ResolveTagXmpWriterMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
    ResolveTagXmpWriterMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
    ResolveTagXmpWriterMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
    ResolveTagXmpWriterMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
    ResolveTagXmpWriterMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
    ResolveTagXmpWriterMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
    ResolveTagXmpWriterMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
    ResolveTagXmpWriterMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
    ResolveTagXmpWriterMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
    ResolveTagXmpWriterMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
    ResolveTagXmpWriterMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveTagXmpWriterMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveTagXmpWriterMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
    ResolveTagXmpWriterMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
    ResolveTagXmpWriterMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
    ResolveTagXmpWriterMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveTagXmpWriterMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
    ResolveTagXmpWriterMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
    ResolveTagXmpWriterMethod l o = O.MethodResolutionFailed l o

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

#endif

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

#endif

-- method TagXmpWriter::add_all_schemas
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "config"
--           , argType =
--               TInterface Name { namespace = "GstTag" , name = "TagXmpWriter" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstTagXmpWriter" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_tag_xmp_writer_add_all_schemas" gst_tag_xmp_writer_add_all_schemas :: 
    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})
    IO ()

-- | Adds all available XMP schemas to the configuration. Meaning that
-- all will be used.
tagXmpWriterAddAllSchemas ::
    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>
    a
    -- ^ /@config@/: a t'GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter'
    -> m ()
tagXmpWriterAddAllSchemas :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsTagXmpWriter a) =>
a -> m ()
tagXmpWriterAddAllSchemas a
config = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr TagXmpWriter
config' <- a -> IO (Ptr TagXmpWriter)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
config
    Ptr TagXmpWriter -> IO ()
gst_tag_xmp_writer_add_all_schemas Ptr TagXmpWriter
config'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
config
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data TagXmpWriterAddAllSchemasMethodInfo
instance (signature ~ (m ()), MonadIO m, IsTagXmpWriter a) => O.OverloadedMethod TagXmpWriterAddAllSchemasMethodInfo a signature where
    overloadedMethod = tagXmpWriterAddAllSchemas

instance O.OverloadedMethodInfo TagXmpWriterAddAllSchemasMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstTag.Interfaces.TagXmpWriter.tagXmpWriterAddAllSchemas",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gsttag-1.0.27/docs/GI-GstTag-Interfaces-TagXmpWriter.html#v:tagXmpWriterAddAllSchemas"
        })


#endif

-- method TagXmpWriter::add_schema
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "config"
--           , argType =
--               TInterface Name { namespace = "GstTag" , name = "TagXmpWriter" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstTagXmpWriter" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "schema"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the schema to be added"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_tag_xmp_writer_add_schema" gst_tag_xmp_writer_add_schema :: 
    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})
    CString ->                              -- schema : TBasicType TUTF8
    IO ()

-- | Adds /@schema@/ to the list schemas
tagXmpWriterAddSchema ::
    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>
    a
    -- ^ /@config@/: a t'GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter'
    -> T.Text
    -- ^ /@schema@/: the schema to be added
    -> m ()
tagXmpWriterAddSchema :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsTagXmpWriter a) =>
a -> Text -> m ()
tagXmpWriterAddSchema a
config Text
schema = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr TagXmpWriter
config' <- a -> IO (Ptr TagXmpWriter)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
config
    CString
schema' <- Text -> IO CString
textToCString Text
schema
    Ptr TagXmpWriter -> CString -> IO ()
gst_tag_xmp_writer_add_schema Ptr TagXmpWriter
config' CString
schema'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
config
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
schema'
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data TagXmpWriterAddSchemaMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsTagXmpWriter a) => O.OverloadedMethod TagXmpWriterAddSchemaMethodInfo a signature where
    overloadedMethod = tagXmpWriterAddSchema

instance O.OverloadedMethodInfo TagXmpWriterAddSchemaMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstTag.Interfaces.TagXmpWriter.tagXmpWriterAddSchema",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gsttag-1.0.27/docs/GI-GstTag-Interfaces-TagXmpWriter.html#v:tagXmpWriterAddSchema"
        })


#endif

-- method TagXmpWriter::has_schema
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "config"
--           , argType =
--               TInterface Name { namespace = "GstTag" , name = "TagXmpWriter" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstTagXmpWriter" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "schema"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the schema to test" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gst_tag_xmp_writer_has_schema" gst_tag_xmp_writer_has_schema :: 
    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})
    CString ->                              -- schema : TBasicType TUTF8
    IO CInt

-- | Checks if /@schema@/ is going to be used
tagXmpWriterHasSchema ::
    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>
    a
    -- ^ /@config@/: a t'GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter'
    -> T.Text
    -- ^ /@schema@/: the schema to test
    -> m Bool
    -- ^ __Returns:__ 'P.True' if it is going to be used
tagXmpWriterHasSchema :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsTagXmpWriter a) =>
a -> Text -> m Bool
tagXmpWriterHasSchema a
config Text
schema = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr TagXmpWriter
config' <- a -> IO (Ptr TagXmpWriter)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
config
    CString
schema' <- Text -> IO CString
textToCString Text
schema
    CInt
result <- Ptr TagXmpWriter -> CString -> IO CInt
gst_tag_xmp_writer_has_schema Ptr TagXmpWriter
config' CString
schema'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
config
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
schema'
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data TagXmpWriterHasSchemaMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m, IsTagXmpWriter a) => O.OverloadedMethod TagXmpWriterHasSchemaMethodInfo a signature where
    overloadedMethod = tagXmpWriterHasSchema

instance O.OverloadedMethodInfo TagXmpWriterHasSchemaMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstTag.Interfaces.TagXmpWriter.tagXmpWriterHasSchema",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gsttag-1.0.27/docs/GI-GstTag-Interfaces-TagXmpWriter.html#v:tagXmpWriterHasSchema"
        })


#endif

-- method TagXmpWriter::remove_all_schemas
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "config"
--           , argType =
--               TInterface Name { namespace = "GstTag" , name = "TagXmpWriter" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstTagXmpWriter" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_tag_xmp_writer_remove_all_schemas" gst_tag_xmp_writer_remove_all_schemas :: 
    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})
    IO ()

-- | Removes all schemas from the list of schemas to use. Meaning that no
-- XMP will be generated.
tagXmpWriterRemoveAllSchemas ::
    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>
    a
    -- ^ /@config@/: a t'GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter'
    -> m ()
tagXmpWriterRemoveAllSchemas :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsTagXmpWriter a) =>
a -> m ()
tagXmpWriterRemoveAllSchemas a
config = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr TagXmpWriter
config' <- a -> IO (Ptr TagXmpWriter)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
config
    Ptr TagXmpWriter -> IO ()
gst_tag_xmp_writer_remove_all_schemas Ptr TagXmpWriter
config'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
config
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data TagXmpWriterRemoveAllSchemasMethodInfo
instance (signature ~ (m ()), MonadIO m, IsTagXmpWriter a) => O.OverloadedMethod TagXmpWriterRemoveAllSchemasMethodInfo a signature where
    overloadedMethod = tagXmpWriterRemoveAllSchemas

instance O.OverloadedMethodInfo TagXmpWriterRemoveAllSchemasMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstTag.Interfaces.TagXmpWriter.tagXmpWriterRemoveAllSchemas",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gsttag-1.0.27/docs/GI-GstTag-Interfaces-TagXmpWriter.html#v:tagXmpWriterRemoveAllSchemas"
        })


#endif

-- method TagXmpWriter::remove_schema
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "config"
--           , argType =
--               TInterface Name { namespace = "GstTag" , name = "TagXmpWriter" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstTagXmpWriter" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "schema"
--           , argType = TBasicType TUTF8
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the schema to remove"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_tag_xmp_writer_remove_schema" gst_tag_xmp_writer_remove_schema :: 
    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})
    CString ->                              -- schema : TBasicType TUTF8
    IO ()

-- | Removes a schema from the list of schemas to use. Nothing is done if
-- the schema wasn\'t in the list
tagXmpWriterRemoveSchema ::
    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>
    a
    -- ^ /@config@/: a t'GI.GstTag.Interfaces.TagXmpWriter.TagXmpWriter'
    -> T.Text
    -- ^ /@schema@/: the schema to remove
    -> m ()
tagXmpWriterRemoveSchema :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsTagXmpWriter a) =>
a -> Text -> m ()
tagXmpWriterRemoveSchema a
config Text
schema = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr TagXmpWriter
config' <- a -> IO (Ptr TagXmpWriter)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
config
    CString
schema' <- Text -> IO CString
textToCString Text
schema
    Ptr TagXmpWriter -> CString -> IO ()
gst_tag_xmp_writer_remove_schema Ptr TagXmpWriter
config' CString
schema'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
config
    CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
schema'
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data TagXmpWriterRemoveSchemaMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsTagXmpWriter a) => O.OverloadedMethod TagXmpWriterRemoveSchemaMethodInfo a signature where
    overloadedMethod = tagXmpWriterRemoveSchema

instance O.OverloadedMethodInfo TagXmpWriterRemoveSchemaMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstTag.Interfaces.TagXmpWriter.tagXmpWriterRemoveSchema",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gsttag-1.0.27/docs/GI-GstTag-Interfaces-TagXmpWriter.html#v:tagXmpWriterRemoveSchema"
        })


#endif

-- method TagXmpWriter::tag_list_to_xmp_buffer
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "config"
--           , argType =
--               TInterface Name { namespace = "GstTag" , name = "TagXmpWriter" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "taglist"
--           , argType =
--               TInterface Name { namespace = "Gst" , name = "TagList" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "read_only"
--           , argType = TBasicType TBoolean
--           , 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 = "Gst" , name = "Buffer" })
-- throws : False
-- Skip return : False

foreign import ccall "gst_tag_xmp_writer_tag_list_to_xmp_buffer" gst_tag_xmp_writer_tag_list_to_xmp_buffer :: 
    Ptr TagXmpWriter ->                     -- config : TInterface (Name {namespace = "GstTag", name = "TagXmpWriter"})
    Ptr Gst.TagList.TagList ->              -- taglist : TInterface (Name {namespace = "Gst", name = "TagList"})
    CInt ->                                 -- read_only : TBasicType TBoolean
    IO (Ptr Gst.Buffer.Buffer)

-- | /No description available in the introspection data./
tagXmpWriterTagListToXmpBuffer ::
    (B.CallStack.HasCallStack, MonadIO m, IsTagXmpWriter a) =>
    a
    -> Gst.TagList.TagList
    -> Bool
    -> m Gst.Buffer.Buffer
tagXmpWriterTagListToXmpBuffer :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsTagXmpWriter a) =>
a -> TagList -> Bool -> m Buffer
tagXmpWriterTagListToXmpBuffer a
config TagList
taglist Bool
readOnly = IO Buffer -> m Buffer
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Buffer -> m Buffer) -> IO Buffer -> m Buffer
forall a b. (a -> b) -> a -> b
$ do
    Ptr TagXmpWriter
config' <- a -> IO (Ptr TagXmpWriter)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
config
    Ptr TagList
taglist' <- TagList -> IO (Ptr TagList)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr TagList
taglist
    let readOnly' :: CInt
readOnly' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
P.fromEnum) Bool
readOnly
    Ptr Buffer
result <- Ptr TagXmpWriter -> Ptr TagList -> CInt -> IO (Ptr Buffer)
gst_tag_xmp_writer_tag_list_to_xmp_buffer Ptr TagXmpWriter
config' Ptr TagList
taglist' CInt
readOnly'
    Text -> Ptr Buffer -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"tagXmpWriterTagListToXmpBuffer" Ptr Buffer
result
    Buffer
result' <- ((ManagedPtr Buffer -> Buffer) -> Ptr Buffer -> IO Buffer
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr Buffer -> Buffer
Gst.Buffer.Buffer) Ptr Buffer
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
config
    TagList -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr TagList
taglist
    Buffer -> IO Buffer
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Buffer
result'

#if defined(ENABLE_OVERLOADING)
data TagXmpWriterTagListToXmpBufferMethodInfo
instance (signature ~ (Gst.TagList.TagList -> Bool -> m Gst.Buffer.Buffer), MonadIO m, IsTagXmpWriter a) => O.OverloadedMethod TagXmpWriterTagListToXmpBufferMethodInfo a signature where
    overloadedMethod = tagXmpWriterTagListToXmpBuffer

instance O.OverloadedMethodInfo TagXmpWriterTagListToXmpBufferMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstTag.Interfaces.TagXmpWriter.tagXmpWriterTagListToXmpBuffer",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gsttag-1.0.27/docs/GI-GstTag-Interfaces-TagXmpWriter.html#v:tagXmpWriterTagListToXmpBuffer"
        })


#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList TagXmpWriter = TagXmpWriterSignalList
type TagXmpWriterSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, DK.Type)])

#endif