rework header/library versioning

this replaces the changes in Issue #53 with a slightly different way of
representing / retrieving the version number.

protobuf_c_version() returns the version of the *library* as a string.

protobuf_c_version_number() returns the version of the *library* as an
integer.

PROTOBUF_C_VERSION is the version of the *headers* as a string constant.

PROTOBUF_C_VERSION_NUMBER is the version of the *headers* as an integer.
This commit is contained in:
Robert Edmonds 2014-04-03 16:36:39 -04:00
parent 4d525f2fff
commit c821ac3c83
3 changed files with 48 additions and 12 deletions

View File

@ -4,7 +4,6 @@ global:
protobuf_c_default_allocator; protobuf_c_default_allocator;
protobuf_c_enum_descriptor_get_value; protobuf_c_enum_descriptor_get_value;
protobuf_c_enum_descriptor_get_value_by_name; protobuf_c_enum_descriptor_get_value_by_name;
protobuf_c_major;
protobuf_c_message_check; protobuf_c_message_check;
protobuf_c_message_descriptor_get_field; protobuf_c_message_descriptor_get_field;
protobuf_c_message_descriptor_get_field_by_name; protobuf_c_message_descriptor_get_field_by_name;
@ -14,11 +13,12 @@ global:
protobuf_c_message_pack; protobuf_c_message_pack;
protobuf_c_message_pack_to_buffer; protobuf_c_message_pack_to_buffer;
protobuf_c_message_unpack; protobuf_c_message_unpack;
protobuf_c_minor;
protobuf_c_service_descriptor_get_method_by_name; protobuf_c_service_descriptor_get_method_by_name;
protobuf_c_service_destroy; protobuf_c_service_destroy;
protobuf_c_service_generated_init; protobuf_c_service_generated_init;
protobuf_c_service_invoke_internal; protobuf_c_service_invoke_internal;
protobuf_c_version;
protobuf_c_version_number;
local: local:
*; *;
}; };

View File

@ -84,8 +84,19 @@
#define ASSERT_IS_SERVICE_DESCRIPTOR(desc) \ #define ASSERT_IS_SERVICE_DESCRIPTOR(desc) \
assert((desc)->magic == PROTOBUF_C_SERVICE_DESCRIPTOR_MAGIC) assert((desc)->magic == PROTOBUF_C_SERVICE_DESCRIPTOR_MAGIC)
unsigned protobuf_c_major = PROTOBUF_C_MAJOR; /* --- version --- */
unsigned protobuf_c_minor = PROTOBUF_C_MINOR;
const char *
protobuf_c_version(void)
{
return PROTOBUF_C_VERSION;
}
uint32_t
protobuf_c_version_number(void)
{
return PROTOBUF_C_VERSION_NUMBER;
}
/* --- allocator --- */ /* --- allocator --- */

View File

@ -58,14 +58,6 @@
#define PROTOBUF_C_OFFSETOF(struct, member) offsetof(struct, member) #define PROTOBUF_C_OFFSETOF(struct, member) offsetof(struct, member)
/* The version of protobuf-c you are compiling against. */
#define PROTOBUF_C_MAJOR 0
#define PROTOBUF_C_MINOR 16
/* The version of protobuf-c you are linking against. */
extern unsigned protobuf_c_major;
extern unsigned protobuf_c_minor;
#if defined(_WIN32) && defined(PROTOBUF_C_USE_SHARED_LIB) #if defined(_WIN32) && defined(PROTOBUF_C_USE_SHARED_LIB)
# ifdef PROTOBUF_C_EXPORT # ifdef PROTOBUF_C_EXPORT
# define PROTOBUF_C_API __declspec(dllexport) # define PROTOBUF_C_API __declspec(dllexport)
@ -78,6 +70,39 @@ extern unsigned protobuf_c_minor;
PROTOBUF_C_BEGIN_DECLS PROTOBUF_C_BEGIN_DECLS
/**
* Get the version of the protobuf-c library. Note that this is the version of
* the library linked against, not the version of the headers compiled against.
*
* \return A string containing the version number of protobuf-c.
*/
PROTOBUF_C_API
const char *
protobuf_c_version(void);
/**
* Get the version of the protobuf-c library. Note that this is the version of
* the library linked against, not the version of the headers compiled against.
*
* \return A 32 bit unsigned integer containing the version number of
* protobuf-c, represented in base-10 as (MAJOR*1E6) + (MINOR*1E3) + PATCH.
*/
PROTOBUF_C_API
uint32_t
protobuf_c_version_number(void);
/**
* The version of the protobuf-c headers, represented as a string using the same
* format as protobuf_c_version().
*/
#define PROTOBUF_C_VERSION "1.0.0-pre"
/**
* The version of the protobuf-c headers, represented as an integer using the
* same format as protobuf_c_version_number().
*/
#define PROTOBUF_C_VERSION_NUMBER 1000000
typedef int protobuf_c_boolean; typedef int protobuf_c_boolean;
typedef enum { typedef enum {