# Exiv2::Iptcdatum Class Reference

Information related to one Iptc dataset. An Iptc metadatum consists of an IptcKey and a Value and provides methods to manipulate these. More...

`#include <iptc.hpp>`

Inheritance diagram for Exiv2::Iptcdatum:

[legend]
Collaboration diagram for Exiv2::Iptcdatum:

[legend]
List of all members.

## Public Member Functions

Creators
| Iptcdatum (const IptcKey &key, const Value *pValue=0)
| Constructor for new tags created by an application. The Iptcdatum is created from a key / value pair. Iptcdatum copies (clones) the value if one is provided. Alternatively, a program can create an 'empty' Iptcdatum with only a key and set the value using setValue().
| Iptcdatum (const Iptcdatum &rhs)
| Copy constructor.
virtual | ~Iptcdatum ()
| Destructor.
Manipulators
Iptcdatum & | operator= (const Iptcdatum &rhs)
| Assignment operator.
Iptcdatum & | operator= (const uint16_t &value)
| Assign value to the Iptcdatum. The type of the new Value is set to UShortValue.
Iptcdatum & | operator= (const std::string &value)
| Assign value to the Iptcdatum. Calls setValue(const std::string&).
Iptcdatum & | operator= (const Value &value)
| Assign value to the Iptcdatum. Calls setValue(const Value*).
void | setValue (const Value *pValue)
| Set the Value. This method copies (clones) the Value pointed to by pValue.
void | setValue (const std::string &value)
| Set the value to the string value, using Value::read(const std::string&). If the Iptcdatum does not have a Value yet, then a Value of the correct type for this Iptcdatum is created. If that fails (because of an unknown dataset), a StringValue is created.
Accessors
long | copy (byte *buf, ByteOrder byteOrder) const
| Write value to a data buffer and return the number of bytes written.
std::string | key () const
| Return the key of the Iptcdatum. The key is of the form 'Iptc.recordName.datasetName'. Note however that the key is not necessarily unique, i.e., an IptcData may contain multiple metadata with the same key.
std::string | recordName () const
| Return the name of the record.
uint16_t | record () const
| Return the record id.
std::string | tagName () const
| Return the name of the tag (aka dataset).
std::string | tagLabel () const
| Return a label for the tag.
uint16_t | tag () const
| Return the tag (aka dataset) number.
TypeId | typeId () const
| Return the type id of the value.
const char * | typeName () const
| Return the name of the type.
long | typeSize () const
| Return the size in bytes of one component of this type.
long | count () const
| Return the number of components in the value.
long | size () const
| Return the size of the value in bytes.
std::string | toString () const
| Return the value as a string.
long | toLong (long n=0) const
| Return the n-th component of the value converted to long. The return value is -1 if the value of the Iptcdatum is not set and the behaviour of the method is undefined if there is no n-th component.
float | toFloat (long n=0) const
| Return the n-th component of the value converted to float. The return value is -1 if the value of the Iptcdatum is not set and the behaviour of the method is undefined if there is no n-th component.
Rational | toRational (long n=0) const
| Return the n-th component of the value converted to Rational. The return value is -1/1 if the value of the Iptcdatum is not set and the behaviour of the method is undefined if there is no n-th component.
Value::AutoPtr | getValue () const
| Return an auto-pointer to a copy (clone) of the value. The caller owns this copy and the auto-pointer ensures that it will be deleted.
const Value & | value () const
| Return a constant reference to the value.

## Detailed Description

Information related to one Iptc dataset. An Iptc metadatum consists of an IptcKey and a Value and provides methods to manipulate these.

## Constructor & Destructor Documentation

Exiv2::Iptcdatum::Iptcdatum | ( | const IptcKey & | key,
|  | const Value * | pValue = `0`
| ) | `[explicit]`

Constructor for new tags created by an application. The Iptcdatum is created from a key / value pair. Iptcdatum copies (clones) the value if one is provided. Alternatively, a program can create an 'empty' Iptcdatum with only a key and set the value using setValue().

Parameters:

  | key | The key of the Iptcdatum.
  | pValue | Pointer to a Iptcdatum value.

Exceptions:

  | Error | if the key cannot be parsed and converted to a tag number and record id.

## Member Function Documentation

long Exiv2::Iptcdatum::copy | ( | byte * | buf,
|  | ByteOrder | byteOrder
| ) | const`[inline, virtual]`

Write value to a data buffer and return the number of bytes written.

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 | Applicable byte order (little or big endian).

Returns:
  Number of characters written.

Implements Exiv2::Metadatum.

Value::AutoPtr Exiv2::Iptcdatum::getValue | ( |  | ) | const`[inline, virtual]`

Return an auto-pointer to a copy (clone) of the value. The caller owns this copy and the auto-pointer ensures that it will be deleted.

This method is provided for users who need full control over the value. A caller may, e.g., downcast the pointer to the appropriate subclass of Value to make use of the interface of the subclass to set or modify its contents.

Returns:
  An auto-pointer to a copy (clone) of the value, 0 if the value is not set.

Implements Exiv2::Metadatum.

uint16_t Exiv2::Iptcdatum::record | ( |  | ) | const`[inline]`

Return the record id.

Returns:
  record id

std::string Exiv2::Iptcdatum::recordName | ( |  | ) | const`[inline]`

Return the name of the record.

Returns:
  record name

std::string Exiv2::Iptcdatum::tagName | ( |  | ) | const`[inline, virtual]`

Return the name of the tag (aka dataset).

Returns:
  tag name

Implements Exiv2::Metadatum.

const Value & Exiv2::Iptcdatum::value | ( |  | ) | const`[virtual]`

Return a constant reference to the value.

This method is provided mostly for convenient and versatile output of the value which can (to some extent) be formatted through standard stream manipulators. Do not attempt to write to the value through this reference.

Example:

              IptcData::const_iterator i = iptcData.findKey(key);
              if (i != iptcData.end()) {
                  std::cout << i->key() << " " << std::hex << i->value() << "\n";
              }

Returns:
  A constant reference to the value.

Exceptions:

  | Error | If the value is not set.

Implements Exiv2::Metadatum.

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

- iptc.hpp
- iptc.cpp