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 <vector>
#include <regex.h>

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 CPLUSPLUS11   201103L
 CPLUSPLUS11 is the value of macro –cplusplus for C++11.
 
#define EXIV2_MAJOR_VERSION   (0)
 Exiv2 MAJOR version number of the library used at compile-time.
 
#define EXIV2_MINOR_VERSION   (26)
 Exiv2 MINOR version number of the library used at compile-time.
 
#define EXIV2_PATCH_VERSION   (0)
 Exiv2 PATCH version number of the library used at compile-time.
 
#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_CHECK_VERSION(major, minor, patch)   ( Exiv2::versionNumber() >= EXIV2_MAKE_VERSION(major,minor,patch) )
 Deprecated version check macro. Do not use. More...
 
#define EXIV2_TEST_VERSION(major, minor, patch)   ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) )
 Macro to test the version of the available 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 available at runtime as a string.
 
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.

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

Macro Definition Documentation

◆ EXIV2_CHECK_VERSION

#define EXIV2_CHECK_VERSION (   major,
  minor,
  patch 
)    ( Exiv2::versionNumber() >= EXIV2_MAKE_VERSION(major,minor,patch) )

Deprecated version check macro. Do not use.

This macro has flaws and only remains for backward compatibility. Use EXIV2_TEST_VERSION and testVersion() instead.

◆ EXIV2_TEST_VERSION

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

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

Versions are denoted using a triplet of integers: MAJOR.MINOR.PATCH .

// Don't include the <exiv2/version.hpp> file directly, it is included by
// <exiv2/types.hpp>. Early Exiv2 versions didn't have version.hpp and the macros.
#include <exiv2/types.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