gi-gio-2.0.20: GI/Gio/Objects/ConverterOutputStream.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
Converter output stream implements 'GI.Gio.Objects.OutputStream.OutputStream' and allows
conversion of data of various types during reading.
As of GLib 2.34, 'GI.Gio.Objects.ConverterOutputStream.ConverterOutputStream' implements
'GI.Gio.Interfaces.PollableOutputStream.PollableOutputStream'.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.Gio.Objects.ConverterOutputStream
(
-- * Exported types
ConverterOutputStream(..) ,
IsConverterOutputStream ,
toConverterOutputStream ,
noConverterOutputStream ,
-- * Methods
-- ** getConverter #method:getConverter#
#if ENABLE_OVERLOADING
ConverterOutputStreamGetConverterMethodInfo,
#endif
converterOutputStreamGetConverter ,
-- ** new #method:new#
converterOutputStreamNew ,
-- * Properties
-- ** converter #attr:converter#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
ConverterOutputStreamConverterPropertyInfo,
#endif
constructConverterOutputStreamConverter ,
#if ENABLE_OVERLOADING
converterOutputStreamConverter ,
#endif
getConverterOutputStreamConverter ,
) 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.GClosure as B.GClosure
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.GI.Base.Properties as B.Properties
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GI.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.Gio.Interfaces.Converter as Gio.Converter
import {-# SOURCE #-} qualified GI.Gio.Interfaces.PollableOutputStream as Gio.PollableOutputStream
import {-# SOURCE #-} qualified GI.Gio.Objects.FilterOutputStream as Gio.FilterOutputStream
import {-# SOURCE #-} qualified GI.Gio.Objects.OutputStream as Gio.OutputStream
-- | Memory-managed wrapper type.
newtype ConverterOutputStream = ConverterOutputStream (ManagedPtr ConverterOutputStream)
foreign import ccall "g_converter_output_stream_get_type"
c_g_converter_output_stream_get_type :: IO GType
instance GObject ConverterOutputStream where
gobjectType = c_g_converter_output_stream_get_type
-- | Type class for types which can be safely cast to `ConverterOutputStream`, for instance with `toConverterOutputStream`.
class (GObject o, O.IsDescendantOf ConverterOutputStream o) => IsConverterOutputStream o
instance (GObject o, O.IsDescendantOf ConverterOutputStream o) => IsConverterOutputStream o
instance O.HasParentTypes ConverterOutputStream
type instance O.ParentTypes ConverterOutputStream = '[Gio.FilterOutputStream.FilterOutputStream, Gio.OutputStream.OutputStream, GObject.Object.Object, Gio.PollableOutputStream.PollableOutputStream]
-- | Cast to `ConverterOutputStream`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toConverterOutputStream :: (MonadIO m, IsConverterOutputStream o) => o -> m ConverterOutputStream
toConverterOutputStream = liftIO . unsafeCastTo ConverterOutputStream
-- | A convenience alias for `Nothing` :: `Maybe` `ConverterOutputStream`.
noConverterOutputStream :: Maybe ConverterOutputStream
noConverterOutputStream = Nothing
#if ENABLE_OVERLOADING
type family ResolveConverterOutputStreamMethod (t :: Symbol) (o :: *) :: * where
ResolveConverterOutputStreamMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveConverterOutputStreamMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveConverterOutputStreamMethod "canPoll" o = Gio.PollableOutputStream.PollableOutputStreamCanPollMethodInfo
ResolveConverterOutputStreamMethod "clearPending" o = Gio.OutputStream.OutputStreamClearPendingMethodInfo
ResolveConverterOutputStreamMethod "close" o = Gio.OutputStream.OutputStreamCloseMethodInfo
ResolveConverterOutputStreamMethod "closeAsync" o = Gio.OutputStream.OutputStreamCloseAsyncMethodInfo
ResolveConverterOutputStreamMethod "closeFinish" o = Gio.OutputStream.OutputStreamCloseFinishMethodInfo
ResolveConverterOutputStreamMethod "createSource" o = Gio.PollableOutputStream.PollableOutputStreamCreateSourceMethodInfo
ResolveConverterOutputStreamMethod "flush" o = Gio.OutputStream.OutputStreamFlushMethodInfo
ResolveConverterOutputStreamMethod "flushAsync" o = Gio.OutputStream.OutputStreamFlushAsyncMethodInfo
ResolveConverterOutputStreamMethod "flushFinish" o = Gio.OutputStream.OutputStreamFlushFinishMethodInfo
ResolveConverterOutputStreamMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveConverterOutputStreamMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveConverterOutputStreamMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveConverterOutputStreamMethod "hasPending" o = Gio.OutputStream.OutputStreamHasPendingMethodInfo
ResolveConverterOutputStreamMethod "isClosed" o = Gio.OutputStream.OutputStreamIsClosedMethodInfo
ResolveConverterOutputStreamMethod "isClosing" o = Gio.OutputStream.OutputStreamIsClosingMethodInfo
ResolveConverterOutputStreamMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveConverterOutputStreamMethod "isWritable" o = Gio.PollableOutputStream.PollableOutputStreamIsWritableMethodInfo
ResolveConverterOutputStreamMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveConverterOutputStreamMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveConverterOutputStreamMethod "ref" o = GObject.Object.ObjectRefMethodInfo
ResolveConverterOutputStreamMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveConverterOutputStreamMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveConverterOutputStreamMethod "splice" o = Gio.OutputStream.OutputStreamSpliceMethodInfo
ResolveConverterOutputStreamMethod "spliceAsync" o = Gio.OutputStream.OutputStreamSpliceAsyncMethodInfo
ResolveConverterOutputStreamMethod "spliceFinish" o = Gio.OutputStream.OutputStreamSpliceFinishMethodInfo
ResolveConverterOutputStreamMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveConverterOutputStreamMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveConverterOutputStreamMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveConverterOutputStreamMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
ResolveConverterOutputStreamMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveConverterOutputStreamMethod "write" o = Gio.OutputStream.OutputStreamWriteMethodInfo
ResolveConverterOutputStreamMethod "writeAll" o = Gio.OutputStream.OutputStreamWriteAllMethodInfo
ResolveConverterOutputStreamMethod "writeAllAsync" o = Gio.OutputStream.OutputStreamWriteAllAsyncMethodInfo
ResolveConverterOutputStreamMethod "writeAllFinish" o = Gio.OutputStream.OutputStreamWriteAllFinishMethodInfo
ResolveConverterOutputStreamMethod "writeAsync" o = Gio.OutputStream.OutputStreamWriteAsyncMethodInfo
ResolveConverterOutputStreamMethod "writeBytes" o = Gio.OutputStream.OutputStreamWriteBytesMethodInfo
ResolveConverterOutputStreamMethod "writeBytesAsync" o = Gio.OutputStream.OutputStreamWriteBytesAsyncMethodInfo
ResolveConverterOutputStreamMethod "writeBytesFinish" o = Gio.OutputStream.OutputStreamWriteBytesFinishMethodInfo
ResolveConverterOutputStreamMethod "writeFinish" o = Gio.OutputStream.OutputStreamWriteFinishMethodInfo
ResolveConverterOutputStreamMethod "writeNonblocking" o = Gio.PollableOutputStream.PollableOutputStreamWriteNonblockingMethodInfo
ResolveConverterOutputStreamMethod "writev" o = Gio.OutputStream.OutputStreamWritevMethodInfo
ResolveConverterOutputStreamMethod "writevAll" o = Gio.OutputStream.OutputStreamWritevAllMethodInfo
ResolveConverterOutputStreamMethod "writevAllAsync" o = Gio.OutputStream.OutputStreamWritevAllAsyncMethodInfo
ResolveConverterOutputStreamMethod "writevAllFinish" o = Gio.OutputStream.OutputStreamWritevAllFinishMethodInfo
ResolveConverterOutputStreamMethod "writevAsync" o = Gio.OutputStream.OutputStreamWritevAsyncMethodInfo
ResolveConverterOutputStreamMethod "writevFinish" o = Gio.OutputStream.OutputStreamWritevFinishMethodInfo
ResolveConverterOutputStreamMethod "writevNonblocking" o = Gio.PollableOutputStream.PollableOutputStreamWritevNonblockingMethodInfo
ResolveConverterOutputStreamMethod "getBaseStream" o = Gio.FilterOutputStream.FilterOutputStreamGetBaseStreamMethodInfo
ResolveConverterOutputStreamMethod "getCloseBaseStream" o = Gio.FilterOutputStream.FilterOutputStreamGetCloseBaseStreamMethodInfo
ResolveConverterOutputStreamMethod "getConverter" o = ConverterOutputStreamGetConverterMethodInfo
ResolveConverterOutputStreamMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveConverterOutputStreamMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveConverterOutputStreamMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveConverterOutputStreamMethod "setCloseBaseStream" o = Gio.FilterOutputStream.FilterOutputStreamSetCloseBaseStreamMethodInfo
ResolveConverterOutputStreamMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveConverterOutputStreamMethod "setPending" o = Gio.OutputStream.OutputStreamSetPendingMethodInfo
ResolveConverterOutputStreamMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveConverterOutputStreamMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveConverterOutputStreamMethod t ConverterOutputStream, O.MethodInfo info ConverterOutputStream p) => OL.IsLabel t (ConverterOutputStream -> 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
-- VVV Prop "converter"
-- Type: TInterface (Name {namespace = "Gio", name = "Converter"})
-- Flags: [PropertyReadable,PropertyWritable,PropertyConstructOnly]
-- Nullable: (Just False,Nothing)
{- |
Get the value of the “@converter@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' converterOutputStream #converter
@
-}
getConverterOutputStreamConverter :: (MonadIO m, IsConverterOutputStream o) => o -> m Gio.Converter.Converter
getConverterOutputStreamConverter obj = liftIO $ checkUnexpectedNothing "getConverterOutputStreamConverter" $ B.Properties.getObjectPropertyObject obj "converter" Gio.Converter.Converter
{- |
Construct a `GValueConstruct` with valid value for the “@converter@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructConverterOutputStreamConverter :: (IsConverterOutputStream o, Gio.Converter.IsConverter a) => a -> IO (GValueConstruct o)
constructConverterOutputStreamConverter val = B.Properties.constructObjectPropertyObject "converter" (Just val)
#if ENABLE_OVERLOADING
data ConverterOutputStreamConverterPropertyInfo
instance AttrInfo ConverterOutputStreamConverterPropertyInfo where
type AttrAllowedOps ConverterOutputStreamConverterPropertyInfo = '[ 'AttrConstruct, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint ConverterOutputStreamConverterPropertyInfo = Gio.Converter.IsConverter
type AttrBaseTypeConstraint ConverterOutputStreamConverterPropertyInfo = IsConverterOutputStream
type AttrGetType ConverterOutputStreamConverterPropertyInfo = Gio.Converter.Converter
type AttrLabel ConverterOutputStreamConverterPropertyInfo = "converter"
type AttrOrigin ConverterOutputStreamConverterPropertyInfo = ConverterOutputStream
attrGet _ = getConverterOutputStreamConverter
attrSet _ = undefined
attrConstruct _ = constructConverterOutputStreamConverter
attrClear _ = undefined
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList ConverterOutputStream
type instance O.AttributeList ConverterOutputStream = ConverterOutputStreamAttributeList
type ConverterOutputStreamAttributeList = ('[ '("baseStream", Gio.FilterOutputStream.FilterOutputStreamBaseStreamPropertyInfo), '("closeBaseStream", Gio.FilterOutputStream.FilterOutputStreamCloseBaseStreamPropertyInfo), '("converter", ConverterOutputStreamConverterPropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
converterOutputStreamConverter :: AttrLabelProxy "converter"
converterOutputStreamConverter = AttrLabelProxy
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList ConverterOutputStream = ConverterOutputStreamSignalList
type ConverterOutputStreamSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])
#endif
-- method ConverterOutputStream::new
-- method type : Constructor
-- Args : [Arg {argCName = "base_stream", argType = TInterface (Name {namespace = "Gio", name = "OutputStream"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GOutputStream", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "converter", argType = TInterface (Name {namespace = "Gio", name = "Converter"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GConverter", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "ConverterOutputStream"}))
-- throws : False
-- Skip return : False
foreign import ccall "g_converter_output_stream_new" g_converter_output_stream_new ::
Ptr Gio.OutputStream.OutputStream -> -- base_stream : TInterface (Name {namespace = "Gio", name = "OutputStream"})
Ptr Gio.Converter.Converter -> -- converter : TInterface (Name {namespace = "Gio", name = "Converter"})
IO (Ptr ConverterOutputStream)
{- |
Creates a new converter output stream for the /@baseStream@/.
-}
converterOutputStreamNew ::
(B.CallStack.HasCallStack, MonadIO m, Gio.OutputStream.IsOutputStream a, Gio.Converter.IsConverter b) =>
a
{- ^ /@baseStream@/: a 'GI.Gio.Objects.OutputStream.OutputStream' -}
-> b
{- ^ /@converter@/: a 'GI.Gio.Interfaces.Converter.Converter' -}
-> m ConverterOutputStream
{- ^ __Returns:__ a new 'GI.Gio.Objects.OutputStream.OutputStream'. -}
converterOutputStreamNew baseStream converter = liftIO $ do
baseStream' <- unsafeManagedPtrCastPtr baseStream
converter' <- unsafeManagedPtrCastPtr converter
result <- g_converter_output_stream_new baseStream' converter'
checkUnexpectedReturnNULL "converterOutputStreamNew" result
result' <- (wrapObject ConverterOutputStream) result
touchManagedPtr baseStream
touchManagedPtr converter
return result'
#if ENABLE_OVERLOADING
#endif
-- method ConverterOutputStream::get_converter
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "converter_stream", argType = TInterface (Name {namespace = "Gio", name = "ConverterOutputStream"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GConverterOutputStream", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gio", name = "Converter"}))
-- throws : False
-- Skip return : False
foreign import ccall "g_converter_output_stream_get_converter" g_converter_output_stream_get_converter ::
Ptr ConverterOutputStream -> -- converter_stream : TInterface (Name {namespace = "Gio", name = "ConverterOutputStream"})
IO (Ptr Gio.Converter.Converter)
{- |
Gets the 'GI.Gio.Interfaces.Converter.Converter' that is used by /@converterStream@/.
/Since: 2.24/
-}
converterOutputStreamGetConverter ::
(B.CallStack.HasCallStack, MonadIO m, IsConverterOutputStream a) =>
a
{- ^ /@converterStream@/: a 'GI.Gio.Objects.ConverterOutputStream.ConverterOutputStream' -}
-> m Gio.Converter.Converter
{- ^ __Returns:__ the converter of the converter output stream -}
converterOutputStreamGetConverter converterStream = liftIO $ do
converterStream' <- unsafeManagedPtrCastPtr converterStream
result <- g_converter_output_stream_get_converter converterStream'
checkUnexpectedReturnNULL "converterOutputStreamGetConverter" result
result' <- (newObject Gio.Converter.Converter) result
touchManagedPtr converterStream
return result'
#if ENABLE_OVERLOADING
data ConverterOutputStreamGetConverterMethodInfo
instance (signature ~ (m Gio.Converter.Converter), MonadIO m, IsConverterOutputStream a) => O.MethodInfo ConverterOutputStreamGetConverterMethodInfo a signature where
overloadedMethod _ = converterOutputStreamGetConverter
#endif