1 /* Soot - a J*va Optimization Framework
2 * Copyright (C) 1999 Patrick Lam
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
18 */
19
20 /*
21 * Modified by the Sable Research Group and others 1997-1999.
22 * See the 'credits' file distributed with Soot for the complete list of
23 * contributors. (Soot is distributed at http://www.sable.mcgill.ca/soot)
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() // NOPMD by amuller on 11/16/06 4:09 PM
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 }