package com.jpexs.decompiler.flash.iggy.annotations; import java.lang.reflect.Field; /** * * @author JPEXS */ public class FieldPrinter { public static String getObjectSummary(Object val) { StringBuilder sb = new StringBuilder(); sb.append("/---" + val.getClass().getSimpleName() + "---\r\n"); for (Field f : val.getClass().getDeclaredFields()) { sb.append(f.getName()).append(": "); IggyFieldType an = f.getAnnotation(IggyFieldType.class); if (an != null) { f.setAccessible(true); try { switch (an.value()) { case float_t: sb.append(f.getFloat(val)); break; case uint8_t: case uint16_t: sb.append(f.getInt(val)); break; case uint32_t: case uint64_t: sb.append(f.getLong(val)); break; case wchar_t: sb.append("\"").append(f.get(val)).append("\""); break; } } catch (IllegalAccessException ex) { } } sb.append("\r\n"); } sb.append("---/"); return sb.toString(); } public static String getObjectWriteTo(Class<?> cls) { StringBuilder sb = new StringBuilder(); for (Field f : cls.getDeclaredFields()) { sb.append("stream.write"); IggyFieldType an = f.getAnnotation(IggyFieldType.class); if (an != null) { switch (an.value()) { case float_t: sb.append("Float"); break; case uint8_t: sb.append("UI8"); break; case uint16_t: sb.append("UI16"); break; case uint32_t: sb.append("UI32"); break; case uint64_t: sb.append("UI64"); break; case wchar_t: sb.append("//FIXME"); break; } sb.append("(").append(f.getName()).append(");\r\n"); if (an.count() > 0) { sb.append("//FIXME count"); } } } return sb.toString(); } }