Value for an undefined data type. More...
#include <value.hpp>
Public Types | |
using UniquePtr = std::unique_ptr< DataValue > | |
Shortcut for a DataValue auto pointer. | |
![]() | |
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") | |
![]() | |
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 | |
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. |
Value for an undefined data type.
|
overridevirtual |
Write value to a character data buffer.
The user must ensure that the buffer has enough memory. Otherwise the call results in undefined behaviour.
buf | Data buffer to write to. |
byteOrder | Byte order. Not needed. |
Implements Exiv2::Value.
|
overridevirtual |
Return the number of components of the value.
Implements Exiv2::Value.
|
overridevirtual |
Read the value from a character buffer.
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). |
Implements Exiv2::Value.
|
overridevirtual |
Set the data from a string of integer values (e.g., "0 1 2 3")
Implements Exiv2::Value.
|
overridevirtual |
Return the size of the value in bytes.
Implements Exiv2::Value.
|
overridevirtual |
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.
Implements Exiv2::Value.
|
overridevirtual |
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.
Implements Exiv2::Value.
|
overridevirtual |
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.
Implements Exiv2::Value.
|
overridevirtual |
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.
|
overridevirtual |
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.
Implements Exiv2::Value.
|
overridevirtual |
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.