|
|
@ -1,40 +1,41 @@ |
|
|
|
/* |
|
|
|
/* GetFieldOperator Copyright (C) 1998-1999 Jochen Hoenicke. |
|
|
|
* GetFieldOperator (c) 1998 Jochen Hoenicke |
|
|
|
|
|
|
|
* |
|
|
|
* |
|
|
|
* You may distribute under the terms of the GNU General Public License. |
|
|
|
* This program is free software; you can redistribute it and/or modify |
|
|
|
|
|
|
|
* it under the terms of the GNU General Public License as published by |
|
|
|
|
|
|
|
* the Free Software Foundation; either version 2, or (at your option) |
|
|
|
|
|
|
|
* any later version. |
|
|
|
* |
|
|
|
* |
|
|
|
* IN NO EVENT SHALL JOCHEN HOENICKE BE LIABLE TO ANY PARTY FOR DIRECT, |
|
|
|
* This program is distributed in the hope that it will be useful, |
|
|
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF |
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
|
* THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF JOCHEN HOENICKE |
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
|
* HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
|
|
* GNU General Public License for more details. |
|
|
|
* |
|
|
|
* |
|
|
|
* JOCHEN HOENICKE SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT |
|
|
|
* You should have received a copy of the GNU General Public License |
|
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
|
|
|
* along with this program; see the file COPYING. If not, write to |
|
|
|
* PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" |
|
|
|
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |
|
|
|
* BASIS, AND JOCHEN HOENICKE HAS NO OBLIGATION TO PROVIDE MAINTENANCE, |
|
|
|
|
|
|
|
* SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
|
|
|
|
|
|
* |
|
|
|
* |
|
|
|
* $Id$ |
|
|
|
* $Id$ |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
package jode.expr; |
|
|
|
package jode.expr; |
|
|
|
import jode.Type; |
|
|
|
import jode.Type; |
|
|
|
|
|
|
|
import jode.bytecode.Reference; |
|
|
|
import jode.decompiler.CodeAnalyzer; |
|
|
|
import jode.decompiler.CodeAnalyzer; |
|
|
|
|
|
|
|
|
|
|
|
public class GetFieldOperator extends Operator { |
|
|
|
public class GetFieldOperator extends Operator { |
|
|
|
boolean staticFlag; |
|
|
|
boolean staticFlag; |
|
|
|
CodeAnalyzer codeAnalyzer; |
|
|
|
CodeAnalyzer codeAnalyzer; |
|
|
|
String fieldName; |
|
|
|
Reference ref; |
|
|
|
Type classType; |
|
|
|
Type classType; |
|
|
|
boolean needCast = false; |
|
|
|
boolean needCast = false; |
|
|
|
|
|
|
|
|
|
|
|
public GetFieldOperator(CodeAnalyzer codeAnalyzer, boolean staticFlag, |
|
|
|
public GetFieldOperator(CodeAnalyzer codeAnalyzer, boolean staticFlag, |
|
|
|
Type classType, Type type, String fieldName) { |
|
|
|
Reference ref) { |
|
|
|
super(type, 0); |
|
|
|
super(Type.tType(ref.getType()), 0); |
|
|
|
this.codeAnalyzer = codeAnalyzer; |
|
|
|
this.codeAnalyzer = codeAnalyzer; |
|
|
|
this.staticFlag = staticFlag; |
|
|
|
this.staticFlag = staticFlag; |
|
|
|
this.classType = classType; |
|
|
|
this.classType = Type.tClass(ref.getClazz()); |
|
|
|
this.fieldName = fieldName; |
|
|
|
this.ref = ref; |
|
|
|
if (staticFlag) |
|
|
|
if (staticFlag) |
|
|
|
classType.useType(); |
|
|
|
classType.useType(); |
|
|
|
} |
|
|
|
} |
|
|
@ -61,6 +62,7 @@ public class GetFieldOperator extends Operator { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public String toString(String[] operands) { |
|
|
|
public String toString(String[] operands) { |
|
|
|
|
|
|
|
String fieldName = ref.getName(); |
|
|
|
return staticFlag |
|
|
|
return staticFlag |
|
|
|
? (classType.equals(Type.tClass(codeAnalyzer.getClazz().getName())) |
|
|
|
? (classType.equals(Type.tClass(codeAnalyzer.getClazz().getName())) |
|
|
|
&& codeAnalyzer.findLocal(fieldName) == null |
|
|
|
&& codeAnalyzer.findLocal(fieldName) == null |
|
|
@ -76,7 +78,6 @@ public class GetFieldOperator extends Operator { |
|
|
|
|
|
|
|
|
|
|
|
public boolean equals(Object o) { |
|
|
|
public boolean equals(Object o) { |
|
|
|
return o instanceof GetFieldOperator |
|
|
|
return o instanceof GetFieldOperator |
|
|
|
&& ((GetFieldOperator)o).classType.equals(classType) |
|
|
|
&& ((GetFieldOperator)o).ref.equals(ref); |
|
|
|
&& ((GetFieldOperator)o).fieldName.equals(fieldName); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|