KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > soot > jimple > StaticFieldRef


1 /* Soot - a J*va Optimization Framework
2  * Copyright (C) 1997-1999 Raja Vallee-Rai
3  * Copyright (C) 2004 Ondrej Lhotak
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the
17  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18  * Boston, MA 02111-1307, USA.
19  */

20
21 /*
22  * Modified by the Sable Research Group and others 1997-1999.
23  * See the 'credits' file distributed with Soot for the complete list of
24  * contributors. (Soot is distributed at http://www.sable.mcgill.ca/soot)
25  */

26
27
28
29
30
31 package soot.jimple;
32
33 import soot.tagkit.*;
34 import soot.*;
35 import soot.baf.*;
36 import soot.util.*;
37 import java.util.*;
38 import java.io.*;
39
40 public class StaticFieldRef implements FieldRef, ConvertToBaf
41 {
42
43
44     protected SootFieldRef fieldRef;
45
46     protected StaticFieldRef(SootFieldRef fieldRef)
47     {
48         if( !fieldRef.isStatic() ) throw new RuntimeException JavaDoc("wrong static-ness");
49         this.fieldRef = fieldRef;
50     }
51
52     public Object JavaDoc clone()
53     {
54         return new StaticFieldRef(fieldRef);
55     }
56
57     public String JavaDoc toString()
58     {
59         return fieldRef.getSignature();
60     }
61
62     public void toString( UnitPrinter up ) {
63         up.fieldRef(fieldRef);
64     }
65
66     public SootFieldRef getFieldRef()
67     {
68         return fieldRef;
69     }
70
71     public void setFieldRef(SootFieldRef fieldRef) {
72         this.fieldRef = fieldRef;
73     }
74     public SootField getField()
75     {
76         return fieldRef.resolve();
77     }
78
79     public List getUseBoxes()
80     {
81         return AbstractUnit.emptyList;
82     }
83
84     public Type getType()
85     {
86         return fieldRef.type();
87     }
88
89     public void apply(Switch sw)
90     {
91         ((RefSwitch) sw).caseStaticFieldRef(this);
92     }
93     
94     public boolean equivTo(Object JavaDoc o)
95     {
96         if (o instanceof StaticFieldRef)
97             return ((StaticFieldRef)o).getField().equals(getField());
98         
99         return false;
100     }
101
102     public int equivHashCode()
103     {
104         return getField().equivHashCode();
105     }
106
107     public void convertToBaf(JimpleToBafContext context, List out)
108     {
109         Unit u = Baf.v().newStaticGetInst(fieldRef);
110         out.add(u);
111
112         Iterator it = context.getCurrentUnit().getTags().iterator();
113         while(it.hasNext()) {
114             u.addTag((Tag) it.next());
115         }
116     }
117 }
118
Popular Tags