## Version Information

Version Information — Compile-time and run-time version checks

## Synopsis

    #include <swfdec/swfdec.h>

    #define             SWFDEC_VERSION_MAJOR
    #define             SWFDEC_VERSION_MICRO
    #define             SWFDEC_VERSION_MINOR
    #define             SWFDEC_VERSION_ENCODE               (major, minor, micro)
    #define             SWFDEC_VERSION
    #define             SWFDEC_VERSION_STRING
    guint               swfdec_version                      (void);
    const char*         swfdec_version_string               (void);

## Description

Swfdec has a three-part version number scheme. In this scheme, we use even vs. odd numbers to distinguish fixed points in the software vs. in-progress development, (such as from git instead of a tar file, or as a "snapshot" tar file as opposed to a "release" tar file).

     _____ Major. Always 1, until we invent a new scheme.
    /  ___ Minor. Even/Odd = Release/Snapshot (tar files) or Branch/Head (git)
    | /  _ Micro. Even/Odd = Tar-file/git
    | | /
    1.0.0

Here are a few examples of versions that one might see.

    Releases
    --------
     1.0.0 - A major release
     1.0.2 - A subsequent maintenance release
     1.2.0 - Another major release

    Snapshots
    ---------
     1.1.2 - A snapshot (working toward the 1.2.0 release)

    In-progress development (eg. from git)
    --------------------------------------
     1.0.1 - Development on a maintenance branch (toward 1.0.2 release)
     1.1.1 - Development on head (toward 1.1.2 snapshot and 1.2.0 release)

### Examining the version

Swfdec provides the ability to examine the version at either compile-time or run-time and in both a human-readable form as well as an encoded form suitable for direct comparison. Swfdec also provides the macro `SWFDEC_VERSION_ENCODE()` to perform the encoding.

    Compile-time
    ------------
     SWFDEC_VERSION_STRING	Human-readable
     SWFDEC_VERSION		Encoded, suitable for comparison

    Run-time
    --------
     swfdec_version_string()	Human-readable
     swfdec_version()		Encoded, suitable for comparison

For example, checking that the Swfdec version is greater than or equal to 1.0.0 could be achieved at compile-time or run-time as follows:

    #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 0, 0)
    printf ("Compiling with suitable cairo version: %s\n", %CAIRO_VERSION_STRING);
    #endif

    if (cairo_version() >= CAIRO_VERSION_ENCODE(1, 0, 0))
      printf ("Running with suitable cairo version: %s\n", cairo_version_string ());

## Details

### SWFDEC_VERSION_MAJOR

    #define             SWFDEC_VERSION_MAJOR

The major component of the version of Swfdec available at compile-time.

### SWFDEC_VERSION_MICRO

    #define             SWFDEC_VERSION_MICRO

The micro component of the version of Swfdec available at compile-time.

### SWFDEC_VERSION_MINOR

    #define             SWFDEC_VERSION_MINOR

The minor component of the version of Swfdec available at compile-time.

### SWFDEC_VERSION_ENCODE()

    #define             SWFDEC_VERSION_ENCODE(major, minor, micro)

This macro encodes the given Swfdec version into an integer. The numbers returned by `SWFDEC_VERSION` and `swfdec_version()` are encoded using this macro. Two encoded version numbers can be compared as integers. The encoding ensures that later versions compare greater than earlier versions.

`major` : | the major component of the version number
`minor` : | the minor component of the version number
`micro` : | the micro component of the version number

### SWFDEC_VERSION

    #define             SWFDEC_VERSION

The version of Swfdec available at compile-time, encoded using `SWFDEC_VERSION_ENCODE()`.

### SWFDEC_VERSION_STRING

    #define             SWFDEC_VERSION_STRING

A human-readable string literal containing the version of Swfdec available at compile-time, in the form of "X.Y.Z".

### swfdec_version ()

    guint               swfdec_version                      (void);

Returns the version of the Swfdec library encoded in a single integer as per `SWFDEC_VERSION_ENCODE`. The encoding ensures that later versions compare greater than earlier versions.

A run-time comparison to check that Swfdec's version is greater than or equal to version X.Y.Z could be performed as follows:

    if (swfdec_version() >= CAIRO_VERSION_ENCODE(X,Y,Z)) {...}

See also `swfdec_version_string()` as well as the compile-time equivalents `SWFDEC_VERSION` and `SWFDEC_VERSION_STRING`.

Returns : | the encoded version.

### swfdec_version_string ()

    const char*         swfdec_version_string               (void);

Returns the version of the Swfdec library as a human-readable string of the form "X.Y.Z".

See also `swfdec_version()` as well as the compile-time equivalents `SWFDEC_VERSION_STRING` and `SWFDEC_VERSION`.

Returns : | a string containing the version.