From a2225808c8bf07635e184a10e62b37dc5de9b642 Mon Sep 17 00:00:00 2001 From: jochen Date: Fri, 12 Mar 1999 10:18:32 +0000 Subject: [PATCH] quoted moved to constOperator git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@388 379699f6-c40d-0410-875b-85095c16579e --- jode/jode/expr/ConstOperator.java | 42 +++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/jode/jode/expr/ConstOperator.java b/jode/jode/expr/ConstOperator.java index bfdd581..292f604 100644 --- a/jode/jode/expr/ConstOperator.java +++ b/jode/jode/expr/ConstOperator.java @@ -74,6 +74,46 @@ public class ConstOperator extends NoArgOperator { isInitializer = true; } + private static String quoted(String str) { + StringBuffer result = new StringBuffer("\""); + for (int i=0; i< str.length(); i++) { + char c; + switch (c = str.charAt(i)) { + case '\0': + result.append("\\0"); + break; + case '\t': + result.append("\\t"); + break; + case '\n': + result.append("\\n"); + break; + case '\r': + result.append("\\r"); + break; + case '\\': + result.append("\\\\"); + break; + case '\"': + result.append("\\\""); + break; + default: + if (c < 32) { + String oct = Integer.toOctalString(c); + result.append("\\000".substring(0, 4-oct.length())) + .append(oct); + } else if (c >= 32 && c < 127) + result.append(str.charAt(i)); + else { + String hex = Integer.toHexString(c); + result.append("\\u0000".substring(0, 6-hex.length())) + .append(hex); + } + } + } + return result.append("\"").toString(); + } + public String toString(String[] operands) { String value = this.value; if (type.isOfType(Type.tBoolean)) { @@ -113,6 +153,8 @@ public class ConstOperator extends NoArgOperator { String hex = Integer.toHexString(c); return "\'\\u0000".substring(0, 7-hex.length())+hex+"\'"; } + } else if (type.equals(Type.tString)) { + return quoted(value); } else if (parent != null) { int opindex = parent.getOperator().getOperatorIndex(); if (opindex >= OPASSIGN_OP + ADD_OP