2 *******************************************************************************
\r
3 * Copyright (C) 1996-2005, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
9 package com.ibm.icu.dev.tool.layout;
\r
11 import com.ibm.icu.impl.Utility;
\r
12 import com.ibm.icu.lang.UCharacter;
\r
13 import com.ibm.icu.text.UnicodeSet;
\r
18 * TODO To change the template for this generated type comment go to
\r
19 * Window - Preferences - Java - Code Style - Code Templates
\r
21 public class BuildMirroringTables extends ModuleWriter
\r
23 public BuildMirroringTables()
\r
28 public void dump(String name, int[] array, int length, int valuesPerLine)
\r
30 StringBuffer line = new StringBuffer(" ");
\r
32 output.println("const LEUnicode32 DefaultCharMapper::" + name + "[] = {");
\r
34 for (int i = 0; i < length; i += 1) {
\r
36 if (i > 0 && i % valuesPerLine == 0) {
\r
37 output.println(line.toString());
\r
41 line.append("0x" + Utility.hex(array[i], 4));
\r
45 line.setLength(line.length() - 2);
\r
47 output.println(line.toString());
\r
48 output.println("};\n");
\r
51 public void writeMirroredDataFile(String filename)
\r
53 UnicodeSet mirrored = new UnicodeSet("[\\p{Bidi_Mirrored}]");
\r
54 int count = mirrored.size();
\r
55 int[] chars = new int[count];
\r
56 int[] mirrors = new int[count];
\r
59 System.out.println("There are " + count + " mirrored characters.");
\r
61 for(int i = 0; i < count; i += 1) {
\r
62 int ch = mirrored.charAt(i);
\r
63 int m = UCharacter.getMirror(ch);
\r
66 chars[total] = ch & 0xFFFF;
\r
67 mirrors[total++] = m & 0xFFFF;
\r
71 System.out.println("There are " + total + " characters with a different mirror.\n");
\r
74 writeHeader(null, includeFiles);
\r
77 dump("mirroredChars", chars, total, 8);
\r
79 System.out.println();
\r
81 dump("srahCderorrim", mirrors, total, 8);
\r
83 output.println("const le_int32 DefaultCharMapper::mirroredCharsCount = " + total + ";\n");
\r
89 private static String includeFiles[] = {"LETypes.h", "DefaultCharMapper.h"};
\r
91 public static void main(String[] args)
\r
93 BuildMirroringTables bmt = new BuildMirroringTables();
\r
95 bmt.writeMirroredDataFile("MirroredCharData.cpp");
\r