From c12b85e0a03f3065752be5e1dcd863cb4121bddc Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Wed, 21 Feb 2018 10:12:47 +0000 Subject: [PATCH] enhanced --enable-unicode to accept ucs4 and ucs2 in addition to yes/no. redefined the moo_uch_t type to follow the enable-unicode value --- configure | 54 +++++++++++------------------------------------- configure.ac | 37 +++++++-------------------------- lib/hcl-cfg.h.in | 3 --- lib/hcl-cmn.h | 23 +++++++++++++++------ 4 files changed, 36 insertions(+), 81 deletions(-) diff --git a/configure b/configure index 6799ef0..8331961 100755 --- a/configure +++ b/configure @@ -803,7 +803,6 @@ with_gnu_ld with_sysroot enable_libtool_lock enable_debug -enable_override_uch enable_unicode enable_cxx enable_dynamic_module @@ -1453,10 +1452,9 @@ Optional Features: optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-debug build the library in the debug mode (default. no) - --enable-override-uch Use the specified unicode character type (default. - no) --enable-unicode Use the unicode character type as the default - character type (default. yes) + character type. one of yes, no, ucs2, ucs4 (default. + yes) --enable-cxx build the library for C++ if a C++ compiler is available (default. yes) --enable-dynamic-module enable dynamic module capability(default. yes) @@ -19417,44 +19415,6 @@ $as_echo "#define HCL_BUILD_RELEASE 1" >>confdefs.h fi - -# Check whether --enable-override-uch was given. -if test "${enable_override_uch+set}" = set; then : - enableval=$enable_override_uch; enable_override_uch=$enableval -else - enable_override_uch=no - -fi - -if test "${enable_override_uch}" = "wchar_t" -then - test "${ac_cv_sizeof_wchar_t}" = "0" && enable_override_uch=no - test "${ac_cv_sizeof_wchar_t}" = "1" && enable_override_uch=no -elif test "${enable_override_uch}" = "char16_t" -then - test "${ac_cv_sizeof_char16_t}" = "0" && enable_override_uch=no -elif test "${enable_override_uch}" = "char32_t" -then - test "${ac_cv_sizeof_char32_t}" = "0" && enable_override_uch=no -fi - -if test "${enable_override_uch}" = "wchar_t" -then - -$as_echo "#define HCL_OVERRIDE_UCH_TYPE wchar_t" >>confdefs.h - -elif test "${enable_override_uch}" = "char16_t" -then - -$as_echo "#define HCL_OVERRIDE_UCH_TYPE char16_t" >>confdefs.h - -elif test "${enable_override_uch}" = "char32_t" -then - -$as_echo "#define HCL_OVERRIDE_UCH_TYPE char32_t" >>confdefs.h - -fi - # Check whether --enable-unicode was given. if test "${enable_unicode+set}" = set; then : enableval=$enable_unicode; enable_unicode=$enableval @@ -19468,6 +19428,16 @@ then $as_echo "#define HCL_ENABLE_UNICODE 1" >>confdefs.h +elif test "${enable_unicode}" = "ucs2" +then + +$as_echo "#define HCL_ENABLE_UNICODE 2" >>confdefs.h + +elif test "${enable_unicode}" = "ucs4" +then + +$as_echo "#define HCL_ENABLE_UNICODE 4" >>confdefs.h + fi # Check whether --enable-cxx was given. diff --git a/configure.ac b/configure.ac index 3b22b5f..3e9e69b 100644 --- a/configure.ac +++ b/configure.ac @@ -408,43 +408,20 @@ else AC_SUBST(BUILD_MODE, "release") fi - -AC_ARG_ENABLE([override-uch], - [AS_HELP_STRING([--enable-override-uch],[Use the specified unicode character type (default. no)])], - enable_override_uch=$enableval, - enable_override_uch=no -) -if test "${enable_override_uch}" = "wchar_t" -then - test "${ac_cv_sizeof_wchar_t}" = "0" && enable_override_uch=no - test "${ac_cv_sizeof_wchar_t}" = "1" && enable_override_uch=no -elif test "${enable_override_uch}" = "char16_t" -then - test "${ac_cv_sizeof_char16_t}" = "0" && enable_override_uch=no -elif test "${enable_override_uch}" = "char32_t" -then - test "${ac_cv_sizeof_char32_t}" = "0" && enable_override_uch=no -fi - -if test "${enable_override_uch}" = "wchar_t" -then - AC_DEFINE([HCL_OVERRIDE_UCH_TYPE],[wchar_t],[unicode character type]) -elif test "${enable_override_uch}" = "char16_t" -then - AC_DEFINE([HCL_OVERRIDE_UCH_TYPE],[char16_t],[unicode character type]) -elif test "${enable_override_uch}" = "char32_t" -then - AC_DEFINE([HCL_OVERRIDE_UCH_TYPE],[char32_t],[unicode character type]) -fi - AC_ARG_ENABLE([unicode], - [AS_HELP_STRING([--enable-unicode],[Use the unicode character type as the default character type (default. yes)])], + [AS_HELP_STRING([--enable-unicode],[Use the unicode character type as the default character type. one of yes, no, ucs2, ucs4 (default. yes)])], enable_unicode=$enableval, enable_unicode=yes ) if test "${enable_unicode}" = "yes" then AC_DEFINE([HCL_ENABLE_UNICODE],[1],[Use the unicode character type as the default character type]) +elif test "${enable_unicode}" = "ucs2" +then + AC_DEFINE([HCL_ENABLE_UNICODE],[2],[Use the unicode character type as the default character type]) +elif test "${enable_unicode}" = "ucs4" +then + AC_DEFINE([HCL_ENABLE_UNICODE],[4],[Use the unicode character type as the default character type]) fi AC_ARG_ENABLE([cxx], diff --git a/lib/hcl-cfg.h.in b/lib/hcl-cfg.h.in index 6018dd4..73df31d 100644 --- a/lib/hcl-cfg.h.in +++ b/lib/hcl-cfg.h.in @@ -243,9 +243,6 @@ /* MB_LEN_MAX */ #undef HCL_MBLEN_MAX -/* unicode character type */ -#undef HCL_OVERRIDE_UCH_TYPE - /* Author */ #undef HCL_PACKAGE_AUTHOR diff --git a/lib/hcl-cmn.h b/lib/hcl-cmn.h index a839f77..7a5209b 100644 --- a/lib/hcl-cmn.h +++ b/lib/hcl-cmn.h @@ -280,15 +280,26 @@ typedef unsigned char hcl_bchu_t; /* unsigned version of hcl_bch_t for #define HCL_SIZEOF_BCH_T HCL_SIZEOF_CHAR #define HCL_SIZEOF_BCI_T HCL_SIZEOF_INT -#if defined(__GNUC__) && defined(__CHAR16_TYPE__) -/* TODO ... wchar_t???, char16_t? char32_t? */ -typedef __CHAR16_TYPE__ hcl_uch_t; +#if defined(HCL_ENABLE_UNICODE) && (HCL_ENABLE_UNICODE == 4) +# if defined(__GNUC__) && defined(__CHAR32_TYPE__) + typedef __CHAR32_TYPE__ hcl_uch_t; +# else + typedef hcl_uint32_t hcl_uch_t; +# endif + typedef hcl_uint32_t hcl_uchu_t; /* same as hcl_uch_t as it is already unsigned */ +# define HCL_SIZEOF_UCH_T 4 + +#elif defined(__GNUC__) && defined(__CHAR16_TYPE__) + typedef __CHAR16_TYPE__ hcl_uch_t; + typedef hcl_uint16_t hcl_uchu_t; /* same as hcl_uch_t as it is already unsigned */ +# define HCL_SIZEOF_UCH_T 2 #else -typedef hcl_uint16_t hcl_uch_t; + typedef hcl_uint16_t hcl_uch_t; + typedef hcl_uint16_t hcl_uchu_t; /* same as hcl_uch_t as it is already unsigned */ +# define HCL_SIZEOF_UCH_T 2 #endif + typedef hcl_int32_t hcl_uci_t; -typedef hcl_uint16_t hcl_uchu_t; /* same as hcl_uch_t as it is already unsigned */ -#define HCL_SIZEOF_UCH_T 2 #define HCL_SIZEOF_UCI_T 4 typedef hcl_uint8_t hcl_oob_t;