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 package org.kit.furia.fragment.soot.representation.internal;
32 import org.kit.furia.fragment.soot.representation.*;
33 import soot.*;
34
35 import soot.jimple.internal.*;
36
37 public class FCastExpr extends AbstractCastExpr implements Precedence, Qable
38 {
39
40
41
42 private static final long serialVersionUID = -7172362809498974745L;
43
44 public FCastExpr(Value op, Type type)
45 {
46 super(Frimp.v().newExprBox(op), type);
47 }
48
49 public int getPrecedence() { return 850; }
50
51 private String toString(String leftString, Value op, String opString)
52 {
53 String rightOp = opString;
54
55 if (op instanceof Precedence &&
56 ((Precedence)op).getPrecedence() < getPrecedence())
57 rightOp = "(" + rightOp + ")";
58 return leftString + rightOp;
59 }
60
61 public String toString()
62 {
63 return toString("(" + getCastType().toString() + ") ", getOp(),
64 getOp().toString());
65 }
66
67 public Object clone()
68 {
69 return new FCastExpr(Frimp.cloneIfNecessary(getOp()), getCastType());
70 }
71
72 public String toQ() throws Exception {
73
74 String res = FuriaConstructDefinitions.FURIA_fcast + "(" + Frimp.toQ(getCastType()) + "," + Frimp.toQ(getOp())+ ")";
75
76 return res;
77 }
78
79 }