Skip to content

Commit

Permalink
Reduce code duplication in writing of string data for locales
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
ediosyncratic committed Jun 9, 2017
1 parent ebb0212 commit 03a1675
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 87 deletions.
3 changes: 2 additions & 1 deletion src/corelib/tools/qlocale_data_p.h
Original file line number Diff line number Diff line change
Expand Up @@ -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/
Expand Down Expand Up @@ -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,
Expand Down
108 changes: 22 additions & 86 deletions util/local_database/qlocalexml2cpp.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,9 +300,10 @@ def __str__(self):
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]
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -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")

Expand Down

0 comments on commit 03a1675

Please sign in to comment.