<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Exiv2: version.hpp File Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.9 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> <li> <form action="search.php" method="get"> <table cellspacing="0" cellpadding="0" border="0"> <tr> <td><label> <u>S</u>earch for </label></td> <td><input type="text" name="query" value="" size="20" accesskey="s"/></td> </tr> </table> </form> </li> </ul> </div> <div class="tabs"> <ul> <li><a href="files.html"><span>File List</span></a></li> <li><a href="globals.html"><span>File Members</span></a></li> </ul> </div> </div> <div class="contents"> <h1>version.hpp File Reference</h1>Precompiler define and a function to test the Exiv2 version. References: Similar versioning defines are used in KDE, GTK and other libraries. See <a href="http://apr.apache.org/versioning.html">http://apr.apache.org/versioning.html</a> for accompanying guidelines. <a href="#_details">More...</a> <p> <p> <div class="dynheader"> This graph shows which files directly or indirectly include this file:</div> <div class="dynsection"> <p><center><img src="version_8hpp__dep__incl.png" border="0" usemap="#version.hppdep_map" alt=""></center> <map name="version.hppdep_map"> <area shape="rect" id="node3" href="types_8hpp.html" title="Type definitions for Exiv2 and related functionality." alt="" coords="2507,80,2619,107"><area shape="rect" id="node5" href="exiv2_8hpp.html" title="Defines class Params, used for the command line handling of exiv2." alt="" coords="1747,229,1859,256"><area shape="rect" id="node9" href="image_8hpp.html" title="Class Image, defining the interface for all Image subclasses." alt="" coords="1595,528,1707,555"><area shape="rect" id="node12" href="jpgimage_8hpp.html" title="Class JpegImage to access JPEG images." alt="" coords="5,603,147,629"><area shape="rect" id="node14" href="xmpsidecar_8hpp.html" title="An Image subclass to support XMP sidecar files." alt="" coords="171,603,331,629"><area shape="rect" id="node16" href="preview_8hpp.html" title="Classes to access all preview images embedded in an image." alt="" coords="355,603,485,629"><area shape="rect" id="node18" href="bmpimage_8hpp.html" title="Windows Bitmap (BMP) image." alt="" coords="2048,603,2189,629"><area shape="rect" id="node20" href="cr2image_8hpp.html" title="Class Cr2Image." alt="" coords="509,603,651,629"><area shape="rect" id="node22" href="tiffimage__int_8hpp.html" title="Internal class TiffParserWorker to parse TIFF data." alt="" coords="4408,603,4600,629"><area shape="rect" id="node24" href="cr2image__int_8hpp.html" title="Internal classes to support CR2 image format." alt="" coords="4211,677,4392,704"><area shape="rect" id="node26" href="orfimage__int_8hpp.html" title="Internal classes to support Olympus RAW image format." alt="" coords="4416,677,4597,704"><area shape="rect" id="node28" href="rw2image__int_8hpp.html" title="Internal classes to support RW2 image format." alt="" coords="4627,677,4808,704"><area shape="rect" id="node30" href="tiffcomposite__int_8hpp.html" title="Internal classes used in a TIFF composite structure." alt="" coords="4624,603,4856,629"><area shape="rect" id="node32" href="makernote__int_8hpp.html" title="Internal Makernote TIFF composite class TiffIfdMakernote and classes for various..." alt="" coords="4844,677,5036,704"><area shape="rect" id="node34" href="crwimage_8hpp.html" title="Class CrwImage to access Canon CRW images.  References:  The Canon RAW (CRW) File..." alt="" coords="851,603,992,629"><area shape="rect" id="node36" href="crwimage__int_8hpp.html" title="Internal classes to support CRW/CIFF format." alt="" coords="1016,603,1197,629"><area shape="rect" id="node38" href="tiffimage_8hpp.html" title="Class TiffImage." alt="" coords="675,603,827,629"><area shape="rect" id="node40" href="gifimage_8hpp.html" title="GIF image, implemented using the following references: GIF89 specification by W3C..." alt="" coords="2368,603,2509,629"><area shape="rect" id="node42" href="mrwimage_8hpp.html" title="Minolta RAW image, implemented using the following references: Minolta Raw file format..." alt="" coords="1221,603,1363,629"><area shape="rect" id="node44" href="pngimage_8hpp.html" title="PNG image, implemented using the following references: PNG specification by W3C ..." alt="" coords="1387,603,1528,629"><area shape="rect" id="node46" href="rafimage_8hpp.html" title="Fujifilm RAW image." alt="" coords="1552,603,1693,629"><area shape="rect" id="node48" href="orfimage_8hpp.html" title="Olympus RAW image." alt="" coords="1717,603,1859,629"><area shape="rect" id="node50" href="psdimage_8hpp.html" title="Photoshop image, implemented using the following references: Adobe Photoshop 6.0..." alt="" coords="3863,603,4004,629"><area shape="rect" id="node52" href="tgaimage_8hpp.html" title="Truevision TARGA v2 image, implemented using the following references: Truevision..." alt="" coords="3199,603,3340,629"><area shape="rect" id="node54" href="jp2image_8hpp.html" title="JPEG-2000 image, implemented using the following references: ISO/IEC JTC 1/SC 29/WG1..." alt="" coords="2533,603,2675,629"><area shape="rect" id="node56" href="rw2image_8hpp.html" title="Class Rw2Image." alt="" coords="1883,603,2024,629"><area shape="rect" id="node58" href="basicio_8hpp.html" title="Simple binary IO abstraction." alt="" coords="1061,453,1192,480"><area shape="rect" id="node73" href="metadatum_8hpp.html" title="Provides abstract base classes Metadatum and Key." alt="" coords="2373,229,2525,256"><area shape="rect" id="node75" href="exif_8hpp.html" title="Encoding and decoding of Exif data." alt="" coords="2452,453,2553,480"><area shape="rect" id="node84" href="tiffvisitor__int_8hpp.html" title="Internal operations on a TIFF composite tree, implemented as visitor classes." alt="" coords="4072,528,4283,555"><area shape="rect" id="node86" href="tags_8hpp.html" title="Exif tag and type information." alt="" coords="2945,304,3047,331"><area shape="rect" id="node89" href="properties_8hpp.html" title="XMP property and type information. References:  XMP Specification from Adobe (Property..." alt="" coords="2203,379,2363,405"><area shape="rect" id="node91" href="xmp_8hpp.html" title="Encoding and decoding of XMP data." alt="" coords="1867,453,1957,480"><area shape="rect" id="node94" href="canonmn_8hpp.html" title="Canon makernote tags. References:  [1] EXIF MakerNote of Canon by David Burren  [2]..." alt="" coords="2589,379,2720,405"><area shape="rect" id="node96" href="fujimn_8hpp.html" title="Fujifilm MakerNote implemented according to the specification in Appendix 4: Makernote..." alt="" coords="2744,379,2864,405"><area shape="rect" id="node98" href="minoltamn_8hpp.html" title="Minolta MakerNote implemented using the following references:  Minolta Makernote..." alt="" coords="2888,379,3040,405"><area shape="rect" id="node100" href="nikonmn_8hpp.html" title="Nikon makernote tags. References:  [1] MakerNote EXIF Tag of the Nikon 990 by Max..." alt="" coords="3115,379,3245,405"><area shape="rect" id="node102" href="olympusmn_8hpp.html" title="Olympus makernote tags. References:  [1] Exif file format, Appendix 1: MakerNote..." alt="" coords="3269,379,3421,405"><area shape="rect" id="node104" href="panasonicmn_8hpp.html" title="Panasonic MakerNote implemented using the following references: Panasonic MakerNote..." alt="" coords="3445,379,3616,405"><area shape="rect" id="node106" href="pentaxmn_8hpp.html" title="Pentax MakerNote implemented according to the specification http://www.gvsoft.homedns..." alt="" coords="3640,379,3781,405"><area shape="rect" id="node108" href="sigmamn_8hpp.html" title="Sigma and Foveon MakerNote implemented according to the specification SIGMA and FOVEON..." alt="" coords="3805,379,3936,405"><area shape="rect" id="node110" href="sonymn_8hpp.html" title="Basic Sony MakerNote implementation." alt="" coords="3960,379,4080,405"><area shape="rect" id="node112" href="iptc_8hpp.html" title="Encoding and decoding of IPTC data." alt="" coords="2193,453,2295,480"><area shape="rect" id="node121" href="datasets_8hpp.html" title="IPTC dataset and type information." alt="" coords="2488,304,2629,331"><area shape="rect" id="node126" href="value_8hpp.html" title="Value interface and concrete subclasses." alt="" coords="2187,155,2299,181"><area shape="rect" id="node136" href="error_8hpp.html" title="Error class for exceptions." alt="" coords="2085,229,2197,256"><area shape="rect" id="node148" href="tifffwd__int_8hpp.html" title="Internal TIFF parser related typedefs and forward definitions." alt="" coords="4459,453,4629,480"><area shape="rect" id="node179" href="pngchunk__int_8hpp.html" title="Class PngChunk to parse PNG chunk data implemented using the following references:..." alt="" coords="4981,155,5163,181"><area shape="rect" id="node7" href="actions_8hpp.html" title="Implements base class Task, TaskFactory and the various supported actions (derived..." alt="" coords="2213,603,2344,629"></map> </div> <table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Namespaces</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceExiv2.html">Exiv2</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Provides classes and functions to encode and decode Exif and Iptc data. The <b>libexiv2</b> API consists of the objects of this namespace. <br></td></tr> <p> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9d7ce36e8573ce08d0d653f6608f5e2f"></a><!-- doxytag: member="version.hpp::EXIV2_MAJOR_VERSION" ref="9d7ce36e8573ce08d0d653f6608f5e2f" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="version_8hpp.html#9d7ce36e8573ce08d0d653f6608f5e2f">EXIV2_MAJOR_VERSION</a> (0)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Exiv2 MAJOR version number of the library used at compile-time. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0c09c19387473b4cf4139bdab514df45"></a><!-- doxytag: member="version.hpp::EXIV2_MINOR_VERSION" ref="0c09c19387473b4cf4139bdab514df45" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="version_8hpp.html#0c09c19387473b4cf4139bdab514df45">EXIV2_MINOR_VERSION</a> (18)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Exiv2 MINOR version number of the library used at compile-time. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a4be9dc2030a5a50ecc1461bfb24fa45"></a><!-- doxytag: member="version.hpp::EXIV2_PATCH_VERSION" ref="a4be9dc2030a5a50ecc1461bfb24fa45" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="version_8hpp.html#a4be9dc2030a5a50ecc1461bfb24fa45">EXIV2_PATCH_VERSION</a> (2)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Exiv2 PATCH version number of the library used at compile-time. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5d75ce8591ccba90183669df83a9b436"></a><!-- doxytag: member="version.hpp::EXIV2_MAKE_VERSION" ref="5d75ce8591ccba90183669df83a9b436" args="(major, minor, patch)" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="version_8hpp.html#5d75ce8591ccba90183669df83a9b436">EXIV2_MAKE_VERSION</a>(major, minor, patch) (((major) << 16) | ((minor) << 8) | (patch))</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Make an integer version number for comparison from a major, minor and a patch version number. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fc8ab8239dc3f8fc5e938fe54f48e5b5"></a><!-- doxytag: member="version.hpp::EXIV2_VERSION" ref="fc8ab8239dc3f8fc5e938fe54f48e5b5" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="version_8hpp.html#fc8ab8239dc3f8fc5e938fe54f48e5b5">EXIV2_VERSION</a> EXIV2_MAKE_VERSION(EXIV2_MAJOR_VERSION,EXIV2_MINOR_VERSION,EXIV2_PATCH_VERSION)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">The Exiv2 version number of the library used at compile-time as an integer number for easy comparison. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="version_8hpp.html#d0ca585932ba389302880cc482ea7d2e">EXIV2_CHECK_VERSION</a>(major, minor, patch) ( Exiv2::versionNumber() >= EXIV2_MAKE_VERSION(major,minor,patch) )</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Deprecated version check macro. Do not use. <a href="#d0ca585932ba389302880cc482ea7d2e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="version_8hpp.html#94581cdd2feca9d041e0487c24328dd3">EXIV2_TEST_VERSION</a>(major, minor, patch) ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) )</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">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. <a href="#94581cdd2feca9d041e0487c24328dd3"></a><br></td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dd349cd7b6bc3b9566d00f8d41c08fe3"></a><!-- doxytag: member="version.hpp::versionNumber" ref="dd349cd7b6bc3b9566d00f8d41c08fe3" args="()" --> EXIV2API int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceExiv2.html#dd349cd7b6bc3b9566d00f8d41c08fe3">Exiv2::versionNumber</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the version of Exiv2 available at runtime as an integer. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ed864b95392c8c3686ffffec88d7cad5"></a><!-- doxytag: member="version.hpp::version" ref="ed864b95392c8c3686ffffec88d7cad5" args="()" --> EXIV2API const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceExiv2.html#ed864b95392c8c3686ffffec88d7cad5">Exiv2::version</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the version of Exiv2 available at runtime as a string. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">EXIV2API bool </td><td class="memItemRight" valign="bottom"><a class="el" href="namespaceExiv2.html#d8d8f92acdf4d23b673225584405fba5">Exiv2::testVersion</a> (int major, int minor, int patch)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">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. <a href="#d8d8f92acdf4d23b673225584405fba5"></a><br></td></tr> </table> <hr><h2>Detailed Description</h2> Precompiler define and a function to test the Exiv2 version. References: Similar versioning defines are used in KDE, GTK and other libraries. See <a href="http://apr.apache.org/versioning.html">http://apr.apache.org/versioning.html</a> for accompanying guidelines. <p> <dl class="version" compact><dt><b>Version:</b></dt><dd></dd></dl> <dl class="rcs" compact><dt><b>Rev</b></dt><dd>1834 </dd></dl> <dl class="author" compact><dt><b>Author:</b></dt><dd>Andreas Huggel (ahu) <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a> </dd></dl> <dl class="date" compact><dt><b>Date:</b></dt><dd>31-May-06, ahu: created </dd></dl> <hr><h2>Define Documentation</h2> <a class="anchor" name="d0ca585932ba389302880cc482ea7d2e"></a><!-- doxytag: member="version.hpp::EXIV2_CHECK_VERSION" ref="d0ca585932ba389302880cc482ea7d2e" args="(major, minor, patch)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define EXIV2_CHECK_VERSION </td> <td>(</td> <td class="paramtype">major, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">minor, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">patch </td> <td class="paramname"> </td> <td> ) </td> <td> ( Exiv2::versionNumber() >= EXIV2_MAKE_VERSION(major,minor,patch) )</td> </tr> </table> </div> <div class="memdoc"> <p> Deprecated version check macro. Do not use. <p> This macro has flaws and only remains for backward compatibility. Use EXIV2_TEST_VERSION and <a class="el" href="namespaceExiv2.html#d8d8f92acdf4d23b673225584405fba5" title="Test the version of the available Exiv2 library at runtime. Return true if it is...">testVersion()</a> instead. </div> </div><p> <a class="anchor" name="94581cdd2feca9d041e0487c24328dd3"></a><!-- doxytag: member="version.hpp::EXIV2_TEST_VERSION" ref="94581cdd2feca9d041e0487c24328dd3" args="(major, minor, patch)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define EXIV2_TEST_VERSION </td> <td>(</td> <td class="paramtype">major, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">minor, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">patch </td> <td class="paramname"> </td> <td> ) </td> <td> ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) )</td> </tr> </table> </div> <div class="memdoc"> <p> 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. <p> Versions are denoted using a triplet of integers: <em>MAJOR.MINOR.PATCH</em> .<p> <div class="fragment"><pre class="fragment"> Don<span class="stringliteral">'t include the <exiv2/version.hpp> file directly, it is included by</span> <span class="stringliteral"> <exiv2/types.hpp>. Early Exiv2 versions didn'</span>t have <a class="code" href="namespaceExiv2.html#ed864b95392c8c3686ffffec88d7cad5" title="Return the version of Exiv2 available at runtime as a string.">version</a>.hpp and the macros. #include <exiv2/types.hpp> Make sure an <a class="code" href="version_8hpp.html#94581cdd2feca9d041e0487c24328dd3" title="Macro to test the version of the available Exiv2 library at compile-time. Return...">EXIV2_TEST_VERSION</a> macro exists: <span class="preprocessor"> #ifdef EXIV2_VERSION</span> <span class="preprocessor"></span><span class="preprocessor"> # ifndef EXIV2_TEST_VERSION</span> <span class="preprocessor"></span><span class="preprocessor"> # define EXIV2_TEST_VERSION(major,minor,patch) \</span> <span class="preprocessor"> ( EXIV2_VERSION >= EXIV2_MAKE_VERSION(major,minor,patch) )</span> <span class="preprocessor"></span><span class="preprocessor"> # endif</span> <span class="preprocessor"></span><span class="preprocessor"> #else</span> <span class="preprocessor"></span><span class="preprocessor"> # define EXIV2_TEST_VERSION(major,minor,patch) (false)</span> <span class="preprocessor"></span><span class="preprocessor"> #endif</span> <span class="preprocessor"></span> std::cout << <span class="stringliteral">"Compiled with Exiv2 version "</span> << EXV_PACKAGE_VERSION << <span class="stringliteral">"\n"</span> << <span class="stringliteral">"Runtime Exiv2 version is "</span> << <a class="code" href="namespaceExiv2.html#ed864b95392c8c3686ffffec88d7cad5" title="Return the version of Exiv2 available at runtime as a string.">Exiv2::version</a>() << <span class="stringliteral">"\n"</span>; Test the Exiv2 <a class="code" href="namespaceExiv2.html#ed864b95392c8c3686ffffec88d7cad5" title="Return the version of Exiv2 available at runtime as a string.">version</a> available at runtime but compile the <span class="keywordflow">if</span>-clause only <span class="keywordflow">if</span> the compile-<a class="code" href="namespaceExiv2.html#5153319711f35fe81cbc13f4b852450c8526caf002a100bd730312d45808f1b6" title="IPTC time type.">time</a> <a class="code" href="namespaceExiv2.html#ed864b95392c8c3686ffffec88d7cad5" title="Return the version of Exiv2 available at runtime as a string.">version</a> is at least 0.15. Earlier versions didn<span class="stringliteral">'t have a</span> <span class="stringliteral"> testVersion() function:</span> <span class="stringliteral"></span> <span class="stringliteral"> #if EXIV2_TEST_VERSION(0,15,0)</span> <span class="stringliteral"> if (Exiv2::testVersion(0,13,0)) {</span> <span class="stringliteral"> std::cout << "Available Exiv2 version is equal to or greater than 0.13\n";</span> <span class="stringliteral"> }</span> <span class="stringliteral"> else {</span> <span class="stringliteral"> std::cout << "Installed Exiv2 version is less than 0.13\n";</span> <span class="stringliteral"> }</span> <span class="stringliteral"> #else</span> <span class="stringliteral"> std::cout << "Compile-time Exiv2 version doesn'</span>t have <a class="code" href="namespaceExiv2.html#d8d8f92acdf4d23b673225584405fba5" title="Test the version of the available Exiv2 library at runtime. Return true if it is...">Exiv2::testVersion</a>()\n<span class="stringliteral">";</span> <span class="stringliteral"> #endif</span> </pre></div> </div> </div><p> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Thu Jun 25 15:17:40 2009 for Exiv2 by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address> </body> </html>