]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/tools/misc/src/com/ibm/icu/dev/tool/layout/BuildMirroringTables.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / tools / misc / src / com / ibm / icu / dev / tool / layout / BuildMirroringTables.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 1996-2005, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  *\r
7  */\r
8 \r
9 package com.ibm.icu.dev.tool.layout;\r
10 \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
14 \r
15 /**\r
16  * @author emader\r
17  *\r
18  * TODO To change the template for this generated type comment go to\r
19  * Window - Preferences - Java - Code Style - Code Templates\r
20  */\r
21 public class BuildMirroringTables extends ModuleWriter\r
22 {\r
23     public BuildMirroringTables()\r
24     {\r
25         super();\r
26     }\r
27     \r
28     public void dump(String name, int[] array, int length, int valuesPerLine)\r
29     {\r
30         StringBuffer line = new StringBuffer("    ");\r
31         \r
32         output.println("const LEUnicode32 DefaultCharMapper::" + name + "[] = {");\r
33         \r
34         for (int i = 0; i < length; i += 1) {\r
35             \r
36             if (i > 0 && i % valuesPerLine == 0) {\r
37                 output.println(line.toString());\r
38                 line.setLength(4);\r
39             }\r
40     \r
41             line.append("0x" + Utility.hex(array[i], 4));\r
42             line.append(", ");\r
43         }\r
44     \r
45         line.setLength(line.length() - 2);\r
46     \r
47         output.println(line.toString());\r
48         output.println("};\n");\r
49     }\r
50     \r
51     public void writeMirroredDataFile(String filename)\r
52     {\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
57         int total = 0;\r
58         \r
59         System.out.println("There are " + count + " mirrored characters.");\r
60         \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
64             \r
65             if (ch != m) {\r
66                 chars[total] = ch & 0xFFFF;\r
67                 mirrors[total++] = m & 0xFFFF;\r
68             }\r
69         }\r
70         \r
71         System.out.println("There are " + total + " characters with a different mirror.\n");\r
72         \r
73         openFile(filename);\r
74         writeHeader(null, includeFiles);\r
75         \r
76         \r
77         dump("mirroredChars", chars, total, 8);\r
78         \r
79         System.out.println();\r
80         \r
81         dump("srahCderorrim", mirrors, total, 8);\r
82         \r
83         output.println("const le_int32 DefaultCharMapper::mirroredCharsCount = " + total + ";\n");\r
84 \r
85         writeTrailer();\r
86         closeFile();\r
87     }\r
88     \r
89     private static String includeFiles[] = {"LETypes.h", "DefaultCharMapper.h"};\r
90     \r
91     public static void main(String[] args)\r
92     {\r
93         BuildMirroringTables bmt = new BuildMirroringTables();\r
94         \r
95         bmt.writeMirroredDataFile("MirroredCharData.cpp");\r
96     }\r
97 }\r