
Version Checking
========================================

The library has functions for checking compile-time and runtime
versions.

All versions are of the tuple (major,minor,patch). Even minor versions
indicate stable releases while odd minor versions indicate a
development release.

The compile time version information is defined in `botan/build.h`

.. c:macro:: BOTAN_VERSION_MAJOR

   The major version of the release.

.. c:macro:: BOTAN_VERSION_MINOR

   The minor version of the release.

.. c:macro:: BOTAN_VERSION_PATCH

   The patch version of the release.

.. c:macro:: BOTAN_VERSION_DATESTAMP

   Expands to an integer of the form YYYYMMDD if this is an official
   release, or 0 otherwise. For instance, 1.10.1, which was released
   on July 11, 2011, has a `BOTAN_VERSION_DATESTAMP` of 20110711.

.. c:macro:: BOTAN_DISTRIBUTION_INFO

   .. versionadded:: 1.9.3

   A macro expanding to a string that is set at build time using the
   ``--distribution-info`` option. It allows a packager of the library
   to specify any distribution-specific patches. If no value is given
   at build time, the value is 'unspecified'.

.. c:macro:: BOTAN_VERSION_VC_REVISION

   .. versionadded:: 1.10.1

   A macro expanding to a string that is set to a revision identifier
   cooresponding to the source, or 'unknown' if this could not be
   determined. It is set for all official releases and for builds that
   originated from within a Monotone workspace.

The runtime version information, and some helpers for compile time
version checks, are included in `botan/version.h`

.. cpp:function:: std::string version_string()

   Returns a single-line string containing relevant information about
   this build and version of the library in an unspecified format.

.. cpp:function:: u32bit version_major()

   Returns the major part of the version.

.. cpp:function:: u32bit version_minor()

   Returns the minor part of the version.

.. cpp:function:: u32bit version_patch()

   Returns the patch part of the version.

.. cpp:function:: u32bit version_datestamp()

   Return the datestamp of the release (or 0 if the current version is
   not an official release).

.. c:macro:: BOTAN_VERSION_CODE_FOR(maj,min,patch)

   Return a value that can be used to compare versions. The current
   (compile-time) version is available as the macro
   `BOTAN_VERSION_CODE`. For instance, to choose one code path for
   versions before 1.10 and another for 1.10 or later::

      #if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,10,0)
         // 1.10 code path
      #else
         // pre-1.10 code path
      #endif

