]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_8_1_1/tools/misc/src/com/ibm/icu/dev/tool/layout/ScriptTagModuleWriter.java
Added flags.
[Dictionary.git] / jars / icu4j-4_8_1_1 / tools / misc / src / com / ibm / icu / dev / tool / layout / ScriptTagModuleWriter.java
1 /*
2  *******************************************************************************
3  * Copyright (C) 1998-2006, International Business Machines Corporation and    *
4  * others. All Rights Reserved.                                                *
5  *******************************************************************************
6  */
7 package com.ibm.icu.dev.tool.layout;
8
9 public class ScriptTagModuleWriter extends ScriptModuleWriter
10 {
11     public ScriptTagModuleWriter(ScriptData theScriptData, LanguageData theLanguageData)
12     {
13         super(theScriptData, theLanguageData);
14     }
15     
16     private void writeTagValueHeader(TagValueData data, String kind)
17     {
18         int min = data.getMinValue();
19         int max = data.getMaxValue();
20
21         for (int value = min; value <= max; value += 1) {
22             output.print("const LETag ");
23             output.print(data.getTagLabel(value));
24             output.print(kind);
25             output.print("Tag = ");
26             output.print(data.makeTag(value));
27             output.print("; /* '");
28             output.print(data.getTag(value));
29             output.print("' (");
30             output.print(data.getName(value));
31             output.println(") */");
32         }
33     }
34     
35     public void writeHeaderFile(String fileName)
36     {
37         openFile(fileName);
38         writeHeader("__SCRIPTANDLANGUAGES_H", hIncludes, hPreamble);
39         
40         writeTagValueHeader(scriptData, "Script");
41         
42         output.println(hScriptPostamble);
43         
44         writeTagValueHeader(languageData, "Language");
45         
46         output.println(hPostamble);
47         closeFile();
48     }
49     
50     private void writeTagValueCPP(TagValueData data, String kind)
51     {
52         int min = data.getMinValue();
53         int max = data.getMaxValue();
54         
55         for (int value = min; value <= max; value += 1) {
56             output.print("    ");
57             output.print(data.getTagLabel(value));
58             output.print(kind);
59             output.print("Tag");
60             output.print((value == max? " " : ","));
61             output.print(" /* '");
62             output.print(data.getTag(value));
63             output.print("' (");
64             output.print(data.getName(value));
65             output.println(") */");
66         }
67     }
68     
69     public void writeCPPFile(String fileName)
70     {
71         openFile(fileName);
72         writeHeader(null, cppIncludes);
73         output.println(cppPreamble);
74         
75         writeTagValueCPP(scriptData, "Script");
76         
77         output.println(cppScriptPostamble);
78         
79         writeTagValueCPP(languageData, "Language");
80         
81         output.println(cppPostamble);
82         
83         writeTrailer();
84         closeFile();
85     }
86     
87     public void writeScriptTags(String fileName)
88     {
89         writeHeaderFile(fileName + ".h");
90         writeCPPFile(fileName + ".cpp");
91     }
92
93     private static final String[] hIncludes = {"LETypes.h"};
94
95     private static final String hPreamble = 
96     "/**\n" +
97     " * \\file\n" +
98     " * \\internal\n" +
99     " */\n" +
100     "\n";
101     
102     private static final String hScriptPostamble =
103     "\n" +
104     "const LETag nullScriptTag = 0x00000000; /* ''     (NULL) */\n" +
105     "\n";
106     
107     private static final String hPostamble =
108     "\n" +
109     "\n" +
110     "U_NAMESPACE_END\n" +
111     "#endif";
112     
113     private static final String[] cppIncludes =
114         {"LETypes.h", "ScriptAndLanguageTags.h", "OpenTypeLayoutEngine.h"};
115     
116     private static final String cppPreamble = 
117     "const LETag OpenTypeLayoutEngine::scriptTags[] = {";
118     
119     private static final String cppScriptPostamble =
120     "};\n" +
121     "\n" +
122     "const LETag OpenTypeLayoutEngine::languageTags[] = {";
123     
124     private static final String cppPostamble =
125     "};\n";
126 }