packages feed

gi-gst-0.1.6.13: GI/Gst/Structs/Event.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)

The event class provides factory methods to construct events for sending
and functions to query (parse) received events.

Events are usually created with gst_event_new_*() which takes event-type
specific parameters as arguments.
To send an event application will usually use gst_element_send_event() and
elements will use gst_pad_send_event() or gst_pad_push_event().
The event should be unreffed with gst_event_unref() if it has not been sent.

Events that have been received can be parsed with their respective
gst_event_parse_*() functions. It is valid to pass %NULL for unwanted details.

Events are passed between elements in parallel to the data stream. Some events
are serialized with buffers, others are not. Some events only travel downstream,
others only upstream. Some events can travel both upstream and downstream.

The events are used to signal special conditions in the datastream such as
EOS (end of stream) or the start of a new stream-segment.
Events are also used to flush the pipeline of any pending data.

Most of the event API is used inside plugins. Applications usually only
construct and use seek events.
To do that gst_event_new_seek() is used to create a seek event. It takes
the needed parameters to specify seeking time and mode.
|[
  GstEvent *event;
  gboolean result;
  ...
  // construct a seek event to play the media from second 2 to 5, flush
  // the pipeline to decrease latency.
  event = gst_event_new_seek (1.0,
     GST_FORMAT_TIME,
     GST_SEEK_FLAG_FLUSH,
     GST_SEEK_TYPE_SET, 2 * GST_SECOND,
     GST_SEEK_TYPE_SET, 5 * GST_SECOND);
  ...
  result = gst_element_send_event (pipeline, event);
  if (!result)
    g_warning ("seek failed");
  ...
]|
-}

module GI.Gst.Structs.Event
    ( 

-- * Exported types
    Event(..)                               ,
    newZeroEvent                            ,
    noEvent                                 ,


 -- * Methods
-- ** eventCopySegment
    EventCopySegmentMethodInfo              ,
    eventCopySegment                        ,


-- ** eventGetRunningTimeOffset
    EventGetRunningTimeOffsetMethodInfo     ,
    eventGetRunningTimeOffset               ,


-- ** eventGetSeqnum
    EventGetSeqnumMethodInfo                ,
    eventGetSeqnum                          ,


-- ** eventGetStructure
    EventGetStructureMethodInfo             ,
    eventGetStructure                       ,


-- ** eventHasName
    EventHasNameMethodInfo                  ,
    eventHasName                            ,


-- ** eventNewBufferSize
    eventNewBufferSize                      ,


-- ** eventNewCaps
    eventNewCaps                            ,


-- ** eventNewCustom
    eventNewCustom                          ,


-- ** eventNewEos
    eventNewEos                             ,


-- ** eventNewFlushStart
    eventNewFlushStart                      ,


-- ** eventNewFlushStop
    eventNewFlushStop                       ,


-- ** eventNewGap
    eventNewGap                             ,


-- ** eventNewLatency
    eventNewLatency                         ,


-- ** eventNewNavigation
    eventNewNavigation                      ,


-- ** eventNewProtection
    eventNewProtection                      ,


-- ** eventNewQos
    eventNewQos                             ,


-- ** eventNewReconfigure
    eventNewReconfigure                     ,


-- ** eventNewSeek
    eventNewSeek                            ,


-- ** eventNewSegment
    eventNewSegment                         ,


-- ** eventNewSegmentDone
    eventNewSegmentDone                     ,


-- ** eventNewSinkMessage
    eventNewSinkMessage                     ,


-- ** eventNewStep
    eventNewStep                            ,


-- ** eventNewStreamStart
    eventNewStreamStart                     ,


-- ** eventNewTag
    eventNewTag                             ,


-- ** eventNewToc
    eventNewToc                             ,


-- ** eventNewTocSelect
    eventNewTocSelect                       ,


-- ** eventParseBufferSize
    EventParseBufferSizeMethodInfo          ,
    eventParseBufferSize                    ,


-- ** eventParseCaps
    EventParseCapsMethodInfo                ,
    eventParseCaps                          ,


-- ** eventParseFlushStop
    EventParseFlushStopMethodInfo           ,
    eventParseFlushStop                     ,


-- ** eventParseGap
    EventParseGapMethodInfo                 ,
    eventParseGap                           ,


-- ** eventParseGroupId
    EventParseGroupIdMethodInfo             ,
    eventParseGroupId                       ,


-- ** eventParseLatency
    EventParseLatencyMethodInfo             ,
    eventParseLatency                       ,


-- ** eventParseProtection
    EventParseProtectionMethodInfo          ,
    eventParseProtection                    ,


-- ** eventParseQos
    EventParseQosMethodInfo                 ,
    eventParseQos                           ,


-- ** eventParseSeek
    EventParseSeekMethodInfo                ,
    eventParseSeek                          ,


-- ** eventParseSegment
    EventParseSegmentMethodInfo             ,
    eventParseSegment                       ,


-- ** eventParseSegmentDone
    EventParseSegmentDoneMethodInfo         ,
    eventParseSegmentDone                   ,


-- ** eventParseSinkMessage
    EventParseSinkMessageMethodInfo         ,
    eventParseSinkMessage                   ,


-- ** eventParseStep
    EventParseStepMethodInfo                ,
    eventParseStep                          ,


-- ** eventParseStreamFlags
    EventParseStreamFlagsMethodInfo         ,
    eventParseStreamFlags                   ,


-- ** eventParseStreamStart
    EventParseStreamStartMethodInfo         ,
    eventParseStreamStart                   ,


-- ** eventParseTag
    EventParseTagMethodInfo                 ,
    eventParseTag                           ,


-- ** eventParseToc
    EventParseTocMethodInfo                 ,
    eventParseToc                           ,


-- ** eventParseTocSelect
    EventParseTocSelectMethodInfo           ,
    eventParseTocSelect                     ,


-- ** eventSetGroupId
    EventSetGroupIdMethodInfo               ,
    eventSetGroupId                         ,


-- ** eventSetRunningTimeOffset
    EventSetRunningTimeOffsetMethodInfo     ,
    eventSetRunningTimeOffset               ,


-- ** eventSetSeqnum
    EventSetSeqnumMethodInfo                ,
    eventSetSeqnum                          ,


-- ** eventSetStreamFlags
    EventSetStreamFlagsMethodInfo           ,
    eventSetStreamFlags                     ,


-- ** eventWritableStructure
    EventWritableStructureMethodInfo        ,
    eventWritableStructure                  ,




 -- * Properties
-- ** MiniObject
    eventReadMiniObject                     ,


-- ** Seqnum
    eventReadSeqnum                         ,


-- ** Timestamp
    eventReadTimestamp                      ,


-- ** Type
    eventReadType                           ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.Gst.Types
import GI.Gst.Callbacks

newtype Event = Event (ForeignPtr Event)
foreign import ccall "gst_event_get_type" c_gst_event_get_type :: 
    IO GType

instance BoxedObject Event where
    boxedType _ = c_gst_event_get_type

-- | Construct a `Event` struct initialized to zero.
newZeroEvent :: MonadIO m => m Event
newZeroEvent = liftIO $ callocBoxedBytes 88 >>= wrapBoxed Event

noEvent :: Maybe Event
noEvent = Nothing

eventReadMiniObject :: Event -> IO MiniObject
eventReadMiniObject s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 0) :: IO (Ptr MiniObject)
    val' <- (newPtr 64 MiniObject) val
    return val'

eventReadType :: Event -> IO EventType
eventReadType s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 64) :: IO CUInt
    let val' = (toEnum . fromIntegral) val
    return val'

eventReadTimestamp :: Event -> IO Word64
eventReadTimestamp s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 72) :: IO Word64
    return val

eventReadSeqnum :: Event -> IO Word32
eventReadSeqnum s = withManagedPtr s $ \ptr -> do
    val <- peek (ptr `plusPtr` 80) :: IO Word32
    return val

-- method Event::new_buffer_size
-- method type : Constructor
-- Args : [Arg {argCName = "format", argType = TInterface "Gst" "Format", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "minsize", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "maxsize", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "async", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_buffer_size" gst_event_new_buffer_size :: 
    CUInt ->                                -- format : TInterface "Gst" "Format"
    Int64 ->                                -- minsize : TBasicType TInt64
    Int64 ->                                -- maxsize : TBasicType TInt64
    CInt ->                                 -- async : TBasicType TBoolean
    IO (Ptr Event)


eventNewBufferSize ::
    (MonadIO m) =>
    Format                                  -- format
    -> Int64                                -- minsize
    -> Int64                                -- maxsize
    -> Bool                                 -- async
    -> m Event                              -- result
eventNewBufferSize format minsize maxsize async = liftIO $ do
    let format' = (fromIntegral . fromEnum) format
    let async' = (fromIntegral . fromEnum) async
    result <- gst_event_new_buffer_size format' minsize maxsize async'
    checkUnexpectedReturnNULL "gst_event_new_buffer_size" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_caps
-- method type : Constructor
-- Args : [Arg {argCName = "caps", argType = TInterface "Gst" "Caps", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_caps" gst_event_new_caps :: 
    Ptr Caps ->                             -- caps : TInterface "Gst" "Caps"
    IO (Ptr Event)


eventNewCaps ::
    (MonadIO m) =>
    Caps                                    -- caps
    -> m Event                              -- result
eventNewCaps caps = liftIO $ do
    let caps' = unsafeManagedPtrGetPtr caps
    result <- gst_event_new_caps caps'
    checkUnexpectedReturnNULL "gst_event_new_caps" result
    result' <- (wrapBoxed Event) result
    touchManagedPtr caps
    return result'

-- method Event::new_custom
-- method type : Constructor
-- Args : [Arg {argCName = "type", argType = TInterface "Gst" "EventType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "structure", argType = TInterface "Gst" "Structure", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_custom" gst_event_new_custom :: 
    CUInt ->                                -- type : TInterface "Gst" "EventType"
    Ptr Structure ->                        -- structure : TInterface "Gst" "Structure"
    IO (Ptr Event)


eventNewCustom ::
    (MonadIO m) =>
    EventType                               -- type_
    -> Structure                            -- structure
    -> m Event                              -- result
eventNewCustom type_ structure = liftIO $ do
    let type_' = (fromIntegral . fromEnum) type_
    structure' <- copyBoxed structure
    result <- gst_event_new_custom type_' structure'
    checkUnexpectedReturnNULL "gst_event_new_custom" result
    result' <- (wrapBoxed Event) result
    touchManagedPtr structure
    return result'

-- method Event::new_eos
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_eos" gst_event_new_eos :: 
    IO (Ptr Event)


eventNewEos ::
    (MonadIO m) =>
    m Event                                 -- result
eventNewEos  = liftIO $ do
    result <- gst_event_new_eos
    checkUnexpectedReturnNULL "gst_event_new_eos" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_flush_start
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_flush_start" gst_event_new_flush_start :: 
    IO (Ptr Event)


eventNewFlushStart ::
    (MonadIO m) =>
    m Event                                 -- result
eventNewFlushStart  = liftIO $ do
    result <- gst_event_new_flush_start
    checkUnexpectedReturnNULL "gst_event_new_flush_start" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_flush_stop
-- method type : Constructor
-- Args : [Arg {argCName = "reset_time", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_flush_stop" gst_event_new_flush_stop :: 
    CInt ->                                 -- reset_time : TBasicType TBoolean
    IO (Ptr Event)


eventNewFlushStop ::
    (MonadIO m) =>
    Bool                                    -- resetTime
    -> m Event                              -- result
eventNewFlushStop resetTime = liftIO $ do
    let resetTime' = (fromIntegral . fromEnum) resetTime
    result <- gst_event_new_flush_stop resetTime'
    checkUnexpectedReturnNULL "gst_event_new_flush_stop" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_gap
-- method type : Constructor
-- Args : [Arg {argCName = "timestamp", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "duration", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_gap" gst_event_new_gap :: 
    Word64 ->                               -- timestamp : TBasicType TUInt64
    Word64 ->                               -- duration : TBasicType TUInt64
    IO (Ptr Event)


eventNewGap ::
    (MonadIO m) =>
    Word64                                  -- timestamp
    -> Word64                               -- duration
    -> m Event                              -- result
eventNewGap timestamp duration = liftIO $ do
    result <- gst_event_new_gap timestamp duration
    checkUnexpectedReturnNULL "gst_event_new_gap" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_latency
-- method type : Constructor
-- Args : [Arg {argCName = "latency", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_latency" gst_event_new_latency :: 
    Word64 ->                               -- latency : TBasicType TUInt64
    IO (Ptr Event)


eventNewLatency ::
    (MonadIO m) =>
    Word64                                  -- latency
    -> m Event                              -- result
eventNewLatency latency = liftIO $ do
    result <- gst_event_new_latency latency
    checkUnexpectedReturnNULL "gst_event_new_latency" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_navigation
-- method type : Constructor
-- Args : [Arg {argCName = "structure", argType = TInterface "Gst" "Structure", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_navigation" gst_event_new_navigation :: 
    Ptr Structure ->                        -- structure : TInterface "Gst" "Structure"
    IO (Ptr Event)


eventNewNavigation ::
    (MonadIO m) =>
    Structure                               -- structure
    -> m Event                              -- result
eventNewNavigation structure = liftIO $ do
    structure' <- copyBoxed structure
    result <- gst_event_new_navigation structure'
    checkUnexpectedReturnNULL "gst_event_new_navigation" result
    result' <- (wrapBoxed Event) result
    touchManagedPtr structure
    return result'

-- method Event::new_protection
-- method type : Constructor
-- Args : [Arg {argCName = "system_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TInterface "Gst" "Buffer", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "origin", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_protection" gst_event_new_protection :: 
    CString ->                              -- system_id : TBasicType TUTF8
    Ptr Buffer ->                           -- data : TInterface "Gst" "Buffer"
    CString ->                              -- origin : TBasicType TUTF8
    IO (Ptr Event)


eventNewProtection ::
    (MonadIO m) =>
    T.Text                                  -- systemId
    -> Buffer                               -- data_
    -> T.Text                               -- origin
    -> m Event                              -- result
eventNewProtection systemId data_ origin = liftIO $ do
    systemId' <- textToCString systemId
    let data_' = unsafeManagedPtrGetPtr data_
    origin' <- textToCString origin
    result <- gst_event_new_protection systemId' data_' origin'
    checkUnexpectedReturnNULL "gst_event_new_protection" result
    result' <- (wrapBoxed Event) result
    touchManagedPtr data_
    freeMem systemId'
    freeMem origin'
    return result'

-- method Event::new_qos
-- method type : Constructor
-- Args : [Arg {argCName = "type", argType = TInterface "Gst" "QOSType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "proportion", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "diff", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_qos" gst_event_new_qos :: 
    CUInt ->                                -- type : TInterface "Gst" "QOSType"
    CDouble ->                              -- proportion : TBasicType TDouble
    Int64 ->                                -- diff : TBasicType TInt64
    Word64 ->                               -- timestamp : TBasicType TUInt64
    IO (Ptr Event)


eventNewQos ::
    (MonadIO m) =>
    QOSType                                 -- type_
    -> Double                               -- proportion
    -> Int64                                -- diff
    -> Word64                               -- timestamp
    -> m Event                              -- result
eventNewQos type_ proportion diff timestamp = liftIO $ do
    let type_' = (fromIntegral . fromEnum) type_
    let proportion' = realToFrac proportion
    result <- gst_event_new_qos type_' proportion' diff timestamp
    checkUnexpectedReturnNULL "gst_event_new_qos" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_reconfigure
-- method type : Constructor
-- Args : []
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_reconfigure" gst_event_new_reconfigure :: 
    IO (Ptr Event)


eventNewReconfigure ::
    (MonadIO m) =>
    m Event                                 -- result
eventNewReconfigure  = liftIO $ do
    result <- gst_event_new_reconfigure
    checkUnexpectedReturnNULL "gst_event_new_reconfigure" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_seek
-- method type : Constructor
-- Args : [Arg {argCName = "rate", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface "Gst" "Format", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "Gst" "SeekFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start_type", argType = TInterface "Gst" "SeekType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stop_type", argType = TInterface "Gst" "SeekType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stop", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_seek" gst_event_new_seek :: 
    CDouble ->                              -- rate : TBasicType TDouble
    CUInt ->                                -- format : TInterface "Gst" "Format"
    CUInt ->                                -- flags : TInterface "Gst" "SeekFlags"
    CUInt ->                                -- start_type : TInterface "Gst" "SeekType"
    Int64 ->                                -- start : TBasicType TInt64
    CUInt ->                                -- stop_type : TInterface "Gst" "SeekType"
    Int64 ->                                -- stop : TBasicType TInt64
    IO (Ptr Event)


eventNewSeek ::
    (MonadIO m) =>
    Double                                  -- rate
    -> Format                               -- format
    -> [SeekFlags]                          -- flags
    -> SeekType                             -- startType
    -> Int64                                -- start
    -> SeekType                             -- stopType
    -> Int64                                -- stop
    -> m Event                              -- result
eventNewSeek rate format flags startType start stopType stop = liftIO $ do
    let rate' = realToFrac rate
    let format' = (fromIntegral . fromEnum) format
    let flags' = gflagsToWord flags
    let startType' = (fromIntegral . fromEnum) startType
    let stopType' = (fromIntegral . fromEnum) stopType
    result <- gst_event_new_seek rate' format' flags' startType' start stopType' stop
    checkUnexpectedReturnNULL "gst_event_new_seek" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_segment
-- method type : Constructor
-- Args : [Arg {argCName = "segment", argType = TInterface "Gst" "Segment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_segment" gst_event_new_segment :: 
    Ptr Segment ->                          -- segment : TInterface "Gst" "Segment"
    IO (Ptr Event)


eventNewSegment ::
    (MonadIO m) =>
    Segment                                 -- segment
    -> m Event                              -- result
eventNewSegment segment = liftIO $ do
    let segment' = unsafeManagedPtrGetPtr segment
    result <- gst_event_new_segment segment'
    checkUnexpectedReturnNULL "gst_event_new_segment" result
    result' <- (wrapBoxed Event) result
    touchManagedPtr segment
    return result'

-- method Event::new_segment_done
-- method type : Constructor
-- Args : [Arg {argCName = "format", argType = TInterface "Gst" "Format", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "position", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_segment_done" gst_event_new_segment_done :: 
    CUInt ->                                -- format : TInterface "Gst" "Format"
    Int64 ->                                -- position : TBasicType TInt64
    IO (Ptr Event)


eventNewSegmentDone ::
    (MonadIO m) =>
    Format                                  -- format
    -> Int64                                -- position
    -> m Event                              -- result
eventNewSegmentDone format position = liftIO $ do
    let format' = (fromIntegral . fromEnum) format
    result <- gst_event_new_segment_done format' position
    checkUnexpectedReturnNULL "gst_event_new_segment_done" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_sink_message
-- method type : Constructor
-- Args : [Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "msg", argType = TInterface "Gst" "Message", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_sink_message" gst_event_new_sink_message :: 
    CString ->                              -- name : TBasicType TUTF8
    Ptr Message ->                          -- msg : TInterface "Gst" "Message"
    IO (Ptr Event)


eventNewSinkMessage ::
    (MonadIO m) =>
    T.Text                                  -- name
    -> Message                              -- msg
    -> m Event                              -- result
eventNewSinkMessage name msg = liftIO $ do
    name' <- textToCString name
    let msg' = unsafeManagedPtrGetPtr msg
    result <- gst_event_new_sink_message name' msg'
    checkUnexpectedReturnNULL "gst_event_new_sink_message" result
    result' <- (wrapBoxed Event) result
    touchManagedPtr msg
    freeMem name'
    return result'

-- method Event::new_step
-- method type : Constructor
-- Args : [Arg {argCName = "format", argType = TInterface "Gst" "Format", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "amount", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rate", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flush", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "intermediate", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_step" gst_event_new_step :: 
    CUInt ->                                -- format : TInterface "Gst" "Format"
    Word64 ->                               -- amount : TBasicType TUInt64
    CDouble ->                              -- rate : TBasicType TDouble
    CInt ->                                 -- flush : TBasicType TBoolean
    CInt ->                                 -- intermediate : TBasicType TBoolean
    IO (Ptr Event)


eventNewStep ::
    (MonadIO m) =>
    Format                                  -- format
    -> Word64                               -- amount
    -> Double                               -- rate
    -> Bool                                 -- flush
    -> Bool                                 -- intermediate
    -> m Event                              -- result
eventNewStep format amount rate flush intermediate = liftIO $ do
    let format' = (fromIntegral . fromEnum) format
    let rate' = realToFrac rate
    let flush' = (fromIntegral . fromEnum) flush
    let intermediate' = (fromIntegral . fromEnum) intermediate
    result <- gst_event_new_step format' amount rate' flush' intermediate'
    checkUnexpectedReturnNULL "gst_event_new_step" result
    result' <- (wrapBoxed Event) result
    return result'

-- method Event::new_stream_start
-- method type : Constructor
-- Args : [Arg {argCName = "stream_id", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_stream_start" gst_event_new_stream_start :: 
    CString ->                              -- stream_id : TBasicType TUTF8
    IO (Ptr Event)


eventNewStreamStart ::
    (MonadIO m) =>
    T.Text                                  -- streamId
    -> m Event                              -- result
eventNewStreamStart streamId = liftIO $ do
    streamId' <- textToCString streamId
    result <- gst_event_new_stream_start streamId'
    checkUnexpectedReturnNULL "gst_event_new_stream_start" result
    result' <- (wrapBoxed Event) result
    freeMem streamId'
    return result'

-- method Event::new_tag
-- method type : Constructor
-- Args : [Arg {argCName = "taglist", argType = TInterface "Gst" "TagList", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_tag" gst_event_new_tag :: 
    Ptr TagList ->                          -- taglist : TInterface "Gst" "TagList"
    IO (Ptr Event)


eventNewTag ::
    (MonadIO m) =>
    TagList                                 -- taglist
    -> m Event                              -- result
eventNewTag taglist = liftIO $ do
    taglist' <- copyBoxed taglist
    result <- gst_event_new_tag taglist'
    checkUnexpectedReturnNULL "gst_event_new_tag" result
    result' <- (wrapBoxed Event) result
    touchManagedPtr taglist
    return result'

-- method Event::new_toc
-- method type : Constructor
-- Args : [Arg {argCName = "toc", argType = TInterface "Gst" "Toc", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "updated", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_toc" gst_event_new_toc :: 
    Ptr Toc ->                              -- toc : TInterface "Gst" "Toc"
    CInt ->                                 -- updated : TBasicType TBoolean
    IO (Ptr Event)


eventNewToc ::
    (MonadIO m) =>
    Toc                                     -- toc
    -> Bool                                 -- updated
    -> m Event                              -- result
eventNewToc toc updated = liftIO $ do
    let toc' = unsafeManagedPtrGetPtr toc
    let updated' = (fromIntegral . fromEnum) updated
    result <- gst_event_new_toc toc' updated'
    checkUnexpectedReturnNULL "gst_event_new_toc" result
    result' <- (wrapBoxed Event) result
    touchManagedPtr toc
    return result'

-- method Event::new_toc_select
-- method type : Constructor
-- Args : [Arg {argCName = "uid", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Event"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_new_toc_select" gst_event_new_toc_select :: 
    CString ->                              -- uid : TBasicType TUTF8
    IO (Ptr Event)


eventNewTocSelect ::
    (MonadIO m) =>
    T.Text                                  -- uid
    -> m Event                              -- result
eventNewTocSelect uid = liftIO $ do
    uid' <- textToCString uid
    result <- gst_event_new_toc_select uid'
    checkUnexpectedReturnNULL "gst_event_new_toc_select" result
    result' <- (wrapBoxed Event) result
    freeMem uid'
    return result'

-- method Event::copy_segment
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "segment", argType = TInterface "Gst" "Segment", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_copy_segment" gst_event_copy_segment :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr Segment ->                          -- segment : TInterface "Gst" "Segment"
    IO ()


eventCopySegment ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> Segment                              -- segment
    -> m ()                                 -- result
eventCopySegment _obj segment = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let segment' = unsafeManagedPtrGetPtr segment
    gst_event_copy_segment _obj' segment'
    touchManagedPtr _obj
    touchManagedPtr segment
    return ()

data EventCopySegmentMethodInfo
instance (signature ~ (Segment -> m ()), MonadIO m) => MethodInfo EventCopySegmentMethodInfo Event signature where
    overloadedMethod _ = eventCopySegment

-- method Event::get_running_time_offset
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TInt64
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_get_running_time_offset" gst_event_get_running_time_offset :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    IO Int64


eventGetRunningTimeOffset ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m Int64                              -- result
eventGetRunningTimeOffset _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gst_event_get_running_time_offset _obj'
    touchManagedPtr _obj
    return result

data EventGetRunningTimeOffsetMethodInfo
instance (signature ~ (m Int64), MonadIO m) => MethodInfo EventGetRunningTimeOffsetMethodInfo Event signature where
    overloadedMethod _ = eventGetRunningTimeOffset

-- method Event::get_seqnum
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TUInt32
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_get_seqnum" gst_event_get_seqnum :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    IO Word32


eventGetSeqnum ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m Word32                             -- result
eventGetSeqnum _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gst_event_get_seqnum _obj'
    touchManagedPtr _obj
    return result

data EventGetSeqnumMethodInfo
instance (signature ~ (m Word32), MonadIO m) => MethodInfo EventGetSeqnumMethodInfo Event signature where
    overloadedMethod _ = eventGetSeqnum

-- method Event::get_structure
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Structure"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_get_structure" gst_event_get_structure :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    IO (Ptr Structure)


eventGetStructure ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m Structure                          -- result
eventGetStructure _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gst_event_get_structure _obj'
    checkUnexpectedReturnNULL "gst_event_get_structure" result
    result' <- (newBoxed Structure) result
    touchManagedPtr _obj
    return result'

data EventGetStructureMethodInfo
instance (signature ~ (m Structure), MonadIO m) => MethodInfo EventGetStructureMethodInfo Event signature where
    overloadedMethod _ = eventGetStructure

-- method Event::has_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_has_name" gst_event_has_name :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    CString ->                              -- name : TBasicType TUTF8
    IO CInt


eventHasName ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> T.Text                               -- name
    -> m Bool                               -- result
eventHasName _obj name = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    name' <- textToCString name
    result <- gst_event_has_name _obj' name'
    let result' = (/= 0) result
    touchManagedPtr _obj
    freeMem name'
    return result'

data EventHasNameMethodInfo
instance (signature ~ (T.Text -> m Bool), MonadIO m) => MethodInfo EventHasNameMethodInfo Event signature where
    overloadedMethod _ = eventHasName

-- method Event::parse_buffer_size
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface "Gst" "Format", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "minsize", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "maxsize", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "async", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_buffer_size" gst_event_parse_buffer_size :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr CUInt ->                            -- format : TInterface "Gst" "Format"
    Ptr Int64 ->                            -- minsize : TBasicType TInt64
    Ptr Int64 ->                            -- maxsize : TBasicType TInt64
    Ptr CInt ->                             -- async : TBasicType TBoolean
    IO ()


eventParseBufferSize ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Format,Int64,Int64,Bool)          -- result
eventParseBufferSize _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    format <- allocMem :: IO (Ptr CUInt)
    minsize <- allocMem :: IO (Ptr Int64)
    maxsize <- allocMem :: IO (Ptr Int64)
    async <- allocMem :: IO (Ptr CInt)
    gst_event_parse_buffer_size _obj' format minsize maxsize async
    format' <- peek format
    let format'' = (toEnum . fromIntegral) format'
    minsize' <- peek minsize
    maxsize' <- peek maxsize
    async' <- peek async
    let async'' = (/= 0) async'
    touchManagedPtr _obj
    freeMem format
    freeMem minsize
    freeMem maxsize
    freeMem async
    return (format'', minsize', maxsize', async'')

data EventParseBufferSizeMethodInfo
instance (signature ~ (m (Format,Int64,Int64,Bool)), MonadIO m) => MethodInfo EventParseBufferSizeMethodInfo Event signature where
    overloadedMethod _ = eventParseBufferSize

-- method Event::parse_caps
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps", argType = TInterface "Gst" "Caps", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_caps" gst_event_parse_caps :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr Caps ->                             -- caps : TInterface "Gst" "Caps"
    IO ()


eventParseCaps ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Caps)                             -- result
eventParseCaps _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    caps <- callocBoxedBytes 64 :: IO (Ptr Caps)
    gst_event_parse_caps _obj' caps
    caps' <- (wrapBoxed Caps) caps
    touchManagedPtr _obj
    return caps'

data EventParseCapsMethodInfo
instance (signature ~ (m (Caps)), MonadIO m) => MethodInfo EventParseCapsMethodInfo Event signature where
    overloadedMethod _ = eventParseCaps

-- method Event::parse_flush_stop
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "reset_time", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_flush_stop" gst_event_parse_flush_stop :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr CInt ->                             -- reset_time : TBasicType TBoolean
    IO ()


eventParseFlushStop ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Bool)                             -- result
eventParseFlushStop _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    resetTime <- allocMem :: IO (Ptr CInt)
    gst_event_parse_flush_stop _obj' resetTime
    resetTime' <- peek resetTime
    let resetTime'' = (/= 0) resetTime'
    touchManagedPtr _obj
    freeMem resetTime
    return resetTime''

data EventParseFlushStopMethodInfo
instance (signature ~ (m (Bool)), MonadIO m) => MethodInfo EventParseFlushStopMethodInfo Event signature where
    overloadedMethod _ = eventParseFlushStop

-- method Event::parse_gap
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "duration", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_gap" gst_event_parse_gap :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr Word64 ->                           -- timestamp : TBasicType TUInt64
    Ptr Word64 ->                           -- duration : TBasicType TUInt64
    IO ()


eventParseGap ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Word64,Word64)                    -- result
eventParseGap _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    timestamp <- allocMem :: IO (Ptr Word64)
    duration <- allocMem :: IO (Ptr Word64)
    gst_event_parse_gap _obj' timestamp duration
    timestamp' <- peek timestamp
    duration' <- peek duration
    touchManagedPtr _obj
    freeMem timestamp
    freeMem duration
    return (timestamp', duration')

data EventParseGapMethodInfo
instance (signature ~ (m (Word64,Word64)), MonadIO m) => MethodInfo EventParseGapMethodInfo Event signature where
    overloadedMethod _ = eventParseGap

-- method Event::parse_group_id
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "group_id", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TBoolean
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_group_id" gst_event_parse_group_id :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr Word32 ->                           -- group_id : TBasicType TUInt32
    IO CInt


eventParseGroupId ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Bool,Word32)                      -- result
eventParseGroupId _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    groupId <- allocMem :: IO (Ptr Word32)
    result <- gst_event_parse_group_id _obj' groupId
    let result' = (/= 0) result
    groupId' <- peek groupId
    touchManagedPtr _obj
    freeMem groupId
    return (result', groupId')

data EventParseGroupIdMethodInfo
instance (signature ~ (m (Bool,Word32)), MonadIO m) => MethodInfo EventParseGroupIdMethodInfo Event signature where
    overloadedMethod _ = eventParseGroupId

-- method Event::parse_latency
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "latency", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_latency" gst_event_parse_latency :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr Word64 ->                           -- latency : TBasicType TUInt64
    IO ()


eventParseLatency ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Word64)                           -- result
eventParseLatency _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    latency <- allocMem :: IO (Ptr Word64)
    gst_event_parse_latency _obj' latency
    latency' <- peek latency
    touchManagedPtr _obj
    freeMem latency
    return latency'

data EventParseLatencyMethodInfo
instance (signature ~ (m (Word64)), MonadIO m) => MethodInfo EventParseLatencyMethodInfo Event signature where
    overloadedMethod _ = eventParseLatency

-- method Event::parse_protection
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "system_id", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TInterface "Gst" "Buffer", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "origin", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_protection" gst_event_parse_protection :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr CString ->                          -- system_id : TBasicType TUTF8
    Ptr Buffer ->                           -- data : TInterface "Gst" "Buffer"
    CString ->                              -- origin : TBasicType TUTF8
    IO ()


eventParseProtection ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> Maybe (T.Text)                       -- origin
    -> m (T.Text,Buffer)                    -- result
eventParseProtection _obj origin = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    systemId <- allocMem :: IO (Ptr CString)
    data_ <- callocBoxedBytes 112 :: IO (Ptr Buffer)
    maybeOrigin <- case origin of
        Nothing -> return nullPtr
        Just jOrigin -> do
            jOrigin' <- textToCString jOrigin
            return jOrigin'
    gst_event_parse_protection _obj' systemId data_ maybeOrigin
    systemId' <- peek systemId
    systemId'' <- cstringToText systemId'
    data_' <- (wrapBoxed Buffer) data_
    touchManagedPtr _obj
    freeMem systemId
    freeMem maybeOrigin
    return (systemId'', data_')

data EventParseProtectionMethodInfo
instance (signature ~ (Maybe (T.Text) -> m (T.Text,Buffer)), MonadIO m) => MethodInfo EventParseProtectionMethodInfo Event signature where
    overloadedMethod _ = eventParseProtection

-- method Event::parse_qos
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface "Gst" "QOSType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "proportion", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "diff", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "timestamp", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_qos" gst_event_parse_qos :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr CUInt ->                            -- type : TInterface "Gst" "QOSType"
    Ptr CDouble ->                          -- proportion : TBasicType TDouble
    Ptr Int64 ->                            -- diff : TBasicType TInt64
    Ptr Word64 ->                           -- timestamp : TBasicType TUInt64
    IO ()


eventParseQos ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (QOSType,Double,Int64,Word64)      -- result
eventParseQos _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    type_ <- allocMem :: IO (Ptr CUInt)
    proportion <- allocMem :: IO (Ptr CDouble)
    diff <- allocMem :: IO (Ptr Int64)
    timestamp <- allocMem :: IO (Ptr Word64)
    gst_event_parse_qos _obj' type_ proportion diff timestamp
    type_' <- peek type_
    let type_'' = (toEnum . fromIntegral) type_'
    proportion' <- peek proportion
    let proportion'' = realToFrac proportion'
    diff' <- peek diff
    timestamp' <- peek timestamp
    touchManagedPtr _obj
    freeMem type_
    freeMem proportion
    freeMem diff
    freeMem timestamp
    return (type_'', proportion'', diff', timestamp')

data EventParseQosMethodInfo
instance (signature ~ (m (QOSType,Double,Int64,Word64)), MonadIO m) => MethodInfo EventParseQosMethodInfo Event signature where
    overloadedMethod _ = eventParseQos

-- method Event::parse_seek
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rate", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "format", argType = TInterface "Gst" "Format", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "flags", argType = TInterface "Gst" "SeekFlags", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "start_type", argType = TInterface "Gst" "SeekType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "start", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "stop_type", argType = TInterface "Gst" "SeekType", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "stop", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_seek" gst_event_parse_seek :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr CDouble ->                          -- rate : TBasicType TDouble
    Ptr CUInt ->                            -- format : TInterface "Gst" "Format"
    Ptr CUInt ->                            -- flags : TInterface "Gst" "SeekFlags"
    Ptr CUInt ->                            -- start_type : TInterface "Gst" "SeekType"
    Ptr Int64 ->                            -- start : TBasicType TInt64
    Ptr CUInt ->                            -- stop_type : TInterface "Gst" "SeekType"
    Ptr Int64 ->                            -- stop : TBasicType TInt64
    IO ()


eventParseSeek ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Double,Format,[SeekFlags],SeekType,Int64,SeekType,Int64)-- result
eventParseSeek _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    rate <- allocMem :: IO (Ptr CDouble)
    format <- allocMem :: IO (Ptr CUInt)
    flags <- allocMem :: IO (Ptr CUInt)
    startType <- allocMem :: IO (Ptr CUInt)
    start <- allocMem :: IO (Ptr Int64)
    stopType <- allocMem :: IO (Ptr CUInt)
    stop <- allocMem :: IO (Ptr Int64)
    gst_event_parse_seek _obj' rate format flags startType start stopType stop
    rate' <- peek rate
    let rate'' = realToFrac rate'
    format' <- peek format
    let format'' = (toEnum . fromIntegral) format'
    flags' <- peek flags
    let flags'' = wordToGFlags flags'
    startType' <- peek startType
    let startType'' = (toEnum . fromIntegral) startType'
    start' <- peek start
    stopType' <- peek stopType
    let stopType'' = (toEnum . fromIntegral) stopType'
    stop' <- peek stop
    touchManagedPtr _obj
    freeMem rate
    freeMem format
    freeMem flags
    freeMem startType
    freeMem start
    freeMem stopType
    freeMem stop
    return (rate'', format'', flags'', startType'', start', stopType'', stop')

data EventParseSeekMethodInfo
instance (signature ~ (m (Double,Format,[SeekFlags],SeekType,Int64,SeekType,Int64)), MonadIO m) => MethodInfo EventParseSeekMethodInfo Event signature where
    overloadedMethod _ = eventParseSeek

-- method Event::parse_segment
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "segment", argType = TInterface "Gst" "Segment", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_segment" gst_event_parse_segment :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr Segment ->                          -- segment : TInterface "Gst" "Segment"
    IO ()


eventParseSegment ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Segment)                          -- result
eventParseSegment _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    segment <- callocBoxedBytes 120 :: IO (Ptr Segment)
    gst_event_parse_segment _obj' segment
    segment' <- (wrapBoxed Segment) segment
    touchManagedPtr _obj
    return segment'

data EventParseSegmentMethodInfo
instance (signature ~ (m (Segment)), MonadIO m) => MethodInfo EventParseSegmentMethodInfo Event signature where
    overloadedMethod _ = eventParseSegment

-- method Event::parse_segment_done
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface "Gst" "Format", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "position", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_segment_done" gst_event_parse_segment_done :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr CUInt ->                            -- format : TInterface "Gst" "Format"
    Ptr Int64 ->                            -- position : TBasicType TInt64
    IO ()


eventParseSegmentDone ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Format,Int64)                     -- result
eventParseSegmentDone _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    format <- allocMem :: IO (Ptr CUInt)
    position <- allocMem :: IO (Ptr Int64)
    gst_event_parse_segment_done _obj' format position
    format' <- peek format
    let format'' = (toEnum . fromIntegral) format'
    position' <- peek position
    touchManagedPtr _obj
    freeMem format
    freeMem position
    return (format'', position')

data EventParseSegmentDoneMethodInfo
instance (signature ~ (m (Format,Int64)), MonadIO m) => MethodInfo EventParseSegmentDoneMethodInfo Event signature where
    overloadedMethod _ = eventParseSegmentDone

-- method Event::parse_sink_message
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "msg", argType = TInterface "Gst" "Message", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_sink_message" gst_event_parse_sink_message :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr Message ->                          -- msg : TInterface "Gst" "Message"
    IO ()


eventParseSinkMessage ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Message)                          -- result
eventParseSinkMessage _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    msg <- callocBoxedBytes 120 :: IO (Ptr Message)
    gst_event_parse_sink_message _obj' msg
    msg' <- (wrapBoxed Message) msg
    touchManagedPtr _obj
    return msg'

data EventParseSinkMessageMethodInfo
instance (signature ~ (m (Message)), MonadIO m) => MethodInfo EventParseSinkMessageMethodInfo Event signature where
    overloadedMethod _ = eventParseSinkMessage

-- method Event::parse_step
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface "Gst" "Format", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "amount", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "rate", argType = TBasicType TDouble, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "flush", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "intermediate", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_step" gst_event_parse_step :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr CUInt ->                            -- format : TInterface "Gst" "Format"
    Ptr Word64 ->                           -- amount : TBasicType TUInt64
    Ptr CDouble ->                          -- rate : TBasicType TDouble
    Ptr CInt ->                             -- flush : TBasicType TBoolean
    Ptr CInt ->                             -- intermediate : TBasicType TBoolean
    IO ()


eventParseStep ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Format,Word64,Double,Bool,Bool)   -- result
eventParseStep _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    format <- allocMem :: IO (Ptr CUInt)
    amount <- allocMem :: IO (Ptr Word64)
    rate <- allocMem :: IO (Ptr CDouble)
    flush <- allocMem :: IO (Ptr CInt)
    intermediate <- allocMem :: IO (Ptr CInt)
    gst_event_parse_step _obj' format amount rate flush intermediate
    format' <- peek format
    let format'' = (toEnum . fromIntegral) format'
    amount' <- peek amount
    rate' <- peek rate
    let rate'' = realToFrac rate'
    flush' <- peek flush
    let flush'' = (/= 0) flush'
    intermediate' <- peek intermediate
    let intermediate'' = (/= 0) intermediate'
    touchManagedPtr _obj
    freeMem format
    freeMem amount
    freeMem rate
    freeMem flush
    freeMem intermediate
    return (format'', amount', rate'', flush'', intermediate'')

data EventParseStepMethodInfo
instance (signature ~ (m (Format,Word64,Double,Bool,Bool)), MonadIO m) => MethodInfo EventParseStepMethodInfo Event signature where
    overloadedMethod _ = eventParseStep

-- method Event::parse_stream_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "Gst" "StreamFlags", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_stream_flags" gst_event_parse_stream_flags :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr CUInt ->                            -- flags : TInterface "Gst" "StreamFlags"
    IO ()


eventParseStreamFlags ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m ([StreamFlags])                    -- result
eventParseStreamFlags _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    flags <- allocMem :: IO (Ptr CUInt)
    gst_event_parse_stream_flags _obj' flags
    flags' <- peek flags
    let flags'' = wordToGFlags flags'
    touchManagedPtr _obj
    freeMem flags
    return flags''

data EventParseStreamFlagsMethodInfo
instance (signature ~ (m ([StreamFlags])), MonadIO m) => MethodInfo EventParseStreamFlagsMethodInfo Event signature where
    overloadedMethod _ = eventParseStreamFlags

-- method Event::parse_stream_start
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stream_id", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_stream_start" gst_event_parse_stream_start :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr CString ->                          -- stream_id : TBasicType TUTF8
    IO ()


eventParseStreamStart ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (T.Text)                           -- result
eventParseStreamStart _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    streamId <- allocMem :: IO (Ptr CString)
    gst_event_parse_stream_start _obj' streamId
    streamId' <- peek streamId
    streamId'' <- cstringToText streamId'
    touchManagedPtr _obj
    freeMem streamId
    return streamId''

data EventParseStreamStartMethodInfo
instance (signature ~ (m (T.Text)), MonadIO m) => MethodInfo EventParseStreamStartMethodInfo Event signature where
    overloadedMethod _ = eventParseStreamStart

-- method Event::parse_tag
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "taglist", argType = TInterface "Gst" "TagList", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_tag" gst_event_parse_tag :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr TagList ->                          -- taglist : TInterface "Gst" "TagList"
    IO ()


eventParseTag ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (TagList)                          -- result
eventParseTag _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    taglist <- callocBoxedBytes 64 :: IO (Ptr TagList)
    gst_event_parse_tag _obj' taglist
    taglist' <- (wrapBoxed TagList) taglist
    touchManagedPtr _obj
    return taglist'

data EventParseTagMethodInfo
instance (signature ~ (m (TagList)), MonadIO m) => MethodInfo EventParseTagMethodInfo Event signature where
    overloadedMethod _ = eventParseTag

-- method Event::parse_toc
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "toc", argType = TInterface "Gst" "Toc", direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "updated", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_toc" gst_event_parse_toc :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr (Ptr Toc) ->                        -- toc : TInterface "Gst" "Toc"
    Ptr CInt ->                             -- updated : TBasicType TBoolean
    IO ()


eventParseToc ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (Toc,Bool)                         -- result
eventParseToc _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    toc <- allocMem :: IO (Ptr (Ptr Toc))
    updated <- allocMem :: IO (Ptr CInt)
    gst_event_parse_toc _obj' toc updated
    toc' <- peek toc
    toc'' <- (wrapBoxed Toc) toc'
    updated' <- peek updated
    let updated'' = (/= 0) updated'
    touchManagedPtr _obj
    freeMem toc
    freeMem updated
    return (toc'', updated'')

data EventParseTocMethodInfo
instance (signature ~ (m (Toc,Bool)), MonadIO m) => MethodInfo EventParseTocMethodInfo Event signature where
    overloadedMethod _ = eventParseToc

-- method Event::parse_toc_select
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uid", argType = TBasicType TUTF8, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_parse_toc_select" gst_event_parse_toc_select :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Ptr CString ->                          -- uid : TBasicType TUTF8
    IO ()


eventParseTocSelect ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m (T.Text)                           -- result
eventParseTocSelect _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    uid <- allocMem :: IO (Ptr CString)
    gst_event_parse_toc_select _obj' uid
    uid' <- peek uid
    uid'' <- cstringToText uid'
    freeMem uid'
    touchManagedPtr _obj
    freeMem uid
    return uid''

data EventParseTocSelectMethodInfo
instance (signature ~ (m (T.Text)), MonadIO m) => MethodInfo EventParseTocSelectMethodInfo Event signature where
    overloadedMethod _ = eventParseTocSelect

-- method Event::set_group_id
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "group_id", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_set_group_id" gst_event_set_group_id :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Word32 ->                               -- group_id : TBasicType TUInt32
    IO ()


eventSetGroupId ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> Word32                               -- groupId
    -> m ()                                 -- result
eventSetGroupId _obj groupId = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    gst_event_set_group_id _obj' groupId
    touchManagedPtr _obj
    return ()

data EventSetGroupIdMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m) => MethodInfo EventSetGroupIdMethodInfo Event signature where
    overloadedMethod _ = eventSetGroupId

-- method Event::set_running_time_offset
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_set_running_time_offset" gst_event_set_running_time_offset :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Int64 ->                                -- offset : TBasicType TInt64
    IO ()


eventSetRunningTimeOffset ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> Int64                                -- offset
    -> m ()                                 -- result
eventSetRunningTimeOffset _obj offset = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    gst_event_set_running_time_offset _obj' offset
    touchManagedPtr _obj
    return ()

data EventSetRunningTimeOffsetMethodInfo
instance (signature ~ (Int64 -> m ()), MonadIO m) => MethodInfo EventSetRunningTimeOffsetMethodInfo Event signature where
    overloadedMethod _ = eventSetRunningTimeOffset

-- method Event::set_seqnum
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "seqnum", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_set_seqnum" gst_event_set_seqnum :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    Word32 ->                               -- seqnum : TBasicType TUInt32
    IO ()


eventSetSeqnum ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> Word32                               -- seqnum
    -> m ()                                 -- result
eventSetSeqnum _obj seqnum = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    gst_event_set_seqnum _obj' seqnum
    touchManagedPtr _obj
    return ()

data EventSetSeqnumMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m) => MethodInfo EventSetSeqnumMethodInfo Event signature where
    overloadedMethod _ = eventSetSeqnum

-- method Event::set_stream_flags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface "Gst" "StreamFlags", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_set_stream_flags" gst_event_set_stream_flags :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    CUInt ->                                -- flags : TInterface "Gst" "StreamFlags"
    IO ()


eventSetStreamFlags ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> [StreamFlags]                        -- flags
    -> m ()                                 -- result
eventSetStreamFlags _obj flags = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    let flags' = gflagsToWord flags
    gst_event_set_stream_flags _obj' flags'
    touchManagedPtr _obj
    return ()

data EventSetStreamFlagsMethodInfo
instance (signature ~ ([StreamFlags] -> m ()), MonadIO m) => MethodInfo EventSetStreamFlagsMethodInfo Event signature where
    overloadedMethod _ = eventSetStreamFlags

-- method Event::writable_structure
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "Gst" "Event", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "Gst" "Structure"
-- throws : False
-- Skip return : False

foreign import ccall "gst_event_writable_structure" gst_event_writable_structure :: 
    Ptr Event ->                            -- _obj : TInterface "Gst" "Event"
    IO (Ptr Structure)


eventWritableStructure ::
    (MonadIO m) =>
    Event                                   -- _obj
    -> m Structure                          -- result
eventWritableStructure _obj = liftIO $ do
    let _obj' = unsafeManagedPtrGetPtr _obj
    result <- gst_event_writable_structure _obj'
    checkUnexpectedReturnNULL "gst_event_writable_structure" result
    result' <- (newBoxed Structure) result
    touchManagedPtr _obj
    return result'

data EventWritableStructureMethodInfo
instance (signature ~ (m Structure), MonadIO m) => MethodInfo EventWritableStructureMethodInfo Event signature where
    overloadedMethod _ = eventWritableStructure

type family ResolveEventMethod (t :: Symbol) (o :: *) :: * where
    ResolveEventMethod "copySegment" o = EventCopySegmentMethodInfo
    ResolveEventMethod "hasName" o = EventHasNameMethodInfo
    ResolveEventMethod "parseBufferSize" o = EventParseBufferSizeMethodInfo
    ResolveEventMethod "parseCaps" o = EventParseCapsMethodInfo
    ResolveEventMethod "parseFlushStop" o = EventParseFlushStopMethodInfo
    ResolveEventMethod "parseGap" o = EventParseGapMethodInfo
    ResolveEventMethod "parseGroupId" o = EventParseGroupIdMethodInfo
    ResolveEventMethod "parseLatency" o = EventParseLatencyMethodInfo
    ResolveEventMethod "parseProtection" o = EventParseProtectionMethodInfo
    ResolveEventMethod "parseQos" o = EventParseQosMethodInfo
    ResolveEventMethod "parseSeek" o = EventParseSeekMethodInfo
    ResolveEventMethod "parseSegment" o = EventParseSegmentMethodInfo
    ResolveEventMethod "parseSegmentDone" o = EventParseSegmentDoneMethodInfo
    ResolveEventMethod "parseSinkMessage" o = EventParseSinkMessageMethodInfo
    ResolveEventMethod "parseStep" o = EventParseStepMethodInfo
    ResolveEventMethod "parseStreamFlags" o = EventParseStreamFlagsMethodInfo
    ResolveEventMethod "parseStreamStart" o = EventParseStreamStartMethodInfo
    ResolveEventMethod "parseTag" o = EventParseTagMethodInfo
    ResolveEventMethod "parseToc" o = EventParseTocMethodInfo
    ResolveEventMethod "parseTocSelect" o = EventParseTocSelectMethodInfo
    ResolveEventMethod "writableStructure" o = EventWritableStructureMethodInfo
    ResolveEventMethod "getRunningTimeOffset" o = EventGetRunningTimeOffsetMethodInfo
    ResolveEventMethod "getSeqnum" o = EventGetSeqnumMethodInfo
    ResolveEventMethod "getStructure" o = EventGetStructureMethodInfo
    ResolveEventMethod "setGroupId" o = EventSetGroupIdMethodInfo
    ResolveEventMethod "setRunningTimeOffset" o = EventSetRunningTimeOffsetMethodInfo
    ResolveEventMethod "setSeqnum" o = EventSetSeqnumMethodInfo
    ResolveEventMethod "setStreamFlags" o = EventSetStreamFlagsMethodInfo
    ResolveEventMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveEventMethod t Event, MethodInfo info Event p) => IsLabelProxy t (Event -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveEventMethod t Event, MethodInfo info Event p) => IsLabel t (Event -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif