Fixed the way default values are created for encoded values

git-svn-id: https://smali.googlecode.com/svn/trunk@155 55b6fa8a-2a1e-11de-a435-ffa8d773f76a
This commit is contained in:
JesusFreke@JesusFreke.com 2009-06-18 01:07:37 +00:00
parent 9bc4978139
commit ec90e0d1a4

View File

@ -28,34 +28,33 @@
package org.jf.dexlib.util; package org.jf.dexlib.util;
import org.jf.dexlib.EncodedValue.EncodedValueSubFieldFactory; import org.jf.dexlib.EncodedValue.*;
import org.jf.dexlib.EncodedValue.ValueType;
import org.jf.dexlib.EncodedValue.EncodedValueSubField;
import org.jf.dexlib.DexFile; import org.jf.dexlib.DexFile;
public class TypeUtils public class TypeUtils
{ {
public static EncodedValueSubField makeDefaultValueForType(DexFile dexFile, String type) { public static EncodedValueSubField makeDefaultValueForType(DexFile dexFile, String type) {
EncodedValueSubField subField;
switch (type.charAt(0)) { switch (type.charAt(0)) {
case 'Z': case 'Z':
return EncodedValueSubFieldFactory.makeEncodedValueField(dexFile, ValueType.VALUE_BOOLEAN); return new BoolEncodedValueSubField(false);
case 'B': case 'B':
return EncodedValueSubFieldFactory.makeEncodedValueField(dexFile, ValueType.VALUE_BYTE); return new ByteEncodedValueSubField((byte)0);
case 'S': case 'S':
return EncodedValueSubFieldFactory.makeEncodedValueField(dexFile, ValueType.VALUE_SHORT); return new ShortEncodedValueSubField((short)0);
case 'C': case 'C':
return EncodedValueSubFieldFactory.makeEncodedValueField(dexFile, ValueType.VALUE_CHAR); return new CharEncodedValueSubField((char)0);
case 'I': case 'I':
return EncodedValueSubFieldFactory.makeEncodedValueField(dexFile, ValueType.VALUE_INT); return new IntEncodedValueSubField(0);
case 'J': case 'J':
return EncodedValueSubFieldFactory.makeEncodedValueField(dexFile, ValueType.VALUE_LONG); return new LongEncodedValueSubField(0);
case 'F': case 'F':
return EncodedValueSubFieldFactory.makeEncodedValueField(dexFile, ValueType.VALUE_FLOAT); return new FloatEncodedValueSubField(0);
case 'D': case 'D':
return EncodedValueSubFieldFactory.makeEncodedValueField(dexFile, ValueType.VALUE_DOUBLE); return new DoubleEncodedValueSubField(0);
case 'L': case 'L':
case '[': case '[':
return EncodedValueSubFieldFactory.makeEncodedValueField(dexFile, ValueType.VALUE_NULL); return new NullEncodedValueSubField();
} }
return null; return null;
} }