version.hpp File Reference

Precompiler define and a function to test the Exiv2 version. References: Similar versioning defines are used in KDE, GTK and other libraries. See http://apr.apache.org/versioning.html for accompanying guidelines. More...

#include "exv_conf.h"
#include "exiv2lib_export.h"
#include <vector>

Classes

struct  Exiv2_grep_key_t
 exv_grep_key_t is a simple string and the ignore flag More...
 

Namespaces

 Exiv2
 Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of the objects of this namespace.
 

Macros

#define EXIV2_MAKE_VERSION(major, minor, patch)   (((major) << 16) | ((minor) << 8) | (patch))
 Make an integer version number for comparison from a major, minor and a patch version number.
 
#define EXIV2_VERSION   EXIV2_MAKE_VERSION(EXIV2_MAJOR_VERSION,EXIV2_MINOR_VERSION,EXIV2_PATCH_VERSION)
 The Exiv2 version number of the library used at compile-time as an integer number for easy comparison.
 
#define EXIV2_TEST_VERSION(major, minor, patch)   ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) )
 Macro to test the version the Exiv2 library at compile-time. Return true if it is the same as or newer than the passed-in version. More...
 

Typedefs

typedef std::vector< Exiv2_grep_key_texv_grep_keys_t
 exv_grep_keys_t is a vector of keys to match to strings
 

Functions

EXIV2API int Exiv2::versionNumber ()
 Return the version of Exiv2 available at runtime as an integer.
 
EXIV2API std::string Exiv2::versionString ()
 Return the version string Example: "0.25.0" (major.minor.patch)
 
EXIV2API std::string Exiv2::versionNumberHexString ()
 Return the version of Exiv2 as hex string of fixed length 6.
 
EXIV2API const char * Exiv2::version ()
 Return the version of Exiv2 as "C" string eg "0.27.0.2".
 
EXIV2API bool Exiv2::testVersion (int major, int minor, int patch)
 Test the version of the available Exiv2 library at runtime. Return true if it is the same as or newer than the passed-in version. More...
 
EXIV2API void Exiv2::dumpLibraryInfo (std::ostream &os, const exv_grep_keys_t &keys)
 dumpLibraryInfo implements the exiv2 option –version –verbose used by exiv2 test suite to inspect libraries loaded at run-time
 

Detailed Description

Precompiler define and a function to test the Exiv2 version. References: Similar versioning defines are used in KDE, GTK and other libraries. See http://apr.apache.org/versioning.html for accompanying guidelines.

Author
Andreas Huggel (ahu) ahuggel@gmx.net
Date
31-May-06, ahu: created

Macro Definition Documentation

◆ EXIV2_TEST_VERSION

#define EXIV2_TEST_VERSION (   major,
  minor,
  patch 
)    ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) )

Macro to test the version the Exiv2 library at compile-time. Return true if it is the same as or newer than the passed-in version.

Versions prior to v0.27 are denoted using a triplet of integers: MAJOR.MINOR.PATCH . From v0.27 forward, the fourth digit is a "tweak" and designates the pre-release number of the version.

// Application code is expected to include <exiv2/exiv2.hpp>
// Don't include the <exiv2/version.hpp> file directly
// Early Exiv2 versions didn't have version.hpp and the macros.
#include <exiv2/exiv2.hpp>
// Make sure an EXIV2_TEST_VERSION macro exists:
#ifdef EXIV2_VERSION
# ifndef EXIV2_TEST_VERSION
# define EXIV2_TEST_VERSION(major,minor,patch) \
( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) )
# endif
#else
# define EXIV2_TEST_VERSION(major,minor,patch) (false)
#endif
std::cout << "Compiled with Exiv2 version " << EXV_PACKAGE_VERSION << "\n"
<< "Runtime Exiv2 version is " << Exiv2::version() << "\n";
// Test the Exiv2 version available at runtime but compile the if-clause only if
// the compile-time version is at least 0.15. Earlier versions didn't have a
// testVersion() function:
#if EXIV2_TEST_VERSION(0,15,0)
if (Exiv2::testVersion(0,13,0)) {
std::cout << "Available Exiv2 version is equal to or greater than 0.13\n";
}
else {
std::cout << "Installed Exiv2 version is less than 0.13\n";
}
#else
std::cout << "Compile-time Exiv2 version doesn't have Exiv2::testVersion()\n";
#endif