TagLib::IOStream Class Referenceabstract

An abstract class that provides operations on a sequence of bytes. More...

`#include <tiostream.h>`

Inheritance diagram for TagLib::IOStream:
[legend]

## Public Types

enum | Position { Beginning , Current , End }

## Public Member Functions

| IOStream ()
virtual | ~IOStream ()
| IOStream (const IOStream &)=delete
IOStream & | operator= (const IOStream &)=delete
virtual FileName | name () const =0
virtual ByteVector | readBlock (size_t length)=0
virtual void | writeBlock (const ByteVector &data)=0
virtual void | insert (const ByteVector &data, offset_t start=0, size_t replace=0)=0
virtual void | removeBlock (offset_t start=0, size_t length=0)=0
virtual bool | readOnly () const =0
virtual bool | isOpen () const =0
virtual void | seek (offset_t offset, Position p=Beginning)=0
virtual void | clear ()
virtual offset_t | tell () const =0
virtual offset_t | length ()=0
virtual void | truncate (offset_t length)=0

## Detailed Description

An abstract class that provides operations on a sequence of bytes.

## Member Enumeration Documentation

## Position

enum TagLib::IOStream::Position

Position in the file used for seeking.

Enumerator
Beginning | Seek from the beginning of the file.
Current | Seek from the current position in the file.
End | Seek from the end of the file.

## Constructor & Destructor Documentation

## IOStream() [1/2]

TagLib::IOStream::IOStream | ( |  | ) |

Referenced by IOStream(), and operator=().

## ~IOStream()

virtual TagLib::IOStream::~IOStream | ( |  | ) |

virtual

Destroys this IOStream instance.

## IOStream() [2/2]

TagLib::IOStream::IOStream | ( | const IOStream & |  | ) |

delete

References IOStream().

## Member Function Documentation

## clear()

virtual void TagLib::IOStream::clear | ( |  | ) |

virtual

Reset the end-of-stream and error flags on the stream.

Reimplemented in TagLib::ByteVectorStream, and TagLib::FileStream.

## insert()

virtual void TagLib::IOStream::insert | ( | const ByteVector & | data,
|  | offset_t | start = 0,
|  | size_t | replace = 0 )

pure virtual

Insert data at position start in the file overwriting replace bytes of the original content.

Note
  This method is slow since it requires rewriting all of the file after the insertion point.

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

## isOpen()

virtual bool TagLib::IOStream::isOpen | ( |  | ) | const

pure virtual

Since the file can currently only be opened as an argument to the constructor (sort-of by design), this returns if that open succeeded.

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

## length()

virtual offset_t TagLib::IOStream::length | ( |  | ) |

pure virtual

Returns the length of the stream.

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

Referenced by readBlock(), removeBlock(), and truncate().

## name()

virtual FileName TagLib::IOStream::name | ( |  | ) | const

pure virtual

Returns the stream name in the local file system encoding.

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

## operator=()

IOStream & TagLib::IOStream::operator= | ( | const IOStream & |  | ) |

delete

References IOStream().

## readBlock()

virtual ByteVector TagLib::IOStream::readBlock | ( | size_t | length | ) |

pure virtual

Reads a block of size length at the current get pointer.

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

References length().

## readOnly()

virtual bool TagLib::IOStream::readOnly | ( |  | ) | const

pure virtual

Returns `true` if the file is read only (or if the file can not be opened).

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

## removeBlock()

virtual void TagLib::IOStream::removeBlock | ( | offset_t | start = 0,
|  | size_t | length = 0 )

pure virtual

Removes a block of the file starting a start and continuing for length bytes.

Note
  This method is slow since it involves rewriting all of the file after the removed portion.

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

References length().

## seek()

virtual void TagLib::IOStream::seek | ( | offset_t | offset,
|  | Position | p = Beginning )

pure virtual

Move the I/O pointer to offset in the stream from position p. This defaults to seeking from the beginning of the stream.

See also
  Position

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

References Beginning.

## tell()

virtual offset_t TagLib::IOStream::tell | ( |  | ) | const

pure virtual

Returns the current offset within the stream.

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

## truncate()

virtual void TagLib::IOStream::truncate | ( | offset_t | length | ) |

pure virtual

Truncates the stream to a length.

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

References length(), and TAGLIB_MSVC_SUPPRESS_WARNING_NEEDS_TO_HAVE_DLL_INTERFACE.

## writeBlock()

virtual void TagLib::IOStream::writeBlock | ( | const ByteVector & | data | ) |

pure virtual

Attempts to write the block data at the current get pointer. If the file is currently only opened read only – i.e. readOnly() returns `true` – this attempts to reopen the file in read/write mode.

Note
  This should be used instead of using the streaming output operator for a ByteVector. And even this function is significantly slower than doing output with a char[].

Implemented in TagLib::ByteVectorStream, and TagLib::FileStream.

The documentation for this class was generated from the following file:

- tiostream.h