diff options
author | Steven G. Johnson <stevenj@mit.edu> | 2014-09-24 14:26:13 -0400 |
---|---|---|
committer | Steven G. Johnson <stevenj@mit.edu> | 2014-09-24 14:26:13 -0400 |
commit | df71da45dfbdf68bcc6fd656d1260d609c728ad7 (patch) | |
tree | 278de56be1c6551277191ec1d272d01f4d20180d | |
parent | a733c7feb489ebea9ec39750cde497fbc6d84b4a (diff) | |
parent | d61d551d5a4cb5a47e244928bc87fc95a4a4e88a (diff) | |
download | libutf8proc-df71da45dfbdf68bcc6fd656d1260d609c728ad7.tar.gz libutf8proc-df71da45dfbdf68bcc6fd656d1260d609c728ad7.tar.bz2 |
Merge pull request #17 from JuliaLang/tk/dllexport
RFC: add DLLEXPORT to utf8proc_get_property
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | mojibake.h | 42 | ||||
-rw-r--r-- | utf8proc.c | 30 |
3 files changed, 43 insertions, 31 deletions
@@ -6,7 +6,7 @@ MAKE=make # settings -cflags = -O2 -std=c99 -pedantic -Wall -fpic $(CFLAGS) +cflags = -O2 -std=c99 -pedantic -Wall -fpic -DMOJIBAKE_EXPORTS $(CFLAGS) cc = $(CC) $(cflags) AR = ar @@ -75,6 +75,18 @@ enum {false, true}; #endif #include <limits.h> +#ifdef _WIN32 +# ifdef MOJIBAKE_EXPORTS +# define DLLEXPORT __declspec(dllexport) +# else +# define DLLEXPORT __declspec(dllimport) +# endif +#elif __GNUC__ >= 4 +# define DLLEXPORT __attribute__ ((visibility("default"))) +#else +# define DLLEXPORT +#endif + #ifdef __cplusplus extern "C" { #endif @@ -241,16 +253,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 +273,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 +288,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 +298,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 +326,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 +344,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 +367,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 +386,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'. @@ -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); |