utf8proc

A clean C library for processing UTF-8 Unicode data
git clone https://git.sinitax.com/juliastrings/utf8proc
Log | Files | Refs | README | LICENSE | sfeed.txt

commit c851c678881fe3d910b29d20f1c813ecd3b9d920
parent 164cc48aaf325cb4ffe227712e6488e1cb359d1c
Author: Steven G. Johnson <stevenj@mit.edu>
Date:   Fri, 27 Mar 2015 12:35:41 -0400

put the API version as #defines in the header file (as discussed in #30)

Diffstat:
MNEWS.md | 4++++
Mtest/printproperty.c | 4++++
Mutf8proc.c | 4+++-
Mutf8proc.h | 25++++++++++++++++++++++++-
4 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/NEWS.md b/NEWS.md @@ -28,6 +28,10 @@ - Most `#defined` constants are now `enums`. +- New preprocessor constants `UTF8PROC_VERSION_MAJOR`, + `UTF8PROC_VERSION_MINOR`, and `UTF8PROC_VERSION_PATCH` for compile-time + detection of the API version. + - Doxygen-formatted documentation. ## Version 1.1.6 ## diff --git a/test/printproperty.c b/test/printproperty.c @@ -8,6 +8,10 @@ int main(int argc, char **argv) for (i = 1; i < argc; ++i) { int c; + if (!strcmp(argv[i], "-V")) { + printf("utf8proc version %s\n", utf8proc_version()); + continue; + } check(sscanf(argv[i],"%x",&c) == 1, "invalid hex input %s", argv[i]); const utf8proc_property_t *p = utf8proc_get_property(c); printf("U+%s:\n" diff --git a/utf8proc.c b/utf8proc.c @@ -84,8 +84,10 @@ DLLEXPORT const int8_t utf8proc_utf8class[256] = { /* Should follow semantic-versioning rules (semver.org) based on API compatibility. (Note that the shared-library version number will be different, being based on ABI compatibility.): */ +#define STRINGIZEx(x) #x +#define STRINGIZE(x) STRINGIZEx(x) DLLEXPORT const char *utf8proc_version(void) { - return "1.2-dev"; + return STRINGIZE(UTF8PROC_VERSION_MAJOR) "." STRINGIZE(UTF8PROC_VERSION_MINOR) "." STRINGIZE(UTF8PROC_VERSION_PATCH) "-dev"; } DLLEXPORT const char *utf8proc_errmsg(ssize_t errcode) { diff --git a/utf8proc.h b/utf8proc.h @@ -56,6 +56,27 @@ #ifndef UTF8PROC_H #define UTF8PROC_H +/** @name API version + * + * The utf8proc API version MAJOR.MINOR.PATCH, following + * semantic-versioning rules (http://semver.org) based on API + * compatibility. + * + * This is also returned at runtime by @ref utf8proc_version; however, the + * runtime version may append a string like "-dev" to the version number + * for prerelease versions. + * + * @note The shared-library version number in the Makefile will be different, + * being based on ABI compatibility rather than API compatibility. + */ +/** @{ */ +/** The MAJOR version number (increased when backwards API compatibility is broken). */ +#define UTF8PROC_VERSION_MAJOR 1 +/** The MINOR version number (increased when new functionality is added in a backwards-compatible manner). */ +#define UTF8PROC_VERSION_MINOR 2 +/** The PATCH version (increased for fixes that do not change the API). */ +#define UTF8PROC_VERSION_PATCH 0 +/** @} */ #include <stdlib.h> #include <sys/types.h> @@ -337,7 +358,9 @@ typedef enum { DLLEXPORT extern const int8_t utf8proc_utf8class[256]; /** - * Returns the version as a string. + * Returns the utf8proc API version as a string MAJOR.MINOR.PATCH + * (http://semver.org format), possibly with a "-dev" suffix for + * development versions. */ DLLEXPORT const char *utf8proc_version(void);