| /* Unicode Case Conversion | /* Unicode Case Conversion | ||||
| * | * | ||||
| * Copyright (C) 2012-2018 Reece H. Dunn | |||||
| * Copyright (C) 2012-2018, 2021 Reece H. Dunn | |||||
| * | * | ||||
| * This file is part of ucd-tools. | * This file is part of ucd-tools. | ||||
| * | * | ||||
| codepoint_t ucd_toupper(codepoint_t c) | codepoint_t ucd_toupper(codepoint_t c) | ||||
| { | { | ||||
| int begin = 0; | int begin = 0; | ||||
| int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]); | |||||
| int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]) - 1; | |||||
| while (begin <= end) | while (begin <= end) | ||||
| { | { | ||||
| int pos = (begin + end) / 2; | int pos = (begin + end) / 2; | ||||
| codepoint_t ucd_tolower(codepoint_t c) | codepoint_t ucd_tolower(codepoint_t c) | ||||
| { | { | ||||
| int begin = 0; | int begin = 0; | ||||
| int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]); | |||||
| int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]) - 1; | |||||
| while (begin <= end) | while (begin <= end) | ||||
| { | { | ||||
| int pos = (begin + end) / 2; | int pos = (begin + end) / 2; | ||||
| codepoint_t ucd_totitle(codepoint_t c) | codepoint_t ucd_totitle(codepoint_t c) | ||||
| { | { | ||||
| int begin = 0; | int begin = 0; | ||||
| int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]); | |||||
| int end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]) - 1; | |||||
| while (begin <= end) | while (begin <= end) | ||||
| { | { | ||||
| int pos = (begin + end) / 2; | int pos = (begin + end) / 2; |
| #!/usr/bin/python | #!/usr/bin/python | ||||
| # Copyright (C) 2012-2018 Reece H. Dunn | |||||
| # Copyright (C) 2012-2018, 2021 Reece H. Dunn | |||||
| # | # | ||||
| # This file is part of ucd-tools. | # This file is part of ucd-tools. | ||||
| # | # | ||||
| if __name__ == '__main__': | if __name__ == '__main__': | ||||
| sys.stdout.write("""/* Unicode Case Conversion | sys.stdout.write("""/* Unicode Case Conversion | ||||
| * | * | ||||
| * Copyright (C) 2012-2018 Reece H. Dunn | |||||
| * Copyright (C) 2012-2018, 2021 Reece H. Dunn | |||||
| * | * | ||||
| * This file is part of ucd-tools. | * This file is part of ucd-tools. | ||||
| * | * | ||||
| sys.stdout.write('codepoint_t ucd_to%s(codepoint_t c)\n' % case) | sys.stdout.write('codepoint_t ucd_to%s(codepoint_t c)\n' % case) | ||||
| sys.stdout.write('{\n') | sys.stdout.write('{\n') | ||||
| sys.stdout.write('\tint begin = 0;\n') | sys.stdout.write('\tint begin = 0;\n') | ||||
| sys.stdout.write('\tint end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]);\n') | |||||
| sys.stdout.write('\tint end = sizeof(case_conversion_data)/sizeof(case_conversion_data[0]) - 1;\n') | |||||
| sys.stdout.write('\twhile (begin <= end)\n') | sys.stdout.write('\twhile (begin <= end)\n') | ||||
| sys.stdout.write('\t{\n') | sys.stdout.write('\t{\n') | ||||
| sys.stdout.write('\t\tint pos = (begin + end) / 2;\n') | sys.stdout.write('\t\tint pos = (begin + end) / 2;\n') |