1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 package org.kit.furia.fragment.soot.representation.internal;
33 import soot.*;
34 import org.kit.furia.fragment.soot.representation.*;
35 import soot.jimple.internal.*;
36 import java.util.*;
37
38 public class FInstanceFieldRef extends AbstractInstanceFieldRef
39 implements Precedence, Qable, SpecialConstructContainer
40 {
41
42
43
44 private static final long serialVersionUID = 8993710155488116600L;
45
46 public FInstanceFieldRef(Value base, SootFieldRef fieldRef)
47 {
48 super(Frimp.v().newObjExprBox(base), fieldRef);
49 }
50
51 private String toString(Value op, String opString, String rightString)
52 {
53 String leftOp = opString;
54
55 if (op instanceof Precedence &&
56 ((Precedence)op).getPrecedence() < getPrecedence())
57 leftOp = "(" + leftOp + ")";
58 return leftOp + rightString;
59 }
60
61 public String toString()
62 {
63 return toString(getBase(), getBase().toString(),
64 "." + fieldRef.getSignature());
65 }
66
67 public int getPrecedence()
68 {
69 return 950;
70 }
71
72 public Object clone()
73 {
74 return new FInstanceFieldRef(Frimp.cloneIfNecessary(getBase()),
75 fieldRef);
76 }
77
78 public String toQ() throws Exception {
79 String res = FuriaConstructDefinitions.FURIA_finstanceFieldRef + "(" + Frimp.toQ(getBase()) + "," + Frimp.toQ(fieldRef) + ")";
80
81
82 return res;
83 }
84
85 public List getContainedSpecialConstructs() {
86 List res = new LinkedList();
87 res.add(getBase());
88 res.add(fieldRef);
89 return res;
90 }
91
92
93
94 }