]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/tools/misc/src/com/ibm/icu/dev/tool/layout/FeatureList.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / tools / misc / src / com / ibm / icu / dev / tool / layout / FeatureList.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 1998-2004, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  *\r
7  * Created on Dec 3, 2003\r
8  *\r
9  *******************************************************************************\r
10  */\r
11 package com.ibm.icu.dev.tool.layout;\r
12 \r
13 \r
14 public class FeatureList\r
15 {\r
16     \r
17     private Feature[] features;\r
18     private int featureCount;\r
19     \r
20     public FeatureList()\r
21     {\r
22         features = new Feature[10];\r
23         featureCount = 0;\r
24     }\r
25         \r
26     public void addFeature(Feature feature)\r
27     {\r
28         if (featureCount >= features.length) {\r
29             Feature[] newFeatures = new Feature[features.length + 5];\r
30             \r
31             System.arraycopy(features, 0, newFeatures, 0, features.length);\r
32             features = newFeatures;\r
33         }\r
34         \r
35         features[featureCount++] = feature;\r
36     }\r
37     \r
38     public void finalizeFeatureList()\r
39     {\r
40         TaggedRecord.sort(features, featureCount);\r
41         \r
42         for (int i = 0; i < featureCount; i += 1) {\r
43             features[i].setFeatureIndex(i);\r
44         }\r
45     }\r
46     \r
47     public void writeFeaturetList(OpenTypeTableWriter writer)\r
48     {\r
49         System.out.print("writing feature list...");\r
50         \r
51         int featureListBase = writer.getOutputIndex();\r
52         \r
53         writer.writeData(featureCount);\r
54         \r
55         int featureRecordOffset = writer.getOutputIndex();\r
56         \r
57         for (int i = 0; i < featureCount; i += 1) {\r
58             String tag = features[i].getTag();\r
59             \r
60             System.out.print(" '" + tag + "'");\r
61             writer.writeTag(tag);\r
62             writer.writeData(0);\r
63         }\r
64         \r
65         for (int i = 0; i < featureCount; i += 1) {\r
66             // fix the offset in the featureRecordArray.\r
67             // The "+2" skips over the tag and the "+3"\r
68             // skips to the next featureRecord entry\r
69             writer.fixOffset(featureRecordOffset + 2, featureListBase);\r
70             featureRecordOffset += 3;\r
71             \r
72             features[i].writeFeature(writer);\r
73         }\r
74         \r
75         System.out.println();\r
76     }\r
77 }