# HG changeset patch # User nadvornik # Date 1210968572 0 # Node ID 3a4a7385997c9dab76fcbf285b3bdc1c16e3474b # Parent cca86176bf819055b7646e1589ab1a9e5c34eb2b get processed values from exiv2 http://sourceforge.net/tracker/index.php?func=detail&aid=1962444&group_id=222125&atid=1054680 diff -r cca86176bf81 -r 3a4a7385997c src/exiv2.cc --- a/src/exiv2.cc Fri May 16 14:59:45 2008 +0000 +++ b/src/exiv2.cc Fri May 16 20:09:32 2008 +0000 @@ -446,10 +446,25 @@ { try { if (!item) return NULL; -// std::stringstream str; // does not work with Exiv2::Metadatum because operator<< is not virtual -// str << *((Exiv2::Metadatum *)item); -// return g_strdup(str.str().c_str()); - return g_strdup(((Exiv2::Metadatum *)item)->toString().c_str()); + Exiv2::Metadatum *metadatum = (Exiv2::Metadatum *)item; +#if EXIV2_TEST_VERSION(0,16,0) + return g_strdup(metadatum->print().c_str()); +#else + std::stringstream str; + Exiv2::Exifdatum *exifdatum; + Exiv2::Iptcdatum *iptcdatum; + Exiv2::Xmpdatum *xmpdatum; + if ((exifdatum = dynamic_cast(metadatum))) + str << *exifdatum; + else if ((iptcdatum = dynamic_cast(metadatum))) + str << *iptcdatum; +#if EXIV2_TEST_VERSION(0,16,0) + else if ((xmpdatum = dynamic_cast(metadatum))) + str << *xmpdatum; +#endif + + return g_strdup(str.str().c_str()); +#endif } catch (Exiv2::AnyError& e) { return NULL;