From 03a1675eac4baf8c7a6e0602102bbafa3176771c Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Wed, 31 May 2017 16:17:54 +0200 Subject: [PATCH] Reduce code duplication in writing of string data for locales Each StringData object got its own block, of common form, to output its C array; give each object a name so that we can automate this as an iteration over StringData objects. One (endonyms_data) gains a blank line that the others all had but it lacked. Change-Id: I96c014728a58343c82304c5117b474fee980d9c7 Reviewed-by: Lars Knoll --- src/corelib/tools/qlocale_data_p.h | 3 +- util/local_database/qlocalexml2cpp.py | 108 ++++++-------------------- 2 files changed, 24 insertions(+), 87 deletions(-) diff --git a/src/corelib/tools/qlocale_data_p.h b/src/corelib/tools/qlocale_data_p.h index ee9b1aca7c..144d2c258c 100644 --- a/src/corelib/tools/qlocale_data_p.h +++ b/src/corelib/tools/qlocale_data_p.h @@ -77,7 +77,7 @@ static const int ImperialMeasurementSystemsCount = // GENERATED PART STARTS HERE /* - This part of the file was generated on 2017-05-23 from the + This part of the file was generated on 2017-05-31 from the Common Locale Data Repository v29 http://www.unicode.org/cldr/ @@ -5747,6 +5747,7 @@ static const ushort currency_format_data[] = { 0x31, 0x25, 0x31, 0xa0, 0x6d, 0x6e, 0xa0, 0x25, 0x32, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x2d, 0x25, 0x32, 0xa0, 0x25, 0x31, 0x4b, 0x200e, 0x25, 0x32, 0x25, 0x31, 0x28, 0x25, 0x32, 0x25, 0x31, 0x29, 0x25, 0x32, 0x2d, 0xa0, 0x25, 0x31 }; + static const ushort endonyms_data[] = { 0x4f, 0x72, 0x6f, 0x6d, 0x6f, 0x6f, 0x49, 0x74, 0x6f, 0x6f, 0x70, 0x68, 0x69, 0x79, 0x61, 0x61, 0x4b, 0x65, 0x65, 0x6e, 0x69, 0x79, 0x61, 0x61, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x61, 0x6e, 0x73, 0x53, 0x75, 0x69, 0x64, 0x2d, 0x41, 0x66, diff --git a/util/local_database/qlocalexml2cpp.py b/util/local_database/qlocalexml2cpp.py index d2517aaa48..efbfef090e 100755 --- a/util/local_database/qlocalexml2cpp.py +++ b/util/local_database/qlocalexml2cpp.py @@ -300,9 +300,10 @@ class StringDataToken: return " %d,%d " % (self.index, self.length) class StringData: - def __init__(self): + def __init__(self, name): self.data = [] self.hash = {} + self.name = name def append(self, s): if s in self.hash: return self.hash[s] @@ -495,17 +496,17 @@ def main(): data_temp_file.write("\n") - list_pattern_part_data = StringData() - date_format_data = StringData() - time_format_data = StringData() - months_data = StringData() - days_data = StringData() - am_data = StringData() - pm_data = StringData() - currency_symbol_data = StringData() - currency_display_name_data = StringData() - currency_format_data = StringData() - endonyms_data = StringData() + list_pattern_part_data = StringData('list_pattern_part_data') + date_format_data = StringData('date_format_data') + time_format_data = StringData('time_format_data') + months_data = StringData('months_data') + days_data = StringData('days_data') + am_data = StringData('am_data') + pm_data = StringData('pm_data') + currency_symbol_data = StringData('currency_symbol_data') + currency_display_name_data = StringData('currency_display_name_data') + currency_format_data = StringData('currency_format_data') + endonyms_data = StringData('endonyms_data') # Locale data data_temp_file.write("static const QLocaleData locale_data[] = {\n") @@ -651,80 +652,15 @@ def main(): + " // trailing 0s\n") data_temp_file.write("};\n") - data_temp_file.write("\n") - - # List patterns data - data_temp_file.write("static const ushort list_pattern_part_data[] = {\n") - data_temp_file.write(wrap_list(list_pattern_part_data.data)) - data_temp_file.write("\n};\n") - - data_temp_file.write("\n") - - # Date format data - data_temp_file.write("static const ushort date_format_data[] = {\n") - data_temp_file.write(wrap_list(date_format_data.data)) - data_temp_file.write("\n};\n") - - data_temp_file.write("\n") - - # Time format data - data_temp_file.write("static const ushort time_format_data[] = {\n") - data_temp_file.write(wrap_list(time_format_data.data)) - data_temp_file.write("\n};\n") - - data_temp_file.write("\n") - - # Months data - data_temp_file.write("static const ushort months_data[] = {\n") - data_temp_file.write(wrap_list(months_data.data)) - data_temp_file.write("\n};\n") - - data_temp_file.write("\n") - - # Days data - data_temp_file.write("static const ushort days_data[] = {\n") - data_temp_file.write(wrap_list(days_data.data)) - data_temp_file.write("\n};\n") - - data_temp_file.write("\n") - - # AM data - data_temp_file.write("static const ushort am_data[] = {\n") - data_temp_file.write(wrap_list(am_data.data)) - data_temp_file.write("\n};\n") - - data_temp_file.write("\n") - - # PM data - data_temp_file.write("static const ushort pm_data[] = {\n") - data_temp_file.write(wrap_list(pm_data.data)) - data_temp_file.write("\n};\n") - - data_temp_file.write("\n") - - # Currency symbol data - data_temp_file.write("static const ushort currency_symbol_data[] = {\n") - data_temp_file.write(wrap_list(currency_symbol_data.data)) - data_temp_file.write("\n};\n") - - data_temp_file.write("\n") - - # Currency display name data - data_temp_file.write("static const ushort currency_display_name_data[] = {\n") - data_temp_file.write(wrap_list(currency_display_name_data.data)) - data_temp_file.write("\n};\n") - - data_temp_file.write("\n") - - # Currency format data - data_temp_file.write("static const ushort currency_format_data[] = {\n") - data_temp_file.write(wrap_list(currency_format_data.data)) - data_temp_file.write("\n};\n") - - # Endonyms data - data_temp_file.write("static const ushort endonyms_data[] = {\n") - data_temp_file.write(wrap_list(endonyms_data.data)) - data_temp_file.write("\n};\n") + # StringData tables: + for data in (list_pattern_part_data, date_format_data, + time_format_data, months_data, days_data, + am_data, pm_data, currency_symbol_data, + currency_display_name_data, currency_format_data, + endonyms_data): + data_temp_file.write("\nstatic const ushort %s[] = {\n" % data.name) + data_temp_file.write(wrap_list(data.data)) + data_temp_file.write("\n};\n") data_temp_file.write("\n")