if (isPrintableAscii(c) || !ascii && TextUtil.isPrintableUnicode(c)) { buffer.append(c); buffer.append(TextUtil.charToUnicodeLiteral(c));
@Override public void writeMessage(String message, Severity severity) { if (accepts(severity)) { stream.println(severity.prefix + TextUtil.getIndentString(indent) + message); } }
public static boolean isValidIdentifier(String id, int version) { return isJavaIdentifier(id) && !isKeyword(id, version); }
public void setDebugVarNames(Map<Integer, String> mapDebugVarNames) { if (varVersions == null) { return; } Map<Integer, Integer> mapOriginalVarIndices = varVersions.getMapOriginalVarIndices(); List<VarVersionPair> listVars = new ArrayList<>(mapVarNames.keySet()); listVars.sort(Comparator.comparingInt(o -> o.var)); Map<String, Integer> mapNames = new HashMap<>(); for (VarVersionPair pair : listVars) { String name = mapVarNames.get(pair); Integer index = mapOriginalVarIndices.get(pair.var); if (index != null) { String debugName = mapDebugVarNames.get(index); if (debugName != null && TextUtil.isValidIdentifier(debugName, method.getClassStruct().getBytecodeVersion())) { name = debugName; } } Integer counter = mapNames.get(name); mapNames.put(name, counter == null ? counter = 0 : ++counter); if (counter > 0) { name += String.valueOf(counter); } mapVarNames.put(pair, name); } }
TextUtil.writeQualifiedSuper(buf, super_qualifier);
public static String getIndentString(int length) { if (length == 0) return ""; StringBuilder buf = new StringBuilder(); String indent = (String)DecompilerContext.getProperty(IFernflowerPreferences.INDENT_STRING); append(buf, indent, length); return buf.toString(); }
@Override public String toString() { StringBuilder res = new StringBuilder(); if (wide) res.append("@wide "); res.append("@").append(TextUtil.getInstructionName(opcode)); int len = operandsCount(); for (int i = 0; i < len; i++) { int op = operands[i]; if (op < 0) { res.append(" -").append(Integer.toHexString(-op)); } else { res.append(" ").append(Integer.toHexString(op)); } } return res.toString(); }
public String getDebugName(StructMethod method) { StructLocalVariableTableAttribute attr = method.getLocalVariableAttr(); if (attr != null && processor != null) { Integer origIndex = processor.getVarOriginalIndex(index); if (origIndex != null) { String name = attr.getName(origIndex, visibleOffset); if (name != null && TextUtil.isValidIdentifier(name, method.getClassStruct().getBytecodeVersion())) { return name; } } } return null; }
TextUtil.writeQualifiedSuper(buf, super_qualifier);
public static String getGenericCastTypeName(GenericType type) { StringBuilder s = new StringBuilder(getTypeName(type)); TextUtil.append(s, "[]", type.arrayDim); return s.toString(); }
if (ret == null) { char c = (char)val.intValue(); if (isPrintableAscii(c) || !ascii && TextUtil.isPrintableUnicode(c)) { ret = String.valueOf(c); ret = TextUtil.charToUnicodeLiteral(c);
public static boolean isValidIdentifier(String id, int version) { return isJavaIdentifier(id) && !isKeyword(id, version); }
public String toString(int indent) { String new_line_separator = DecompilerContext.getNewLineSeparator(); StringBuilder buf = new StringBuilder(); for (int i = 0; i < collinstr.size(); i++) { buf.append(TextUtil.getIndentString(indent)); buf.append(collinstr.getKey(i).intValue()); buf.append(": "); buf.append(collinstr.get(i).toString()); buf.append(new_line_separator); } return buf.toString(); }
public void setDebugVarNames(Map<Integer, String> mapDebugVarNames) { if (varVersions == null) { return; } Map<Integer, Integer> mapOriginalVarIndices = varVersions.getMapOriginalVarIndices(); List<VarVersionPair> listVars = new ArrayList<>(mapVarNames.keySet()); Collections.sort(listVars, Comparator.comparingInt(o -> o.var)); Map<String, Integer> mapNames = new HashMap<>(); for (VarVersionPair pair : listVars) { String name = mapVarNames.get(pair); Integer index = mapOriginalVarIndices.get(pair.var); if (index != null) { String debugName = mapDebugVarNames.get(index); if (debugName != null && TextUtil.isValidIdentifier(debugName, method.getClassStruct().getBytecodeVersion())) { name = debugName; } } Integer counter = mapNames.get(name); mapNames.put(name, counter == null ? counter = 0 : ++counter); if (counter > 0) { name += String.valueOf(counter); } mapVarNames.put(pair, name); } }
TextUtil.writeQualifiedSuper(buf, super_qualifier);
public static String getCastTypeName(VarType type, boolean getShort) { StringBuilder s = new StringBuilder(getTypeName(type, getShort)); TextUtil.append(s, "[]", type.arrayDim); return s.toString(); }
if (isPrintableAscii(c) || !ascii && TextUtil.isPrintableUnicode(c)) { buffer.append(c); buffer.append(TextUtil.charToUnicodeLiteral(c));
content.setStart(TextUtil.getIndentString(indent).length()); buf.append(content);
public String getDebugName(StructMethod method) { StructLocalVariableTableAttribute attr = method.getLocalVariableAttr(); if (attr != null && processor != null) { Integer origIndex = processor.getVarOriginalIndex(index); if (origIndex != null) { String name = attr.getName(origIndex, visibleOffset); if (name != null && TextUtil.isValidIdentifier(name, method.getClassStruct().getBytecodeVersion())) { return name; } } } return null; }
TextUtil.writeQualifiedSuper(buf, super_qualifier);