[Base-utils][Ulocale][ACR-1020] Added i18n_ulocale_is_bogus() function 67/137567/9 accepted/tizen/4.0/unified/20170816.011513 accepted/tizen/unified/20170728.195142 submit/tizen/20170726.054922 submit/tizen_4.0/20170811.094300
authorLukasz Pik <lu.pik@partner.samsung.com>
Thu, 6 Jul 2017 10:31:30 +0000 (12:31 +0200)
committerhyunjee Kim <hj0426.kim@samsung.com>
Mon, 24 Jul 2017 01:44:40 +0000 (01:44 +0000)
Change-Id: I7e0c636c5347444f034115b09dc377987082be76
Signed-off-by: Lukasz Pik <lu.pik@partner.samsung.com>
src/CMakeLists.txt
src/include/utils_i18n.h
src/include/utils_i18n_ulocale.h
src/utils_i18n_ulocale.cpp [moved from src/utils_i18n_ulocale.c with 96% similarity]

index 132126c..59e9643 100755 (executable)
@@ -21,7 +21,7 @@ SET(BASEUTILS_SRCS
     utils_i18n_ucalendar.c
     utils_i18n_udate.c
     utils_i18n_udatepg.c
-    utils_i18n_ulocale.c
+    utils_i18n_ulocale.cpp
     utils_i18n_unumber.c
     utils_i18n_uenumeration.c
     utils_i18n_uset.c
index d70a296..36020b3 100644 (file)
@@ -1582,6 +1582,11 @@ extern "C" {
  *       <td>#i18n_ulocale_to_language_tag</td>
  *       <td>uloc_toLanguageTag</td>
  * </tr>
+ * * <tr>
+ *       <td>@ref CAPI_BASE_UTILS_I18N_ULOCALE_MODULE</td>
+ *       <td>#i18n_ulocale_is_bogus</td>
+ *       <td>isBogus</td>
+ * </tr>
  * <tr>
  *       <td>@ref CAPI_BASE_UTILS_I18N_ULOCALE_MODULE</td>
  *       <td>#i18n_ulocale_get_available</td>
index 81c28b9..1477e82 100644 (file)
@@ -946,6 +946,20 @@ int32_t i18n_ulocale_for_language_tag(const char *langtag, char *locale_id, int3
  */
 int32_t i18n_ulocale_to_language_tag(const char *locale_id, char *langtag, int32_t langtag_capacity, i18n_ubool strict);
 
+/**
+ * @brief Gets the bogus state.
+ * @details A locale string can be bogus if it does not identify an existing locale.
+ * @since_tizen 4.0
+ *
+ * @param[in] locale_id                        The input locale ID
+ * @param[out] is_bogus                        Boolean value indicating if the given locale is bogus.
+ *
+ * @return @c 0 on success, otherwise a negative error value
+ * @retval #I18N_ERROR_NONE Successful
+ * @retval #I18N_ERROR_INVALID_PARAMETER Invalid function parameter
+ */
+int i18n_ulocale_is_bogus(const char *locale_id, i18n_ubool *is_bogus);
+
 #ifdef __cplusplus
 }
 #endif
similarity index 96%
rename from src/utils_i18n_ulocale.c
rename to src/utils_i18n_ulocale.cpp
index ab91f1f..a7fdaf2 100644 (file)
@@ -15,6 +15,7 @@
  */
 
 #include <unicode/uloc.h>
+#include <unicode/locid.h>
 #include <utils_i18n_ulocale.h>
 #include <utils_i18n_private.h>
 
@@ -358,7 +359,7 @@ int i18n_ulocale_get_character_orientation(const char *locale_id,
                return I18N_ERROR_INVALID_PARAMETER;
 
        UErrorCode icu_error = U_ZERO_ERROR;
-       *layout_type = uloc_getCharacterOrientation(locale_id, &icu_error);
+       *layout_type = (i18n_ulocale_layout_type_e) uloc_getCharacterOrientation(locale_id, &icu_error);
 
        i18n_error_code_e i18n_error;
        ERR_MAPPING(icu_error, i18n_error);
@@ -373,7 +374,7 @@ int i18n_ulocale_get_line_orientation(const char *locale_id,
                return I18N_ERROR_INVALID_PARAMETER;
 
        UErrorCode icu_error = U_ZERO_ERROR;
-       *layout_type = uloc_getLineOrientation(locale_id, &icu_error);
+       *layout_type = (i18n_ulocale_layout_type_e) uloc_getLineOrientation(locale_id, &icu_error);
 
        i18n_error_code_e i18n_error;
        ERR_MAPPING(icu_error, i18n_error);
@@ -466,3 +467,12 @@ int32_t i18n_ulocale_to_language_tag(const char *locale_id, char *langtag, int32
        set_last_result(i18n_error);
        return len_of_loc;
 }
+
+int i18n_ulocale_is_bogus(const char *locale_id, i18n_ubool *is_bogus)
+{
+       retv_if(is_bogus == NULL, I18N_ERROR_INVALID_PARAMETER);
+
+       Locale locale(locale_id);
+       *is_bogus = locale.isBogus();
+       return I18N_ERROR_NONE;
+}