1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 | package Torello.Java.Additional;
import Torello.Java.StrPrint;
import Torello.Java.LFEC;
import Torello.Java.Additional.Ret2;
import Torello.Java.ReadOnly.ReadOnlyList;
import static Torello.Java.C.BRED;
import static Torello.Java.C.RESET;
class CPToString
{
@SuppressWarnings("rawtypes")
private static Ret2 dataFileR2 = LFEC.readObjectFromFile_JAR
(ConstantPool.class, "data-files/data4.r2dat", true, Ret2.class);
// Private-Static Constants Lookup-Table **HELPER** for Method "toString"
private static final ReadOnlyList<String> tagNamesToString1 = dataFileR2.GET(1);
// **ANOTHER** Private-Static Constants Lookup-Table **HELPER** for Method "toString"
private static final ReadOnlyList<String> tagNamesToString2 = dataFileR2.GET(2);
static { dataFileR2 = null; }
static String str(
final ReadOnlyList<Byte> tags,
final ReadOnlyList<Object> values,
final ReadOnlyList<ReadOnlyList<Integer>> indicesGroupBy
)
{
final StringBuilder sb = new StringBuilder();
final int SIZE = tags.size();
final int SPACING = 25;
for (int i = 1; i < SIZE; i++)
{
final Byte tag = tags.get(i);
final Object value = values.get(i);
if (tag == null)
{
sb.append(
" " +
BRED +
" Previous tag occupies TWO PLACES, so " +
"Tag #" + i + " doesn't exist.\n" +
RESET
);
continue;
}
sb.append(
'#' + StrPrint.zeroPad(i) + ": " +
CPToString.tagNamesToString1.get(tag)
);
if (value instanceof Ret2)
{
@SuppressWarnings("unchecked")
Ret2<Number, Number> r2 = (Ret2<Number, Number>) value;
sb.append(r2.a + ", " + r2.b);
}
else if (value instanceof String)
sb.append('\"' + value.toString() + '\"');
else
sb.append(value.toString());
sb.append("\n");
}
final String part1Str = StrPrint.wrapToIndentationPlus(sb.toString(), 90, 100, SPACING);
sb.setLength(0);
// Add indicesGroupBy content
sb.append("\nIndices Group By (Tag-Kinds):\n");
for (byte tagKind=0; tagKind < indicesGroupBy.size(); tagKind++)
{
final ReadOnlyList<Integer> indices = indicesGroupBy.get(tagKind);
sb.append(CPToString.tagNamesToString2.get(tagKind));
if (indices == null) sb.append("null (Unused Tag)\n");
else if (indices.isEmpty()) sb.append("[Empty]\n");
else sb.append(indices.toString() + "\n");
}
final String part2Str = StrPrint.wrapToIndentation(sb.toString(), 90, 100);
return part1Str + part2Str;
}
}
|