package eu.bibl.cfide.engine.compiler.parser.cfideimpl.tokens.member; import eu.bibl.cfide.engine.compiler.parser.ParserException; import eu.bibl.cfide.engine.decompiler.FieldNodeDecompilationUnit; import eu.bibl.cfide.engine.util.StringArrayReader; public class FieldMemberToken extends MemberToken { protected String name; protected String desc; protected String value; protected String valueType; public FieldMemberToken(int access, String name, String desc) { super(access); this.name = name; this.desc = desc; } public FieldMemberToken(int access, String name, String desc, String value, String valueType) { super(access); this.name = name; this.desc = desc; this.value = value; this.valueType = valueType; } public String getName() { return name; } public String getDesc() { return desc; } public String getValue() { return value; } public String getValueType() { return valueType; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(FieldNodeDecompilationUnit.getAccessString(access)); sb.append(" "); sb.append(name); sb.append(" "); sb.append(desc); if (value != null) { sb.append(" = "); sb.append(value); sb.append(" "); sb.append(valueType); } return sb.toString(); } public static FieldMemberToken create(StringArrayReader reader) throws ParserException { int access = 0; String name = null; String desc = null; String value = null; String valueType = null; while (reader.canReadNext()) { String sToken = reader.read(); String uToken = sToken.toUpperCase(); if (ACCESS_VALUES.containsKey(uToken)) { access |= ACCESS_VALUES.get(uToken); } else if (uToken.equals(":END")) { break; } else { desc = sToken; name = reader.read(); String nextToken = reader.read().toUpperCase(); if (nextToken.equals(":END")) { break; } else if (nextToken.equals("=")) { value = reader.read(); valueType = reader.read(); } break; } } FieldMemberToken token = new FieldMemberToken(access, name, desc, value, valueType); return token; } }