gi-gio-2.0.35: Gio bindings

Copyright | Will Thompson and Iñaki García Etxebarria
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria
Safe Haskell | Safe-Inferred
Language | Haskell2010

GI.Gio.Interfaces.Seekable

Contents

- Exported types
- Methods
  - canSeek
  - canTruncate
  - seek
  - tell
  - truncate

Description

`GSeekable` is implemented by streams (implementations of `InputStream` or `OutputStream`) that support seeking.

Seekable streams largely fall into two categories: resizable and fixed-size.

`GSeekable` on fixed-sized streams is approximately the same as POSIX `lseek()`) on a block device (for example: attempting to seek past the end of the device is an error). Fixed streams typically cannot be truncated.

`GSeekable` 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.

Synopsis

- newtype Seekable = Seekable (ManagedPtr Seekable)
- class (GObject o, IsDescendantOf Seekable o) => IsSeekable o
- toSeekable :: (MonadIO m, IsSeekable o) => o -> m Seekable
- seekableCanSeek :: (HasCallStack, MonadIO m, IsSeekable a) => a -> m Bool
- seekableCanTruncate :: (HasCallStack, MonadIO m, IsSeekable a) => a -> m Bool
- seekableSeek :: (HasCallStack, MonadIO m, IsSeekable a, IsCancellable b) => a -> Int64 -> SeekType -> Maybe b -> m ()
- seekableTell :: (HasCallStack, MonadIO m, IsSeekable a) => a -> m Int64
- seekableTruncate :: (HasCallStack, MonadIO m, IsSeekable a, IsCancellable b) => a -> Int64 -> Maybe b -> m ()

# Exported types

newtype Seekable Source #

Memory-managed wrapper type.

Constructors

Seekable (ManagedPtr Seekable) |

#### Instances

Instances details

Eq Seekable Source # |
Instance details Defined in GI.Gio.Interfaces.Seekable Methods (==) :: Seekable -> Seekable -> Bool Source # (/=) :: Seekable -> Seekable -> Bool Source #
GObject Seekable Source # |
Instance details Defined in GI.Gio.Interfaces.Seekable
ManagedPtrNewtype Seekable Source # |
Instance details Defined in GI.Gio.Interfaces.Seekable Methods toManagedPtr :: Seekable -> ManagedPtr Seekable Source #
TypedObject Seekable Source # |
Instance details Defined in GI.Gio.Interfaces.Seekable Methods glibType :: IO GType Source #
HasParentTypes Seekable Source # |
Instance details Defined in GI.Gio.Interfaces.Seekable
IsGValue (Maybe Seekable) Source # | Convert `Seekable` to and from `GValue`. See `toGValue` and `fromGValue`.
Instance details Defined in GI.Gio.Interfaces.Seekable Methods gvalueGType_ :: IO GType Source # gvalueSet_ :: Ptr GValue -> Maybe Seekable -> IO () Source # gvalueGet_ :: Ptr GValue -> IO (Maybe Seekable) Source #
type ParentTypes Seekable Source # |
Instance details Defined in GI.Gio.Interfaces.Seekable type ParentTypes Seekable = '[Object]

class (GObject o, IsDescendantOf Seekable o) => IsSeekable o Source #

Type class for types which can be safely cast to `Seekable`, for instance with `toSeekable`.

#### Instances

Instances details

(GObject o, IsDescendantOf Seekable o) => IsSeekable o Source # |
Instance details Defined in GI.Gio.Interfaces.Seekable

toSeekable :: (MonadIO m, IsSeekable o) => o -> m Seekable Source #

Cast to `Seekable`, for types for which this is known to be safe. For general casts, use `castTo`.

# Methods

### Click to display all available methods, including inherited ones

Expand

#### Methods

bindProperty, bindPropertyFull, canSeek, canTruncate, forceFloating, freezeNotify, getv, isFloating, notify, notifyByPspec, ref, refSink, runDispose, seek, stealData, stealQdata, tell, thawNotify, truncate, unref, watchClosure.

#### Getters

getData, getProperty, getQdata.

#### Setters

setData, setDataFull, setProperty.

## canSeek

seekableCanSeek Source #

Arguments

:: (HasCallStack, MonadIO m, IsSeekable a) |
=> a | `seekable`: a `Seekable`.
-> m Bool | Returns: `True` if `seekable` can be seeked. `False` otherwise.

Tests if the stream supports the `SeekableIface`.

## canTruncate

seekableCanTruncate Source #

Arguments

:: (HasCallStack, MonadIO m, IsSeekable a) |
=> a | `seekable`: a `Seekable`.
-> m Bool | Returns: `True` if the stream can be truncated, `False` otherwise.

Tests if the length of the stream can be adjusted with `seekableTruncate`.

## seek

seekableSeek Source #

Arguments

:: (HasCallStack, MonadIO m, IsSeekable a, IsCancellable b) |
=> a | `seekable`: a `Seekable`.
-> Int64 | `offset`: a `goffset`.
-> SeekType | `type`: a `SeekType`.
-> Maybe b | `cancellable`: optional `Cancellable` object, `Nothing` to ignore.
-> m () | (Can throw `GError`)

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

seekableTell Source #

Arguments

:: (HasCallStack, MonadIO m, IsSeekable a) |
=> a | `seekable`: a `Seekable`.
-> m Int64 | Returns: the (positive or zero) offset from the beginning of the buffer, zero if the target is not seekable.

Tells the current position within the stream.

## truncate

seekableTruncate Source #

Arguments

:: (HasCallStack, MonadIO m, IsSeekable a, IsCancellable b) |
=> a | `seekable`: a `Seekable`.
-> Int64 | `offset`: new length for `seekable`, in bytes.
-> Maybe b | `cancellable`: optional `Cancellable` object, `Nothing` to ignore.
-> m () | (Can throw `GError`)

Sets the length of the stream to `offset`. If the stream was previously larger than `offset`, the extra data is discarded. If the stream was previously shorter than `offset`, it is extended with NUL ('\0') bytes.

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.