package soot.JastAddJ;
import java.util.HashSet;import java.util.LinkedHashSet;import java.io.File;import java.util.*;import beaver.*;import java.util.ArrayList;import java.util.zip.*;import java.io.*;import java.io.FileNotFoundException;import java.util.Collection;import soot.*;import soot.util.*;import soot.jimple.*;import soot.coffi.ClassFile;import soot.coffi.method_info;import soot.coffi.CONSTANT_Utf8_info;import soot.tagkit.SourceFileTag;import soot.coffi.CoffiMethodSource;
public class FieldInfo extends java.lang.Object {
// Declared in BytecodeDescriptor.jrag at line 36
private BytecodeParser p;
// Declared in BytecodeDescriptor.jrag at line 37
String name;
// Declared in BytecodeDescriptor.jrag at line 38
int flags;
// Declared in BytecodeDescriptor.jrag at line 39
private FieldDescriptor fieldDescriptor;
// Declared in BytecodeDescriptor.jrag at line 40
private Attributes.FieldAttributes attributes;
// Declared in BytecodeDescriptor.jrag at line 42
public FieldInfo(BytecodeParser parser) {
p = parser;
flags = p.u2();
if(BytecodeParser.VERBOSE)
p.print("Flags: " + flags);
int name_index = p.u2();
name = ((CONSTANT_Utf8_Info) p.constantPool[name_index]).string();
fieldDescriptor = new FieldDescriptor(p, name);
attributes = new Attributes.FieldAttributes(p);
}
// Declared in BytecodeDescriptor.jrag at line 54
public BodyDecl bodyDecl() {
FieldDeclaration f;
if((flags & Flags.ACC_ENUM) != 0)
//EnumConstant : FieldDeclaration ::= Modifiers <ID:String> Arg:Expr* BodyDecl* /TypeAccess:Access/ /[Init:Expr]/;
f = new EnumConstant(
BytecodeParser.modifiers(flags),
name,
new List(),
new List()
);
else {
Signatures.FieldSignature s = attributes.fieldSignature;
Access type = s != null ? s.fieldTypeAccess() : fieldDescriptor.type();
f = new FieldDeclaration(
BytecodeParser.modifiers(flags),
type,
name,
new Opt()
);
}
if(attributes.constantValue() != null)
if(fieldDescriptor.isBoolean()) {
f.setInit(attributes.constantValue().exprAsBoolean());
}
else {
f.setInit(attributes.constantValue().expr());
}
if(attributes.annotations != null)
for(Iterator iter = attributes.annotations.iterator(); iter.hasNext(); )
f.getModifiersNoTransform().addModifier((Modifier)iter.next());
return f;
}
// Declared in BytecodeDescriptor.jrag at line 89
public boolean isSynthetic() {
return attributes.isSynthetic();
}
}