From: Uwe Hermann Date: Wed, 12 Mar 2014 18:30:55 +0000 (+0100) Subject: Add runtime version querying functions. X-Git-Tag: libserialport-0.1.0~8 X-Git-Url: https://sigrok.org/gitweb/?p=libserialport.git;a=commitdiff_plain;h=524b0e1454ad80c2f9c5840137324ab31941e589 Add runtime version querying functions. This fixes bug #282. --- diff --git a/libserialport.h.in b/libserialport.h.in index 7c18af5..43d16a1 100644 --- a/libserialport.h.in +++ b/libserialport.h.in @@ -89,18 +89,6 @@ extern "C" { #include #endif -/* Package version macros (e.g. for conditional compilation). */ -#define SP_PACKAGE_VERSION_MAJOR @SP_PACKAGE_VERSION_MAJOR@ -#define SP_PACKAGE_VERSION_MINOR @SP_PACKAGE_VERSION_MINOR@ -#define SP_PACKAGE_VERSION_MICRO @SP_PACKAGE_VERSION_MICRO@ -#define SP_PACKAGE_VERSION_STRING "@SP_PACKAGE_VERSION@" - -/* Library/libtool version macros (e.g. for conditional compilation). */ -#define SP_LIB_VERSION_CURRENT @SP_LIB_VERSION_CURRENT@ -#define SP_LIB_VERSION_REVISION @SP_LIB_VERSION_REVISION@ -#define SP_LIB_VERSION_AGE @SP_LIB_VERSION_AGE@ -#define SP_LIB_VERSION_STRING "@SP_LIB_VERSION@" - /** Return values. */ enum sp_return { /** Operation completed successfully. */ @@ -1070,6 +1058,132 @@ void sp_default_debug_handler(const char *format, ...); /** @} */ +/** + * @defgroup Versions Version number querying functions, definitions, and macros + * + * This set of API calls returns two different version numbers related + * to libserialport. The "package version" is the release version number of the + * libserialport tarball in the usual "major.minor.micro" format, e.g. "0.1.0". + * + * The "library version" is independent of that; it is the libtool version + * number in the "current:revision:age" format, e.g. "2:0:0". + * See http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning for details. + * + * Both version numbers (and/or individual components of them) can be + * retrieved via the API calls at runtime, and/or they can be checked at + * compile/preprocessor time using the respective macros. + * + * @{ + */ + +/* + * Package version macros (can be used for conditional compilation). + */ + +/** The libserialport package 'major' version number. */ +#define SP_PACKAGE_VERSION_MAJOR @SP_PACKAGE_VERSION_MAJOR@ + +/** The libserialport package 'minor' version number. */ +#define SP_PACKAGE_VERSION_MINOR @SP_PACKAGE_VERSION_MINOR@ + +/** The libserialport package 'micro' version number. */ +#define SP_PACKAGE_VERSION_MICRO @SP_PACKAGE_VERSION_MICRO@ + +/** The libserialport package version ("major.minor.micro") as string. */ +#define SP_PACKAGE_VERSION_STRING "@SP_PACKAGE_VERSION@" + +/* + * Library/libtool version macros (can be used for conditional compilation). + */ + +/** The libserialport libtool 'current' version number. */ +#define SP_LIB_VERSION_CURRENT @SP_LIB_VERSION_CURRENT@ + +/** The libserialport libtool 'revision' version number. */ +#define SP_LIB_VERSION_REVISION @SP_LIB_VERSION_REVISION@ + +/** The libserialport libtool 'age' version number. */ +#define SP_LIB_VERSION_AGE @SP_LIB_VERSION_AGE@ + +/** The libserialport libtool version ("current:revision:age") as string. */ +#define SP_LIB_VERSION_STRING "@SP_LIB_VERSION@" + +/** + * Get the major libserialport package version number. + * + * @return The major package version number. + * + * @since 0.1.0 + */ +int sp_get_major_package_version(void); + +/** + * Get the minor libserialport package version number. + * + * @return The minor package version number. + * + * @since 0.1.0 + */ +int sp_get_minor_package_version(void); + +/** + * Get the micro libserialport package version number. + * + * @return The micro package version number. + * + * @since 0.1.0 + */ +int sp_get_micro_package_version(void); + +/** + * Get the libserialport package version number as a string. + * + * @return The package version number string. The returned string is + * static and thus should NOT be free'd by the caller. + * + * @since 0.1.0 + */ +const char *sp_get_package_version_string(void); + +/** + * Get the "current" part of the libserialport library version number. + * + * @return The "current" library version number. + * + * @since 0.1.0 + */ +int sp_get_current_lib_version(void); + +/** + * Get the "revision" part of the libserialport library version number. + * + * @return The "revision" library version number. + * + * @since 0.1.0 + */ +int sp_get_revision_lib_version(void); + +/** + * Get the "age" part of the libserialport library version number. + * + * @return The "age" library version number. + * + * @since 0.1.0 + */ +int sp_get_age_lib_version(void); + +/** + * Get the libserialport library version number as a string. + * + * @return The library version number string. The returned string is + * static and thus should NOT be free'd by the caller. + * + * @since 0.1.0 + */ +const char *sp_get_lib_version_string(void); + +/** @} */ + #ifdef __cplusplus } #endif diff --git a/serialport.c b/serialport.c index 12cb529..8393797 100644 --- a/serialport.c +++ b/serialport.c @@ -2471,3 +2471,45 @@ void sp_default_debug_handler(const char *format, ...) } va_end(args); } + +int sp_get_major_package_version(void) +{ + return SP_PACKAGE_VERSION_MAJOR; +} + +int sp_get_minor_package_version(void) +{ + return SP_PACKAGE_VERSION_MINOR; +} + +int sp_get_micro_package_version(void) +{ + return SP_PACKAGE_VERSION_MICRO; +} + +const char *sp_get_package_version_string(void) +{ + return SP_PACKAGE_VERSION_STRING; +} + +int sp_get_current_lib_version(void) +{ + return SP_LIB_VERSION_CURRENT; +} + +int sp_get_revision_lib_version(void) +{ + return SP_LIB_VERSION_REVISION; +} + +int sp_get_age_lib_version(void) +{ + return SP_LIB_VERSION_AGE; +} + +const char *sp_get_lib_version_string(void) +{ + return SP_LIB_VERSION_STRING; +} + +/** @} */