2 *******************************************************************************
3 * Copyright (C) 1998-2006, International Business Machines Corporation and *
4 * others. All Rights Reserved. *
5 *******************************************************************************
7 package com.ibm.icu.dev.tool.layout;
9 public class ScriptTagModuleWriter extends ScriptModuleWriter
11 public ScriptTagModuleWriter(ScriptData theScriptData, LanguageData theLanguageData)
13 super(theScriptData, theLanguageData);
16 private void writeTagValueHeader(TagValueData data, String kind)
18 int min = data.getMinValue();
19 int max = data.getMaxValue();
21 for (int value = min; value <= max; value += 1) {
22 output.print("const LETag ");
23 output.print(data.getTagLabel(value));
25 output.print("Tag = ");
26 output.print(data.makeTag(value));
27 output.print("; /* '");
28 output.print(data.getTag(value));
30 output.print(data.getName(value));
31 output.println(") */");
35 public void writeHeaderFile(String fileName)
38 writeHeader("__SCRIPTANDLANGUAGES_H", hIncludes, hPreamble);
40 writeTagValueHeader(scriptData, "Script");
42 output.println(hScriptPostamble);
44 writeTagValueHeader(languageData, "Language");
46 output.println(hPostamble);
50 private void writeTagValueCPP(TagValueData data, String kind)
52 int min = data.getMinValue();
53 int max = data.getMaxValue();
55 for (int value = min; value <= max; value += 1) {
57 output.print(data.getTagLabel(value));
60 output.print((value == max? " " : ","));
61 output.print(" /* '");
62 output.print(data.getTag(value));
64 output.print(data.getName(value));
65 output.println(") */");
69 public void writeCPPFile(String fileName)
72 writeHeader(null, cppIncludes);
73 output.println(cppPreamble);
75 writeTagValueCPP(scriptData, "Script");
77 output.println(cppScriptPostamble);
79 writeTagValueCPP(languageData, "Language");
81 output.println(cppPostamble);
87 public void writeScriptTags(String fileName)
89 writeHeaderFile(fileName + ".h");
90 writeCPPFile(fileName + ".cpp");
93 private static final String[] hIncludes = {"LETypes.h"};
95 private static final String hPreamble =
102 private static final String hScriptPostamble =
104 "const LETag nullScriptTag = 0x00000000; /* '' (NULL) */\n" +
107 private static final String hPostamble =
110 "U_NAMESPACE_END\n" +
113 private static final String[] cppIncludes =
114 {"LETypes.h", "ScriptAndLanguageTags.h", "OpenTypeLayoutEngine.h"};
116 private static final String cppPreamble =
117 "const LETag OpenTypeLayoutEngine::scriptTags[] = {";
119 private static final String cppScriptPostamble =
122 "const LETag OpenTypeLayoutEngine::languageTags[] = {";
124 private static final String cppPostamble =