module GI.Gst.Interfaces.URIHandler
(
URIHandler(..) ,
noURIHandler ,
IsURIHandler ,
URIHandlerGetProtocolsMethodInfo ,
uRIHandlerGetProtocols ,
URIHandlerGetUriMethodInfo ,
uRIHandlerGetUri ,
URIHandlerGetUriTypeMethodInfo ,
uRIHandlerGetUriType ,
URIHandlerSetUriMethodInfo ,
uRIHandlerSetUri ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GI.Gst.Enums as Gst.Enums
newtype URIHandler = URIHandler (ManagedPtr URIHandler)
noURIHandler :: Maybe URIHandler
noURIHandler = Nothing
type instance O.SignalList URIHandler = URIHandlerSignalList
type URIHandlerSignalList = ('[ ] :: [(Symbol, *)])
class ManagedPtrNewtype a => IsURIHandler a
instance IsURIHandler URIHandler
instance WrappedPtr URIHandler where
wrappedPtrCalloc = return nullPtr
wrappedPtrCopy = return
wrappedPtrFree = Nothing
type family ResolveURIHandlerMethod (t :: Symbol) (o :: *) :: * where
ResolveURIHandlerMethod "getProtocols" o = URIHandlerGetProtocolsMethodInfo
ResolveURIHandlerMethod "getUri" o = URIHandlerGetUriMethodInfo
ResolveURIHandlerMethod "getUriType" o = URIHandlerGetUriTypeMethodInfo
ResolveURIHandlerMethod "setUri" o = URIHandlerSetUriMethodInfo
ResolveURIHandlerMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveURIHandlerMethod t URIHandler, O.MethodInfo info URIHandler p) => O.IsLabelProxy t (URIHandler -> p) where
fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveURIHandlerMethod t URIHandler, O.MethodInfo info URIHandler p) => O.IsLabel t (URIHandler -> p) where
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
foreign import ccall "gst_uri_handler_get_protocols" gst_uri_handler_get_protocols ::
Ptr URIHandler ->
IO (Ptr CString)
uRIHandlerGetProtocols ::
(B.CallStack.HasCallStack, MonadIO m, IsURIHandler a) =>
a
-> m (Maybe [T.Text])
uRIHandlerGetProtocols handler = liftIO $ do
handler' <- unsafeManagedPtrCastPtr handler
result <- gst_uri_handler_get_protocols handler'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- unpackZeroTerminatedUTF8CArray result'
return result''
touchManagedPtr handler
return maybeResult
data URIHandlerGetProtocolsMethodInfo
instance (signature ~ (m (Maybe [T.Text])), MonadIO m, IsURIHandler a) => O.MethodInfo URIHandlerGetProtocolsMethodInfo a signature where
overloadedMethod _ = uRIHandlerGetProtocols
foreign import ccall "gst_uri_handler_get_uri" gst_uri_handler_get_uri ::
Ptr URIHandler ->
IO CString
uRIHandlerGetUri ::
(B.CallStack.HasCallStack, MonadIO m, IsURIHandler a) =>
a
-> m (Maybe T.Text)
uRIHandlerGetUri handler = liftIO $ do
handler' <- unsafeManagedPtrCastPtr handler
result <- gst_uri_handler_get_uri handler'
maybeResult <- convertIfNonNull result $ \result' -> do
result'' <- cstringToText result'
freeMem result'
return result''
touchManagedPtr handler
return maybeResult
data URIHandlerGetUriMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsURIHandler a) => O.MethodInfo URIHandlerGetUriMethodInfo a signature where
overloadedMethod _ = uRIHandlerGetUri
foreign import ccall "gst_uri_handler_get_uri_type" gst_uri_handler_get_uri_type ::
Ptr URIHandler ->
IO CUInt
uRIHandlerGetUriType ::
(B.CallStack.HasCallStack, MonadIO m, IsURIHandler a) =>
a
-> m Gst.Enums.URIType
uRIHandlerGetUriType handler = liftIO $ do
handler' <- unsafeManagedPtrCastPtr handler
result <- gst_uri_handler_get_uri_type handler'
let result' = (toEnum . fromIntegral) result
touchManagedPtr handler
return result'
data URIHandlerGetUriTypeMethodInfo
instance (signature ~ (m Gst.Enums.URIType), MonadIO m, IsURIHandler a) => O.MethodInfo URIHandlerGetUriTypeMethodInfo a signature where
overloadedMethod _ = uRIHandlerGetUriType
foreign import ccall "gst_uri_handler_set_uri" gst_uri_handler_set_uri ::
Ptr URIHandler ->
CString ->
Ptr (Ptr GError) ->
IO CInt
uRIHandlerSetUri ::
(B.CallStack.HasCallStack, MonadIO m, IsURIHandler a) =>
a
-> T.Text
-> m ()
uRIHandlerSetUri handler uri = liftIO $ do
handler' <- unsafeManagedPtrCastPtr handler
uri' <- textToCString uri
onException (do
_ <- propagateGError $ gst_uri_handler_set_uri handler' uri'
touchManagedPtr handler
freeMem uri'
return ()
) (do
freeMem uri'
)
data URIHandlerSetUriMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsURIHandler a) => O.MethodInfo URIHandlerSetUriMethodInfo a signature where
overloadedMethod _ = uRIHandlerSetUri