Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
Safe Haskell | None |
Language | Haskell2010 |
Seekable
is implemented by streams (implementations of
InputStream
or OutputStream
) that support seeking.
Seekable streams largely fall into two categories: resizable and fixed-size.
Seekable
on fixed-sized streams is approximately the same as POSIX
lseek()
on a block device (for example: attmepting to seek past the
end of the device is an error). Fixed streams typically cannot be
truncated.
Seekable
on resizable streams is approximately the same as POSIX
lseek()
on a normal file. Seeking past the end and writing data will
usually cause the stream to resize by introducing zero bytes.
- newtype Seekable = Seekable (ManagedPtr Seekable)
- noSeekable :: Maybe Seekable
- class GObject o => IsSeekable o
- toSeekable :: IsSeekable o => o -> IO Seekable
- data SeekableCanSeekMethodInfo
- seekableCanSeek :: (HasCallStack, MonadIO m, IsSeekable a) => a -> m Bool
- data SeekableCanTruncateMethodInfo
- seekableCanTruncate :: (HasCallStack, MonadIO m, IsSeekable a) => a -> m Bool
- data SeekableSeekMethodInfo
- seekableSeek :: (HasCallStack, MonadIO m, IsSeekable a, IsCancellable b) => a -> Int64 -> SeekType -> Maybe b -> m ()
- data SeekableTellMethodInfo
- seekableTell :: (HasCallStack, MonadIO m, IsSeekable a) => a -> m Int64
- data SeekableTruncateMethodInfo
- seekableTruncate :: (HasCallStack, MonadIO m, IsSeekable a, IsCancellable b) => a -> Int64 -> Maybe b -> m ()
Exported types
GObject Seekable Source # | |
IsObject Seekable Source # | |
IsSeekable Seekable Source # | |
((~) * info (ResolveSeekableMethod t Seekable), MethodInfo * info Seekable p) => IsLabel t (Seekable -> p) Source # | |
((~) * info (ResolveSeekableMethod t Seekable), MethodInfo * info Seekable p) => IsLabelProxy t (Seekable -> p) Source # | |
HasAttributeList * Seekable Source # | |
type AttributeList Seekable Source # | |
type SignalList Seekable Source # | |
class GObject o => IsSeekable o Source #
toSeekable :: IsSeekable o => o -> IO Seekable Source #
Methods
canSeek
data SeekableCanSeekMethodInfo Source #
((~) * signature (m Bool), MonadIO m, IsSeekable a) => MethodInfo * SeekableCanSeekMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsSeekable a) | |
=> a |
|
-> m Bool |
Tests if the stream supports the SeekableIface
.
canTruncate
data SeekableCanTruncateMethodInfo Source #
((~) * signature (m Bool), MonadIO m, IsSeekable a) => MethodInfo * SeekableCanTruncateMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsSeekable a) | |
=> a |
|
-> m Bool | Returns: |
Tests if the stream can be truncated.
seek
data SeekableSeekMethodInfo Source #
((~) * signature (Int64 -> SeekType -> Maybe b -> m ()), MonadIO m, IsSeekable a, IsCancellable b) => MethodInfo * SeekableSeekMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsSeekable a, IsCancellable b) | |
=> a |
|
-> Int64 |
|
-> SeekType |
|
-> Maybe b |
|
-> m () | (Can throw |
Seeks in the stream by the given offset
, modified by type
.
Attempting to seek past the end of the stream will have different results depending on if the stream is fixed-sized or resizable. If the stream is resizable then seeking past the end and then writing will result in zeros filling the empty space. Seeking past the end of a resizable stream and reading will result in EOF. Seeking past the end of a fixed-sized stream will fail.
Any operation that would result in a negative offset will fail.
If cancellable
is not Nothing
, then the operation can be cancelled by
triggering the cancellable object from another thread. If the operation
was cancelled, the error IOErrorEnumCancelled
will be returned.
tell
data SeekableTellMethodInfo Source #
((~) * signature (m Int64), MonadIO m, IsSeekable a) => MethodInfo * SeekableTellMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsSeekable a) | |
=> a |
|
-> m Int64 | Returns: the offset from the beginning of the buffer. |
Tells the current position within the stream.
truncate
data SeekableTruncateMethodInfo Source #
((~) * signature (Int64 -> Maybe b -> m ()), MonadIO m, IsSeekable a, IsCancellable b) => MethodInfo * SeekableTruncateMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsSeekable a, IsCancellable b) | |
=> a |
|
-> Int64 |
|
-> Maybe b |
|
-> m () | (Can throw |
Truncates a stream with a given offset
.
If cancellable
is not Nothing
, then the operation can be cancelled by
triggering the cancellable object from another thread. If the operation
was cancelled, the error IOErrorEnumCancelled
will be returned. If an
operation was partially finished when the operation was cancelled the
partial result will be returned, without an error.