| Exiv2

Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
Exiv2::DataValue Class Reference

Value for an undefined data type. More...

`#include <value.hpp>`

Inheritance diagram for Exiv2::DataValue:
[legend]

## Public Types
using | UniquePtr = std::unique_ptr<DataValue>
| Shortcut for a DataValue auto pointer.
Public Types inherited from Exiv2::Value
using | UniquePtr = std::unique_ptr<Value>
| Shortcut for a Value auto pointer.

## Public Member Functions
| DataValue (TypeId typeId=undefined)
| DataValue (const byte *buf, size_t len, ByteOrder byteOrder=invalidByteOrder, TypeId typeId=undefined)
Manipulators
int | read (const byte *buf, size_t len, ByteOrder byteOrder=invalidByteOrder) override
| Read the value from a character buffer.
int | read (const std::string &buf) override
| Set the data from a string of integer values (e.g., "0 1 2 3").
Public Member Functions inherited from Exiv2::Value
| Value (TypeId typeId)
| Constructor, taking a type id to initialize the base class with.
virtual | ~Value ()=default
| Virtual destructor.
virtual int | setDataArea (const byte *buf, size_t len)
| Set the data area, if the value has one by copying (cloning) the buffer pointed to by buf.
TypeId | typeId () const
| Return the type identifier (Exif data format type).
UniquePtr | clone () const
| Return an auto-pointer to a copy of itself (deep copy). The caller owns this copy and the auto-pointer ensures that it will be deleted.
std::string | toString () const
| Return the value as a string. Implemented in terms of write(std::ostream& os) const of the concrete class.
virtual size_t | sizeDataArea () const
| Return the size of the data area, 0 if there is none.
virtual DataBuf | dataArea () const
| Return a copy of the data area if the value has one. The caller owns this copy and DataBuf ensures that it will be deleted.
bool | ok () const
| Check the ok status indicator. After a to<Type> conversion, this indicator shows whether the conversion was successful.

## Accessors
using | ValueType = std::vector<byte>
| Type used to store the data.
ValueType | value_
| Stores the data value.
UniquePtr | clone () const
size_t | copy (byte *buf, ByteOrder byteOrder=invalidByteOrder) const override
| Write value to a character data buffer.
size_t | count () const override
| Return the number of components of the value.
size_t | size () const override
| Return the size of the value in bytes.
std::ostream & | write (std::ostream &os) const override
| Write the value to an output stream. You do not usually have to use this function; it is used for the implementation of the output operator for Value, operator<<(std::ostream &os, const Value &value).
std::string | toString (size_t n) const override
| Return the n-th component of the value as a string. The behaviour of this method may be undefined if there is no n-th component.
int64_t | toInt64 (size_t n=0) const override
| Convert the n-th component of the value to an int64_t. The behaviour of this method may be undefined if there is no n-th component.
uint32_t | toUint32 (size_t n=0) const override
| Convert the n-th component of the value to a float. The behaviour of this method may be undefined if there is no n-th component.
float | toFloat (size_t n=0) const override
| Convert the n-th component of the value to a float. The behaviour of this method may be undefined if there is no n-th component.
Rational | toRational (size_t n=0) const override
| Convert the n-th component of the value to a Rational. The behaviour of this method may be undefined if there is no n-th component.

## Additional Inherited Members
static UniquePtr | create (TypeId typeId)
| A (simple) factory to create a Value type.
| Value (const Value &)=default
Value & | operator= (const Value &)=default
| Assignment operator. Protected so that it can only be used by subclasses but not directly.
bool | ok_ {true}
| Indicates the status of the previous to<Type> conversion.

## Detailed Description

Value for an undefined data type.

## Member Function Documentation

## ◆ copy()

size_t Exiv2::DataValue::copy | ( | byte * | buf,
|  | ByteOrder | byteOrder = invalidByteOrder ) const
| override virtual

Write value to a character data buffer.

Note
  The byte order is required by the interface but not used by this method, so just use the default.

The user must ensure that the buffer has enough memory. Otherwise the call results in undefined behaviour.

Parameters

  buf | Data buffer to write to.
  byteOrder | Byte order. Not needed.

Returns
  Number of characters written.

Implements Exiv2::Value.

References value_.

## ◆ count()

size_t Exiv2::DataValue::count | ( |  | ) | const
| override virtual

Return the number of components of the value.

Implements Exiv2::Value.

References size().

## ◆ read() [1/2]

int Exiv2::DataValue::read | ( | const byte * | buf,
|  | size_t | len,
|  | ByteOrder | byteOrder = invalidByteOrder )
| override virtual

Read the value from a character buffer.

Parameters

  buf | Pointer to the data buffer to read from
  len | Number of bytes in the data buffer
  byteOrder | Applicable byte order (little or big endian).

Returns
  0 if successful.

Implements Exiv2::Value.

References value_.

## ◆ read() [2/2]

int Exiv2::DataValue::read | ( | const std::string & | buf | ) |
| override virtual

Set the data from a string of integer values (e.g., "0 1 2 3").

Implements Exiv2::Value.

References value_.

## ◆ size()

size_t Exiv2::DataValue::size | ( |  | ) | const
| override virtual

Return the size of the value in bytes.

Implements Exiv2::Value.

References value_.

Referenced by count().

## ◆ toFloat()

float Exiv2::DataValue::toFloat | ( | size_t | n = 0 | ) | const
| override virtual

Convert the n-th component of the value to a float. The behaviour of this method may be undefined if there is no n-th component.

Returns
  The converted value.

Implements Exiv2::Value.

References Exiv2::Value::ok_, and value_.

## ◆ toInt64()

int64_t Exiv2::DataValue::toInt64 | ( | size_t | n = 0 | ) | const
| override virtual

Convert the n-th component of the value to an int64_t. The behaviour of this method may be undefined if there is no n-th component.

Returns
  The converted value.

Implements Exiv2::Value.

References Exiv2::Value::ok_, and value_.

## ◆ toRational()

Rational Exiv2::DataValue::toRational | ( | size_t | n = 0 | ) | const
| override virtual

Convert the n-th component of the value to a Rational. The behaviour of this method may be undefined if there is no n-th component.

Returns
  The converted value.

Implements Exiv2::Value.

References Exiv2::Value::ok_, and value_.

## ◆ toString()

std::string Exiv2::DataValue::toString | ( | size_t | n | ) | const
| override virtual

Return the n-th component of the value as a string. The behaviour of this method may be undefined if there is no n-th component.

Reimplemented from Exiv2::Value.

References Exiv2::Value::ok_, and value_.

## ◆ toUint32()

uint32_t Exiv2::DataValue::toUint32 | ( | size_t | n = 0 | ) | const
| override virtual

Convert the n-th component of the value to a float. The behaviour of this method may be undefined if there is no n-th component.

Returns
  The converted value.

Implements Exiv2::Value.

References Exiv2::Value::ok_, and value_.

## ◆ write()

std::ostream & Exiv2::DataValue::write | ( | std::ostream & | os | ) | const
| override virtual

Write the value to an output stream. You do not usually have to use this function; it is used for the implementation of the output operator for Value, operator<<(std::ostream &os, const Value &value).

Implements Exiv2::Value.

References value_.

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

- value.hpp
- value.cpp