From 96ebfc4ebe2d1fbdccab838b5e69a8d1fda82c99 Mon Sep 17 00:00:00 2001 From: Hyunjee Kim Date: Tue, 5 Dec 2017 15:58:25 +0900 Subject: [PATCH] [i18ninfo] Add version flag Change-Id: I765d838294e31d840b02454718c29935c793ddd4 Signed-off-by: Hyunjee Kim --- i18ninfo/i18ninfo.cpp | 276 ++++++++++++++++++++++++----------------------- i18ninfo/i18ninfo_argp.h | 62 ++++++----- 2 files changed, 179 insertions(+), 159 deletions(-) diff --git a/i18ninfo/i18ninfo.cpp b/i18ninfo/i18ninfo.cpp index 1e7e17f..2ba443e 100644 --- a/i18ninfo/i18ninfo.cpp +++ b/i18ninfo/i18ninfo.cpp @@ -220,12 +220,14 @@ char *__print_i18n_type_string(const char *type, int num) case 11: COPY_STR(str, "I18N_UNUMBER_CURRENCY_PLURAL", strlen("I18N_UNUMBER_CURRENCY_PLURAL")); break; +#if (__TIZEN_VER > 4) case 12: COPY_STR(str, "I18N_UNUMBER_CURRENCY_ACCOUNTING", strlen("I18N_UNUMBER_CURRENCY_ACCOUNTING")); break; case 13: COPY_STR(str, "I18N_UNUMBER_CASH_CURRENCY", strlen("I18N_UNUMBER_CASH_CURRENCY")); break; +#endif case 14: COPY_STR(str, "I18N_UNUMBER_FORMAT_STYLE_COUNT", strlen("I18N_UNUMBER_FORMAT_STYLE_COUNT")); break; @@ -593,118 +595,6 @@ static int __get_number_format(const char *input_number) return 0; } -int32_t _ustring_append_n(i18n_uchar *dest, int32_t dest_length, const i18n_uchar *src, int32_t src_length) -{ - for (int32_t i = 0; i < src_length; ++i) { - dest[dest_length] = src[i]; - ++dest_length; - } - return dest_length; -} - -i18n_uchar *_convert_unicode_numeric_values(const i18n_uchar *input, int32_t length) -{ - if (length <= 0) - return NULL; - int32_t output_length = 0; - - double *values = (double *) malloc(length * sizeof(double)); - int max_value_length = 0; - - /* Count output length */ - for (int32_t i = 0; i < length; ++i) { - double value = 0; - i18n_uchar_get_numeric_value(input[i], &value); - values[i] = value; - if (value != I18N_U_NO_NUMERIC_VALUE) { - int value_length = snprintf(NULL, 0, "%g", value); - if (value_length > max_value_length) - max_value_length = value_length; - output_length += value_length; - } else { - output_length += 1; - } - } - - /* +1 NULL terminator */ - max_value_length += 1; - - i18n_uchar *output = (i18n_uchar *) malloc((output_length + 1) * sizeof(input[0])); - i18n_ustring_mem_set(output, '\0', output_length + 1); - char *tmp = (char *) malloc((max_value_length) * sizeof(input[0])); - i18n_uchar *c = (i18n_uchar *) malloc((max_value_length) * sizeof(input[0])); - - int32_t current_length = 0; - for (int32_t i = 0; i < length; ++i) { - double value = values[i]; - if (value != I18N_U_NO_NUMERIC_VALUE) { - /* Convert double to i18n_uchar */ - if (NULL == tmp) { - free(values); - free(c); - free(tmp); - free(output); - return NULL; - } - snprintf(tmp, max_value_length, "%g", value); - i18n_ustring_copy_ua_n(c, tmp, max_value_length); - /* Append converted number to output string */ - int32_t src_length = i18n_ustring_get_length(c); - current_length = _ustring_append_n(output, current_length, c, src_length); - } else { - current_length = _ustring_append_n(output, current_length, input + i, 1); - } - } - free(values); - free(c); - free(tmp); - - return output; -} - -static int __convert_number(char *custom_number) -{ - printf(" - To convert the number\n"); - printf("****************************************\n"); - - i18n_uchar *number_to_convert; - - if (!custom_number) { - const char *input_number = "abc০১২৩def四五六ⅦⅧⅨ"; - printf(" Input number : %s\n", input_number); - number_to_convert = - (i18n_uchar *) malloc(sizeof(i18n_uchar) * (strlen(input_number) + 1)); - if (NULL == number_to_convert) { - free(number_to_convert); - return I18N_ERROR_OUT_OF_MEMORY; - } - i18n_ustring_copy_ua_n(number_to_convert, input_number, BUF_SIZE); - - i18n_uchar *str = _convert_unicode_numeric_values(number_to_convert, i18n_ustring_get_length(number_to_convert)); - char p_string[BUF_SIZE]; - i18n_ustring_copy_au_n(p_string, str, BUF_SIZE); - printf(" Convert number : %s\n", p_string); - free(str); - PRINT_ASCIIDOC_LOG("|===\n"); - - } else { - char *input_number = custom_number; - printf(" Input number : %s\n", input_number); - number_to_convert = - (i18n_uchar *) malloc(sizeof(i18n_uchar) * (strlen(input_number) + 1)); - i18n_ustring_copy_ua(number_to_convert, input_number); - - i18n_uchar *str = _convert_unicode_numeric_values(number_to_convert, i18n_ustring_get_length(number_to_convert)); - char p_string[BUF_SIZE]; - i18n_ustring_copy_au_n(p_string, str, BUF_SIZE); - printf(" Convert number : %s\n", p_string); - free(str); - PRINT_ASCIIDOC_LOG("|===\n"); - } - free(number_to_convert); - return 0; -} - static int __get_symbol() { printf(" - To get various number symbol\n"); @@ -1129,6 +1019,119 @@ static int __show_ubidi(char *input_text) return 0; } +#if (__TIZEN_VER > 4) +int32_t _ustring_append_n(i18n_uchar *dest, int32_t dest_length, const i18n_uchar *src, int32_t src_length) +{ + for (int32_t i = 0; i < src_length; ++i) { + dest[dest_length] = src[i]; + ++dest_length; + } + return dest_length; +} + +i18n_uchar *_convert_unicode_numeric_values(const i18n_uchar *input, int32_t length) +{ + if (length <= 0) + return NULL; + int32_t output_length = 0; + + double *values = (double *) malloc(length * sizeof(double)); + int max_value_length = 0; + + /* Count output length */ + for (int32_t i = 0; i < length; ++i) { + double value = 0; + i18n_uchar_get_numeric_value(input[i], &value); + values[i] = value; + if (value != I18N_U_NO_NUMERIC_VALUE) { + int value_length = snprintf(NULL, 0, "%g", value); + if (value_length > max_value_length) + max_value_length = value_length; + output_length += value_length; + } else { + output_length += 1; + } + } + + /* +1 NULL terminator */ + max_value_length += 1; + + i18n_uchar *output = (i18n_uchar *) malloc((output_length + 1) * sizeof(input[0])); + i18n_ustring_mem_set(output, '\0', output_length + 1); + char *tmp = (char *) malloc((max_value_length) * sizeof(input[0])); + i18n_uchar *c = (i18n_uchar *) malloc((max_value_length) * sizeof(input[0])); + + int32_t current_length = 0; + for (int32_t i = 0; i < length; ++i) { + double value = values[i]; + if (value != I18N_U_NO_NUMERIC_VALUE) { + /* Convert double to i18n_uchar */ + if (NULL == tmp) { + free(values); + free(c); + free(tmp); + free(output); + return NULL; + } + snprintf(tmp, max_value_length, "%g", value); + i18n_ustring_copy_ua_n(c, tmp, max_value_length); + /* Append converted number to output string */ + int32_t src_length = i18n_ustring_get_length(c); + current_length = _ustring_append_n(output, current_length, c, src_length); + } else { + current_length = _ustring_append_n(output, current_length, input + i, 1); + } + } + free(values); + free(c); + free(tmp); + + return output; +} + +static int __convert_number(char *custom_number) +{ + printf(" - To convert the number\n"); + printf("****************************************\n"); + + i18n_uchar *number_to_convert; + + if (!custom_number) { + const char *input_number = "abc০১২৩def四五六ⅦⅧⅨ"; + printf(" Input number : %s\n", input_number); + number_to_convert = + (i18n_uchar *) malloc(sizeof(i18n_uchar) * (strlen(input_number) + 1)); + if (NULL == number_to_convert) { + free(number_to_convert); + return I18N_ERROR_OUT_OF_MEMORY; + } + i18n_ustring_copy_ua_n(number_to_convert, input_number, BUF_SIZE); + + i18n_uchar *str = _convert_unicode_numeric_values(number_to_convert, i18n_ustring_get_length(number_to_convert)); + char p_string[BUF_SIZE]; + i18n_ustring_copy_au_n(p_string, str, BUF_SIZE); + printf(" Convert number : %s\n", p_string); + free(str); + PRINT_ASCIIDOC_LOG("|===\n"); + + } else { + char *input_number = custom_number; + printf(" Input number : %s\n", input_number); + number_to_convert = + (i18n_uchar *) malloc(sizeof(i18n_uchar) * (strlen(input_number) + 1)); + i18n_ustring_copy_ua(number_to_convert, input_number); + + i18n_uchar *str = _convert_unicode_numeric_values(number_to_convert, i18n_ustring_get_length(number_to_convert)); + char p_string[BUF_SIZE]; + i18n_ustring_copy_au_n(p_string, str, BUF_SIZE); + printf(" Convert number : %s\n", p_string); + free(str); + PRINT_ASCIIDOC_LOG("|===\n"); + } + free(number_to_convert); + return 0; +} + struct create_mu { const char* unit_type; const char* unit_subtype; @@ -1339,6 +1342,7 @@ static int __show_measure_unit(char *input_number) return 0; } +#endif void allTest() { @@ -1444,20 +1448,34 @@ void showTzdataVersion() __get_tzdata_version(); } -void showMeasureUnit(char *input) +void showUbidi(char *input) { - printf("\n== Show Measure Unit"); + printf("\n== Show Ubidi"); printf("\n****************************************\n"); - __show_measure_unit(input); + __show_ubidi(input); } -void showUbidi(char *input) +#if (__TIZEN_VER > 4) +void testNumberConvert(char *input) { - printf("\n== Show Ubidi"); + int ret = 0; + + printf("\n== Number Converting Test"); printf("\n****************************************\n"); - __show_ubidi(input); + ret = __convert_number(input); + if (ret == -1) { + printf("number converting failed\n"); + } } +void showMeasureUnit(char *input) +{ + printf("\n== Show Measure Unit"); + printf("\n****************************************\n"); + __show_measure_unit(input); +} +#endif + void showDatentimeFormat(char *locale) { int ret = 0, i = 0; @@ -1577,18 +1595,6 @@ void testNumberSymbol(char *locale) } } -void testNumberConvert(char *input) -{ - int ret = 0; - - printf("\n== Number Converting Test"); - printf("\n****************************************\n"); - ret = __convert_number(input); - if (ret == -1) { - printf("number converting failed\n"); - } -} - void testString(char *input) { int ret = 0; @@ -1653,10 +1659,6 @@ int main(int argc, char *argv[]) testNumberSymbol(arguments.setLocale); } - if (arguments.testNumberConvert) { - testNumberConvert(arguments.testNumberConvertArg); - } - if (arguments.testString) { testString(arguments.testStringArg); } @@ -1677,9 +1679,15 @@ int main(int argc, char *argv[]) showUbidi(arguments.testTextArg); } +#if (__TIZEN_VER > 4) + if (arguments.testNumberConvert) { + testNumberConvert(arguments.testNumberConvertArg); + } + if (arguments.showMeasureUnit) { showMeasureUnit(arguments.testInputNumArg); } +#endif return 0; } diff --git a/i18ninfo/i18ninfo_argp.h b/i18ninfo/i18ninfo_argp.h index ff30d50..5f1f224 100644 --- a/i18ninfo/i18ninfo_argp.h +++ b/i18ninfo/i18ninfo_argp.h @@ -2,7 +2,7 @@ #include #include - +#define __TIZEN_VER 5 const char *argp_program_version = "i18ninfo 1.0"; const char *argp_program_bug_address = ""; @@ -22,13 +22,15 @@ static struct argp_option options[] = { {"test-datentime", 'd', "DateTime", OPTION_ARG_OPTIONAL, "Date and time format test", 0 }, {"test-number-format", 'n', "Number", 0, "Number format test", 0 }, {"test-number-symbol", 'N', 0, 0, "Number symbol test", 0 }, - {"test-number-converting", 'c', "Convert", OPTION_ARG_OPTIONAL, "Number converting test", 0 }, {"test-string", 's', "Word", OPTION_ARG_OPTIONAL, "String test", 0 }, {"test-string-iter", 'S', "Type", OPTION_ARG_OPTIONAL, "String iteration test", 0 }, {"set-locale", 'l', "locale", 0, "Set specific locale", 0 }, - {"show-ubidi", 'b', 0, OPTION_ARG_OPTIONAL, "Show examples of the Unicode Bidirectional Algorithm", 0 }, {"print-ASCII", 'p', 0, 0, "Print results as the ASCIIDoc Format", 0 }, + {"show-ubidi", 'b', 0, OPTION_ARG_OPTIONAL, "Show examples of the Unicode Bidirectional Algorithm", 0 }, +#if (__TIZEN_VER > 4) + {"test-number-converting", 'c', "Convert", OPTION_ARG_OPTIONAL, "Number converting test", 0 }, {"show-measure-unit", 'm', "Number", OPTION_ARG_OPTIONAL, "Show measure unit", 0 }, +#endif { 0 } }; @@ -43,24 +45,28 @@ struct arguments { int testDatentime; int testNumberFormat; int testNumberSymbol; - int testNumberConvert; int testString; int testStringIter; - int showUbidi; int printASCII; + int showUbidi; +#if (__TIZEN_VER > 4) + int testNumberConvert; int showMeasureUnit; +#endif char *arg1; /* arg1 */ char **strings; /* [string…] */ char *testTimeArg; char *testNumberFormatArg; - char *testNumberConvertArg; char *testStringArg; char *testStringIterArg; + char *setLocale; char *testTextArg; +#if (__TIZEN_VER > 4) + char *testNumberConvertArg; char *testInputNumArg; - char *setLocale; +#endif }; /* Parse a single option. */ @@ -119,18 +125,8 @@ parse_opt(int key, char *arg, struct argp_state *state) arguments->arg_flag = 9; arguments->testNumberSymbol = 1; break; - case 'c': - arguments->arg_flag = 10; - arguments->testNumberConvert = 1; - - nextArg = state->argv[state->next]; - if (nextArg && *nextArg != '-') { - arguments->testNumberConvertArg = nextArg; - state->next++; - } - break; case 's': - arguments->arg_flag = 11; + arguments->arg_flag = 10; arguments->testString = 1; nextArg = state->argv[state->next]; @@ -140,7 +136,7 @@ parse_opt(int key, char *arg, struct argp_state *state) } break; case 'S': - arguments->arg_flag = 12; + arguments->arg_flag = 11; arguments->testStringIter = 1; nextArg = state->argv[state->next]; @@ -150,11 +146,15 @@ parse_opt(int key, char *arg, struct argp_state *state) } break; case 'l': - arguments->arg_flag = 13; + arguments->arg_flag = 12; arguments->setLocale = arg; break; + case 'p': + arguments->arg_flag = 13; + arguments->printASCII = 1; + break; case 'b': - arguments->arg_flag = 14; + arguments->arg_flag = 15; arguments->showUbidi = 1; nextArg = state->argv[state->next]; @@ -163,10 +163,8 @@ parse_opt(int key, char *arg, struct argp_state *state) state->next++; } break; - case 'p': - arguments->arg_flag = 15; - arguments->printASCII = 1; - break; + +#if (__TIZEN_VER > 4) case 'm': arguments->arg_flag = 16; arguments->showMeasureUnit = 1; @@ -177,6 +175,20 @@ parse_opt(int key, char *arg, struct argp_state *state) state->next++; } break; + + case 'c': + arguments->arg_flag = 14; + arguments->testNumberConvert = 1; + + nextArg = state->argv[state->next]; + if (nextArg && *nextArg != '-') { + arguments->testNumberConvertArg = nextArg; + state->next++; + } + break; + +#endif + case ARGP_KEY_NO_ARGS: if (arguments->arg_flag == 0) { argp_usage(state); -- 2.7.4