From 2fbfe3a71b7fb62283784f37c46b5ce52dc558a7 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Mon, 29 Jan 2018 15:38:32 +0000 Subject: [PATCH] changed to prefer char16_t with c11 compiler. yet to add --prefer-char16 option to configure.ac --- qse/cmd/awk/awk.c | 4 ++-- qse/cmd/sed/sed.c | 4 ++-- qse/include/qse/macros.h | 11 +++++++++-- qse/include/qse/si/intr.h | 4 ++-- qse/include/qse/types.h | 23 +++++++++++++++++++++-- qse/lib/si/intr.c | 4 ++-- qse/samples/si/rwl01.c | 4 ++-- 7 files changed, 40 insertions(+), 14 deletions(-) diff --git a/qse/cmd/awk/awk.c b/qse/cmd/awk/awk.c index 13edfa4d..8ae5af53 100644 --- a/qse/cmd/awk/awk.c +++ b/qse/cmd/awk/awk.c @@ -161,7 +161,7 @@ static void stop_run (void* arg) static void set_intr_run (void) { - qse_setintrhandler (stop_run, QSE_NULL); + qse_set_intr_handler (stop_run, QSE_NULL); #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) && defined(SIGPIPE) setsignal (SIGPIPE, SIG_IGN, 0); #endif @@ -169,7 +169,7 @@ static void set_intr_run (void) static void unset_intr_run (void) { - qse_clearintrhandler (); + qse_clear_intr_handler (); #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) && defined(SIGPIPE) setsignal (SIGPIPE, SIG_DFL, 0); #endif diff --git a/qse/cmd/sed/sed.c b/qse/cmd/sed/sed.c index 96a7bcd1..34109eb4 100644 --- a/qse/cmd/sed/sed.c +++ b/qse/cmd/sed/sed.c @@ -502,7 +502,7 @@ static void stop_run (void* arg) static void set_intr_run (void) { - qse_setintrhandler (stop_run, QSE_NULL); + qse_set_intr_handler (stop_run, QSE_NULL); #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) && defined(SIGPIPE) setsignal (SIGPIPE, SIG_IGN, 0); #endif @@ -510,7 +510,7 @@ static void set_intr_run (void) static void unset_intr_run (void) { - qse_clearintrhandler (); + qse_clear_intr_handler (); #if !defined(_WIN32) && !defined(__OS2__) && !defined(__DOS__) && defined(SIGPIPE) setsignal (SIGPIPE, SIG_DFL, 0); #endif diff --git a/qse/include/qse/macros.h b/qse/include/qse/macros.h index e85a5c8a..fc534bc8 100644 --- a/qse/include/qse/macros.h +++ b/qse/include/qse/macros.h @@ -273,8 +273,13 @@ */ #define QSE_MT(txt) (txt) -#define QSE_WQ_I(val) (L ## #val) -#define QSE_WQ(val) QSE_WQ_I(val) +#if defined(QSE_WCHAR_IS_CHAR16_T) +# define QSE_WQ_I(val) (u ## #val) +# define QSE_WQ(val) QSE_WQ_I(val) +#else +# define QSE_WQ_I(val) (L ## #val) +# define QSE_WQ(val) QSE_WQ_I(val) +#endif /** * The #QSE_WT macro maps a multi-byte literal string to a wide character @@ -282,6 +287,8 @@ */ #if (QSE_SIZEOF_WCHAR_T == QSE_SIZEOF_MCHAR_T) # define QSE_WT(txt) (txt) +#elif defined(QSE_WCHAR_IS_CHAR16_T) +# define QSE_WT(txt) (u ## txt) #else # define QSE_WT(txt) (L ## txt) #endif diff --git a/qse/include/qse/si/intr.h b/qse/include/qse/si/intr.h index 6752cc9a..3437348f 100644 --- a/qse/include/qse/si/intr.h +++ b/qse/include/qse/si/intr.h @@ -42,8 +42,8 @@ typedef void (*qse_intr_handler_t) (void *arg); extern "C" { #endif -QSE_EXPORT void qse_setintrhandler (qse_intr_handler_t handler, void* arg); -QSE_EXPORT void qse_clearintrhandler (void); +QSE_EXPORT void qse_set_intr_handler (qse_intr_handler_t handler, void* arg); +QSE_EXPORT void qse_clear_intr_handler (void); #ifdef __cplusplus } diff --git a/qse/include/qse/types.h b/qse/include/qse/types.h index 97c98f70..f476d68c 100644 --- a/qse/include/qse/types.h +++ b/qse/include/qse/types.h @@ -523,7 +523,7 @@ typedef unsigned char qse_mchau_t; * #QSE_MCHAR_EOF. */ typedef int qse_mcint_t; -#define QSE_SIZEOF_MCINT_T QSE_SIZEOF_INT +/*#define QSE_SIZEOF_MCINT_T QSE_SIZEOF_INT*/ /** \typedef qse_wchar_t @@ -536,7 +536,26 @@ typedef int qse_mcint_t; * The qse_wcint_t type defines a type that can hold a qse_wchar_t value and * #QSE_WCHAR_EOF. */ -#if defined(__cplusplus) && (defined(__WATCOMC__) && (__WATCOMC__ < 1200)) + +#if /*defined(QSE_PREFER_CHAR16_T) &&*/ defined(__GNUC__) && defined(__CHAR16_TYPE__) && \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) + /* C11 */ + typedef __CHAR16_TYPE__ qse_wchar_t; + typedef qse_uint16_t qse_wchau_t; + + + #if (QSE_SIZEOF_INT > 2) + typedef int qse_wcint_t; + #else + typedef qse_uint16_t qse_wcint_t; + #endif + + #define QSE_WCHAR_IS_CHAR16_T + + #undef QSE_SIZEOF_WCHAR_T + #define QSE_SIZEOF_WCHAR_T 2 + +#elif defined(__cplusplus) && (defined(__WATCOMC__) && (__WATCOMC__ < 1200)) /* WATCOM C++ before OpenWatcom */ typedef long char qse_wchar_t; diff --git a/qse/lib/si/intr.c b/qse/lib/si/intr.c index 1ba13798..0a1cfcb5 100644 --- a/qse/lib/si/intr.c +++ b/qse/lib/si/intr.c @@ -127,7 +127,7 @@ static int setsignal (int sig, void(*handler)(int), int restart) } #endif -void qse_setintrhandler (qse_intr_handler_t handler, void* arg) +void qse_set_intr_handler (qse_intr_handler_t handler, void* arg) { intr_handler = handler; intr_handler_arg = arg; @@ -145,7 +145,7 @@ void qse_setintrhandler (qse_intr_handler_t handler, void* arg) #endif } -void qse_clearintrhandler (void) +void qse_clear_intr_handler (void) { intr_handler = QSE_NULL; intr_handler_arg = QSE_NULL; diff --git a/qse/samples/si/rwl01.c b/qse/samples/si/rwl01.c index da9cf776..d0ec5155 100644 --- a/qse/samples/si/rwl01.c +++ b/qse/samples/si/rwl01.c @@ -125,9 +125,9 @@ int main () qse_open_stdsios (); - qse_setintrhandler (stop_run, QSE_NULL); + qse_set_intr_handler (stop_run, QSE_NULL); test_001 (); - qse_clearintrhandler (); + qse_clear_intr_handler (); qse_close_stdsios ();