#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Gst.Interfaces.URIHandler
(
URIHandler(..) ,
noURIHandler ,
IsURIHandler ,
#if ENABLE_OVERLOADING
URIHandlerGetProtocolsMethodInfo ,
#endif
uRIHandlerGetProtocols ,
#if ENABLE_OVERLOADING
URIHandlerGetUriMethodInfo ,
#endif
uRIHandlerGetUri ,
#if ENABLE_OVERLOADING
URIHandlerGetUriTypeMethodInfo ,
#endif
uRIHandlerGetUriType ,
#if ENABLE_OVERLOADING
URIHandlerSetUriMethodInfo ,
#endif
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.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import {-# SOURCE #-} qualified GI.Gst.Enums as Gst.Enums
newtype URIHandler = URIHandler (ManagedPtr URIHandler)
noURIHandler :: Maybe URIHandler
noURIHandler = Nothing
#if ENABLE_OVERLOADING
type instance O.SignalList URIHandler = URIHandlerSignalList
type URIHandlerSignalList = ('[ ] :: [(Symbol, *)])
#endif
class ManagedPtrNewtype a => IsURIHandler a
instance IsURIHandler URIHandler
instance WrappedPtr URIHandler where
wrappedPtrCalloc = return nullPtr
wrappedPtrCopy = return
wrappedPtrFree = Nothing
#if ENABLE_OVERLOADING
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
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif
#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
#if ENABLE_OVERLOADING
data URIHandlerGetProtocolsMethodInfo
instance (signature ~ (m (Maybe [T.Text])), MonadIO m, IsURIHandler a) => O.MethodInfo URIHandlerGetProtocolsMethodInfo a signature where
overloadedMethod _ = uRIHandlerGetProtocols
#endif
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
#if ENABLE_OVERLOADING
data URIHandlerGetUriMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsURIHandler a) => O.MethodInfo URIHandlerGetUriMethodInfo a signature where
overloadedMethod _ = uRIHandlerGetUri
#endif
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'
#if ENABLE_OVERLOADING
data URIHandlerGetUriTypeMethodInfo
instance (signature ~ (m Gst.Enums.URIType), MonadIO m, IsURIHandler a) => O.MethodInfo URIHandlerGetUriTypeMethodInfo a signature where
overloadedMethod _ = uRIHandlerGetUriType
#endif
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'
)
#if ENABLE_OVERLOADING
data URIHandlerSetUriMethodInfo
instance (signature ~ (T.Text -> m ()), MonadIO m, IsURIHandler a) => O.MethodInfo URIHandlerSetUriMethodInfo a signature where
overloadedMethod _ = uRIHandlerSetUri
#endif