From a840e5dae1978f7b9aa3ce7876dd46b158088ce2 Mon Sep 17 00:00:00 2001 From: Tony Kelman Date: Fri, 19 Sep 2014 20:24:42 -0700 Subject: add DLLEXPORT to all functions in mojibake.h --- Makefile | 2 +- mojibake.h | 40 +++++++++++++++++++++++++--------------- utf8proc.c | 30 +++++++++++++++--------------- 3 files changed, 41 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index 9302f3f..c53a918 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ MAKE=make # settings -cflags = -O2 -std=c99 -pedantic -Wall -fpic $(CFLAGS) +cflags = -O2 -std=c99 -pedantic -Wall -fpic -DLIBRARY_EXPORTS $(CFLAGS) cc = $(CC) $(cflags) AR = ar diff --git a/mojibake.h b/mojibake.h index d0f5b53..abebbeb 100644 --- a/mojibake.h +++ b/mojibake.h @@ -75,6 +75,16 @@ enum {false, true}; #endif #include +#ifdef _WIN32 +# ifdef LIBRARY_EXPORTS +# define DLLEXPORT __declspec(dllexport) +# else +# define DLLEXPORT __declspec(dllimport) +# endif +#else +# define DLLEXPORT +#endif + #ifdef __cplusplus extern "C" { #endif @@ -241,16 +251,16 @@ typedef struct utf8proc_property_struct { #define UTF8PROC_DECOMP_TYPE_FRACTION 15 #define UTF8PROC_DECOMP_TYPE_COMPAT 16 -extern const int8_t utf8proc_utf8class[256]; +DLLEXPORT extern const int8_t utf8proc_utf8class[256]; -const char *utf8proc_version(void); +DLLEXPORT const char *utf8proc_version(void); -const char *utf8proc_errmsg(ssize_t errcode); +DLLEXPORT const char *utf8proc_errmsg(ssize_t errcode); /* * Returns a static error string for the given error code. */ -ssize_t utf8proc_iterate(const uint8_t *str, ssize_t strlen, int32_t *dst); +DLLEXPORT ssize_t utf8proc_iterate(const uint8_t *str, ssize_t strlen, int32_t *dst); /* * Reads a single char from the UTF-8 sequence being pointed to by 'str'. * The maximum number of bytes read is 'strlen', unless 'strlen' is @@ -261,12 +271,12 @@ ssize_t utf8proc_iterate(const uint8_t *str, ssize_t strlen, int32_t *dst); * negative error code is returned. */ -bool utf8proc_codepoint_valid(int32_t uc); +DLLEXPORT bool utf8proc_codepoint_valid(int32_t uc); /* * Returns 1, if the given unicode code-point is valid, otherwise 0. */ -ssize_t utf8proc_encode_char(int32_t uc, uint8_t *dst); +DLLEXPORT ssize_t utf8proc_encode_char(int32_t uc, uint8_t *dst); /* * Encodes the unicode char with the code point 'uc' as an UTF-8 string in * the byte array being pointed to by 'dst'. This array has to be at least @@ -276,7 +286,7 @@ ssize_t utf8proc_encode_char(int32_t uc, uint8_t *dst); * This function does not check if 'uc' is a valid unicode code point. */ -const utf8proc_property_t *utf8proc_get_property(int32_t uc); +DLLEXPORT const utf8proc_property_t *utf8proc_get_property(int32_t uc); /* * Returns a pointer to a (constant) struct containing information about * the unicode char with the given code point 'uc'. @@ -286,7 +296,7 @@ const utf8proc_property_t *utf8proc_get_property(int32_t uc); * 0x10FFFF, otherwise the program might crash! */ -ssize_t utf8proc_decompose_char( +DLLEXPORT ssize_t utf8proc_decompose_char( int32_t uc, int32_t *dst, ssize_t bufsize, int options, int *last_boundclass ); @@ -314,7 +324,7 @@ ssize_t utf8proc_decompose_char( * 0x10FFFF, otherwise the program might crash! */ -ssize_t utf8proc_decompose( +DLLEXPORT ssize_t utf8proc_decompose( const uint8_t *str, ssize_t strlen, int32_t *buffer, ssize_t bufsize, int options ); @@ -332,7 +342,7 @@ ssize_t utf8proc_decompose( * buffer size is returned. */ -ssize_t utf8proc_reencode(int32_t *buffer, ssize_t length, int options); +DLLEXPORT ssize_t utf8proc_reencode(int32_t *buffer, ssize_t length, int options); /* * Reencodes the sequence of unicode characters given by the pointer * 'buffer' and 'length' as UTF-8. @@ -355,7 +365,7 @@ ssize_t utf8proc_reencode(int32_t *buffer, ssize_t length, int options); * crash! */ -ssize_t utf8proc_map( +DLLEXPORT ssize_t utf8proc_map( const uint8_t *str, ssize_t strlen, uint8_t **dstptr, int options ); /* @@ -374,10 +384,10 @@ ssize_t utf8proc_map( * 'malloc', and has theirfore to be freed with 'free'. */ -uint8_t *utf8proc_NFD(const uint8_t *str); -uint8_t *utf8proc_NFC(const uint8_t *str); -uint8_t *utf8proc_NFKD(const uint8_t *str); -uint8_t *utf8proc_NFKC(const uint8_t *str); +DLLEXPORT uint8_t *utf8proc_NFD(const uint8_t *str); +DLLEXPORT uint8_t *utf8proc_NFC(const uint8_t *str); +DLLEXPORT uint8_t *utf8proc_NFKD(const uint8_t *str); +DLLEXPORT uint8_t *utf8proc_NFKC(const uint8_t *str); /* * Returns a pointer to newly allocated memory of a NFD, NFC, NFKD or NFKC * normalized version of the null-terminated string 'str'. diff --git a/utf8proc.c b/utf8proc.c index 1064d4d..0056fa3 100644 --- a/utf8proc.c +++ b/utf8proc.c @@ -43,7 +43,7 @@ #include "utf8proc_data.c" -const int8_t utf8proc_utf8class[256] = { +DLLEXPORT const int8_t utf8proc_utf8class[256] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -95,11 +95,11 @@ const int8_t utf8proc_utf8class[256] = { #define UTF8PROC_BOUNDCLASS_LVT 10 -const char *utf8proc_version(void) { +DLLEXPORT const char *utf8proc_version(void) { return "1.1.6"; } -const char *utf8proc_errmsg(ssize_t errcode) { +DLLEXPORT const char *utf8proc_errmsg(ssize_t errcode) { switch (errcode) { case UTF8PROC_ERROR_NOMEM: return "Memory for processing UTF-8 data could not be allocated."; @@ -116,7 +116,7 @@ const char *utf8proc_errmsg(ssize_t errcode) { } } -ssize_t utf8proc_iterate( +DLLEXPORT ssize_t utf8proc_iterate( const uint8_t *str, ssize_t strlen, int32_t *dst ) { int length; @@ -156,14 +156,14 @@ ssize_t utf8proc_iterate( return length; } -bool utf8proc_codepoint_valid(int32_t uc) { +DLLEXPORT bool utf8proc_codepoint_valid(int32_t uc) { if (uc < 0 || uc >= 0x110000 || ((uc & 0xFFFF) >= 0xFFFE) || (uc >= 0xD800 && uc < 0xE000) || (uc >= 0xFDD0 && uc < 0xFDF0)) return false; else return true; } -ssize_t utf8proc_encode_char(int32_t uc, uint8_t *dst) { +DLLEXPORT ssize_t utf8proc_encode_char(int32_t uc, uint8_t *dst) { if (uc < 0x00) { return 0; } else if (uc < 0x80) { @@ -193,7 +193,7 @@ ssize_t utf8proc_encode_char(int32_t uc, uint8_t *dst) { } else return 0; } -const utf8proc_property_t *utf8proc_get_property(int32_t uc) { +DLLEXPORT const utf8proc_property_t *utf8proc_get_property(int32_t uc) { /* ASSERT: uc >= 0 && uc < 0x110000 */ return utf8proc_properties + ( utf8proc_stage2table[ @@ -206,7 +206,7 @@ const utf8proc_property_t *utf8proc_get_property(int32_t uc) { return utf8proc_decompose_char((replacement_uc), dst, bufsize, \ options & ~UTF8PROC_LUMP, last_boundclass) -ssize_t utf8proc_decompose_char(int32_t uc, int32_t *dst, ssize_t bufsize, +DLLEXPORT ssize_t utf8proc_decompose_char(int32_t uc, int32_t *dst, ssize_t bufsize, int options, int *last_boundclass) { /* ASSERT: uc >= 0 && uc < 0x110000 */ const utf8proc_property_t *property; @@ -351,7 +351,7 @@ ssize_t utf8proc_decompose_char(int32_t uc, int32_t *dst, ssize_t bufsize, return 1; } -ssize_t utf8proc_decompose( +DLLEXPORT ssize_t utf8proc_decompose( const uint8_t *str, ssize_t strlen, int32_t *buffer, ssize_t bufsize, int options ) { @@ -413,7 +413,7 @@ ssize_t utf8proc_decompose( return wpos; } -ssize_t utf8proc_reencode(int32_t *buffer, ssize_t length, int options) { +DLLEXPORT ssize_t utf8proc_reencode(int32_t *buffer, ssize_t length, int options) { /* UTF8PROC_NULLTERM option will be ignored, 'length' is never ignored ASSERT: 'buffer' has one spare byte of free space at the end! */ if (options & (UTF8PROC_NLF2LS | UTF8PROC_NLF2PS | UTF8PROC_STRIPCC)) { @@ -528,7 +528,7 @@ ssize_t utf8proc_reencode(int32_t *buffer, ssize_t length, int options) { } } -ssize_t utf8proc_map( +DLLEXPORT ssize_t utf8proc_map( const uint8_t *str, ssize_t strlen, uint8_t **dstptr, int options ) { int32_t *buffer; @@ -557,28 +557,28 @@ ssize_t utf8proc_map( return result; } -uint8_t *utf8proc_NFD(const uint8_t *str) { +DLLEXPORT uint8_t *utf8proc_NFD(const uint8_t *str) { uint8_t *retval; utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | UTF8PROC_DECOMPOSE); return retval; } -uint8_t *utf8proc_NFC(const uint8_t *str) { +DLLEXPORT uint8_t *utf8proc_NFC(const uint8_t *str) { uint8_t *retval; utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | UTF8PROC_COMPOSE); return retval; } -uint8_t *utf8proc_NFKD(const uint8_t *str) { +DLLEXPORT uint8_t *utf8proc_NFKD(const uint8_t *str) { uint8_t *retval; utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | UTF8PROC_DECOMPOSE | UTF8PROC_COMPAT); return retval; } -uint8_t *utf8proc_NFKC(const uint8_t *str) { +DLLEXPORT uint8_t *utf8proc_NFKC(const uint8_t *str) { uint8_t *retval; utf8proc_map(str, 0, &retval, UTF8PROC_NULLTERM | UTF8PROC_STABLE | UTF8PROC_COMPOSE | UTF8PROC_COMPAT); -- cgit v1.2.3 From 6b6786598483bdc8f9c1f743bd154137a3820886 Mon Sep 17 00:00:00 2001 From: Tony Kelman Date: Mon, 22 Sep 2014 13:51:05 -0700 Subject: add DLLEXPORT definition for __GNUC__ >= 4 --- mojibake.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mojibake.h b/mojibake.h index abebbeb..03069b6 100644 --- a/mojibake.h +++ b/mojibake.h @@ -81,6 +81,8 @@ enum {false, true}; # else # define DLLEXPORT __declspec(dllimport) # endif +#elif __GNUC__ >= 4 +# define DLLEXPORT __attribute__ ((visibility("default"))) #else # define DLLEXPORT #endif -- cgit v1.2.3 From d61d551d5a4cb5a47e244928bc87fc95a4a4e88a Mon Sep 17 00:00:00 2001 From: Tony Kelman Date: Tue, 23 Sep 2014 11:08:52 -0700 Subject: s/LIBRARY_EXPORTS/MOJIBAKE_EXPORTS/ --- Makefile | 2 +- mojibake.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c53a918..1312691 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ MAKE=make # settings -cflags = -O2 -std=c99 -pedantic -Wall -fpic -DLIBRARY_EXPORTS $(CFLAGS) +cflags = -O2 -std=c99 -pedantic -Wall -fpic -DMOJIBAKE_EXPORTS $(CFLAGS) cc = $(CC) $(cflags) AR = ar diff --git a/mojibake.h b/mojibake.h index 03069b6..2101f8c 100644 --- a/mojibake.h +++ b/mojibake.h @@ -76,7 +76,7 @@ enum {false, true}; #include #ifdef _WIN32 -# ifdef LIBRARY_EXPORTS +# ifdef MOJIBAKE_EXPORTS # define DLLEXPORT __declspec(dllexport) # else # define DLLEXPORT __declspec(dllimport) -- cgit v1.2.3