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 98 | package Torello.Java.Additional; import Torello.Java.StrPrint; import Torello.Java.StringParse; 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( '#' + StringParse.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; } } |