# value.hpp File Reference

Value interface and concrete subclasses. More...

`#include "types.hpp"`
`#include <string>`
`#include <vector>`
`#include <iostream>`
`#include <sstream>`
`#include <memory>`

Include dependency graph for value.hpp:

This graph shows which files directly or indirectly include this file:

## Namespaces

namespace | Exiv2

## Classes

class | Exiv2::Value
| Common interface for all types of values used with metadata. More...
class | Exiv2::DataValue
| Value for an undefined data type. More...
class | Exiv2::StringValueBase
| Abstract base class for a string based Value type. More...
class | Exiv2::StringValue
| Value for string type. More...
class | Exiv2::AsciiValue
| Value for an Ascii string type. More...
class | Exiv2::CommentValue
| Value for an Exif comment. More...
struct | Exiv2::CommentValue::CharsetTable
| Information pertaining to the defined character sets. More...
class | Exiv2::CommentValue::CharsetInfo
| Charset information lookup functions. Implemented as a static class. More...
class | Exiv2::DateValue
| Value for simple ISO 8601 dates More...
struct | Exiv2::DateValue::Date
| Simple Date helper structure. More...
class | Exiv2::TimeValue
| Value for simple ISO 8601 times. More...
struct | Exiv2::TimeValue::Time
| Simple Time helper structure. More...
class | Exiv2::ValueType< T >
| Template for a Value of a basic type. This is used for unsigned and signed short, long and rationals. More...

## Typedefs

typedef ValueType< uint16_t > | Exiv2::UShortValue
| Unsigned short value type.
typedef ValueType< uint32_t > | Exiv2::ULongValue
| Unsigned long value type.
typedef ValueType< URational > | Exiv2::URationalValue
| Unsigned rational value type.
typedef ValueType< int16_t > | Exiv2::ShortValue
| Signed short value type.
typedef ValueType< int32_t > | Exiv2::LongValue
| Signed long value type.
typedef ValueType< Rational > | Exiv2::RationalValue
| Signed rational value type.

## Functions

std::ostream & | Exiv2::operator<< (std::ostream &os, const Value &value)
| Output operator for Value types.
template<typename T>
TypeId | Exiv2::getType ()
| Template to determine the TypeId for a type T.
template<>
TypeId | Exiv2::getType< uint16_t > ()
| Specialization for an unsigned short.
template<>
TypeId | Exiv2::getType< uint32_t > ()
| Specialization for an unsigned long.
template<>
TypeId | Exiv2::getType< URational > ()
| Specialization for an unsigned rational.
template<>
TypeId | Exiv2::getType< int16_t > ()
| Specialization for a signed short.
template<>
TypeId | Exiv2::getType< int32_t > ()
| Specialization for a signed long.
template<>
TypeId | Exiv2::getType< Rational > ()
| Specialization for a signed rational.
template<typename T>
T | Exiv2::getValue (const byte *buf, ByteOrder byteOrder)
| Read a value of type T from the data buffer.
template<typename T>
long | Exiv2::toData (byte *buf, T t, ByteOrder byteOrder)
| Convert a value of type T to data, write the data to the data buffer.
template<>
long | Exiv2::toData (byte *buf, uint16_t t, ByteOrder byteOrder)
| Specialization to write an unsigned short to the data buffer. Return the number of bytes written.
template<>
long | Exiv2::toData (byte *buf, uint32_t t, ByteOrder byteOrder)
| Specialization to write an unsigned long to the data buffer. Return the number of bytes written.
template<>
long | Exiv2::toData (byte *buf, URational t, ByteOrder byteOrder)
| Specialization to write an unsigned rational to the data buffer. Return the number of bytes written.
template<>
long | Exiv2::toData (byte *buf, int16_t t, ByteOrder byteOrder)
| Specialization to write a signed short to the data buffer. Return the number of bytes written.
template<>
long | Exiv2::toData (byte *buf, int32_t t, ByteOrder byteOrder)
| Specialization to write a signed long to the data buffer. Return the number of bytes written.
template<>
long | Exiv2::toData (byte *buf, Rational t, ByteOrder byteOrder)
| Specialization to write a signed rational to the data buffer. Return the number of bytes written.

## Detailed Description

Value interface and concrete subclasses.

Version:
  Rev
    560

Author:
  Andreas Huggel (ahu) ahuggel@gmx.net

Date:
  09-Jan-04, ahu: created 11-Feb-04, ahu: isolated as a component 31-Jul-04, brad: added Time, Data and String values