git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@859 379699f6-c40d-0410-875b-85095c16579estable
parent
1318566f84
commit
288a4b2980
@ -0,0 +1,67 @@ |
|||||||
|
/* OuterLocalOperator Copyright (C) 1998-1999 Jochen Hoenicke. |
||||||
|
* |
||||||
|
* 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. |
||||||
|
* |
||||||
|
* This program is distributed in the hope that it will be useful, |
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
* GNU General Public License for more details. |
||||||
|
* |
||||||
|
* You should have received a copy of the GNU General Public License |
||||||
|
* along with this program; see the file COPYING. If not, write to |
||||||
|
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |
||||||
|
* |
||||||
|
* $Id$ |
||||||
|
*/ |
||||||
|
|
||||||
|
package jode.expr; |
||||||
|
import jode.GlobalOptions; |
||||||
|
import jode.type.Type; |
||||||
|
import jode.decompiler.CodeAnalyzer; |
||||||
|
import jode.decompiler.ClassAnalyzer; |
||||||
|
import jode.decompiler.LocalInfo; |
||||||
|
import jode.decompiler.TabbedPrintWriter; |
||||||
|
|
||||||
|
public class OuterLocalOperator extends Operator { |
||||||
|
LocalInfo local; |
||||||
|
|
||||||
|
public OuterLocalOperator(LocalInfo local) { |
||||||
|
super(local.getType()); |
||||||
|
this.local = local; |
||||||
|
initOperands(0); |
||||||
|
} |
||||||
|
|
||||||
|
public boolean isConstant() { |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public int getPriority() { |
||||||
|
return 1000; |
||||||
|
} |
||||||
|
|
||||||
|
public LocalInfo getLocalInfo() { |
||||||
|
return local.getLocalInfo(); |
||||||
|
} |
||||||
|
|
||||||
|
public void updateSubTypes() { |
||||||
|
if ((GlobalOptions.debuggingFlags & GlobalOptions.DEBUG_TYPES) != 0) |
||||||
|
GlobalOptions.err.println("setType of "+local.getName()+": " |
||||||
|
+local.getType()); |
||||||
|
local.setType(type); |
||||||
|
} |
||||||
|
|
||||||
|
public void updateType() { |
||||||
|
} |
||||||
|
|
||||||
|
public Expression simplify() { |
||||||
|
return super.simplify(); |
||||||
|
} |
||||||
|
|
||||||
|
public void dumpExpression(TabbedPrintWriter writer) |
||||||
|
throws java.io.IOException { |
||||||
|
writer.print(local.getName()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,167 @@ |
|||||||
|
/* SimpleSet Copyright (C) 1998-1999 Jochen Hoenicke. |
||||||
|
* |
||||||
|
* 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. |
||||||
|
* |
||||||
|
* This program is distributed in the hope that it will be useful, |
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
* GNU General Public License for more details. |
||||||
|
* |
||||||
|
* You should have received a copy of the GNU General Public License |
||||||
|
* along with this program; see the file COPYING. If not, write to |
||||||
|
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |
||||||
|
* |
||||||
|
* $Id$ |
||||||
|
*/ |
||||||
|
|
||||||
|
package jode.util; |
||||||
|
import java.util.Dictionary; |
||||||
|
import java.util.Enumeration; |
||||||
|
///#ifdef JDK12
|
||||||
|
///import java.util.AbstractSet;
|
||||||
|
///import java.util.Iterator;
|
||||||
|
///#endif
|
||||||
|
|
||||||
|
public class SimpleSet |
||||||
|
///#ifdef JDK12
|
||||||
|
/// extends AbstractSet
|
||||||
|
///#endif
|
||||||
|
implements Cloneable |
||||||
|
{ |
||||||
|
Object[] elementObjects = new Object[2]; |
||||||
|
int count = 0; |
||||||
|
|
||||||
|
public int size() { |
||||||
|
return count; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean add(Object element) { |
||||||
|
if (element == null) |
||||||
|
throw new NullPointerException(); |
||||||
|
|
||||||
|
for (int i=0; i< count; i++) { |
||||||
|
if (element.equals(elementObjects[i])) |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
if (count == elementObjects.length) { |
||||||
|
Object[] newArray = new Object[(count+1)*3/2]; |
||||||
|
System.arraycopy(elementObjects,0,newArray,0,count); |
||||||
|
elementObjects = newArray; |
||||||
|
} |
||||||
|
elementObjects[count++] = element; |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public Enumeration elements() { |
||||||
|
return new ArrayEnum(count, elementObjects); |
||||||
|
} |
||||||
|
|
||||||
|
public Object clone() { |
||||||
|
try { |
||||||
|
SimpleSet other = (SimpleSet) super.clone(); |
||||||
|
if (count > 0) { |
||||||
|
other.elementObjects = new Object[count]; |
||||||
|
System.arraycopy(elementObjects, 0, |
||||||
|
other.elementObjects, 0, count); |
||||||
|
} |
||||||
|
return other; |
||||||
|
} catch (CloneNotSupportedException ex) { |
||||||
|
throw new jode.AssertError("Clone?"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
///#ifdef JDK12
|
||||||
|
/// public Iterator iterator() {
|
||||||
|
/// return new Iterator() {
|
||||||
|
/// int pos = 0;
|
||||||
|
///
|
||||||
|
/// public boolean hasNext() {
|
||||||
|
/// return pos < count;
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// public Object next() {
|
||||||
|
/// return elementObjects[pos++];
|
||||||
|
/// }
|
||||||
|
///
|
||||||
|
/// public void remove() {
|
||||||
|
/// if (pos < count)
|
||||||
|
/// System.arraycopy(elementObjects, pos,
|
||||||
|
/// elementObjects, pos-1, count - pos);
|
||||||
|
/// count--;
|
||||||
|
/// pos--;
|
||||||
|
/// }
|
||||||
|
/// };
|
||||||
|
/// }
|
||||||
|
///#else
|
||||||
|
|
||||||
|
public boolean isEmpty() { |
||||||
|
return count == 0; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean addAll(SimpleSet other) { |
||||||
|
boolean changed = false; |
||||||
|
for (int i=0; i < other.count; i++) { |
||||||
|
changed |= add(other.elementObjects[i]); |
||||||
|
} |
||||||
|
return changed; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean contains(Object element) { |
||||||
|
for (int i=0; i < count; i++) { |
||||||
|
if (elementObjects[i].equals(element)) |
||||||
|
return true; |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean remove(Object element) { |
||||||
|
for (int i=0; i< count; i++) { |
||||||
|
if (elementObjects[i].equals(element)) { |
||||||
|
count--; |
||||||
|
if (i < count) |
||||||
|
elementObjects[i] = elementObjects[count]; |
||||||
|
return true; |
||||||
|
} |
||||||
|
} |
||||||
|
return false; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean retainAll(SimpleSet other) { |
||||||
|
int low = 0; |
||||||
|
for (int high=0; high < count; high++) { |
||||||
|
if (other.contains(elementObjects[high])) |
||||||
|
elementObjects[low++] = elementObjects[high]; |
||||||
|
} |
||||||
|
if (count == low) |
||||||
|
return false; |
||||||
|
count = low; |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public boolean removeAll(SimpleSet other) { |
||||||
|
int low = 0; |
||||||
|
for (int high=0; high < count; high++) { |
||||||
|
if (!other.contains(elementObjects[high])) |
||||||
|
elementObjects[low++] = elementObjects[high]; |
||||||
|
} |
||||||
|
if (count == low) |
||||||
|
return false; |
||||||
|
count = low; |
||||||
|
return true; |
||||||
|
} |
||||||
|
|
||||||
|
public String toString() { |
||||||
|
StringBuffer sb = new StringBuffer("{"); |
||||||
|
String komma = ""; |
||||||
|
for (int i=0; i< count; i++) { |
||||||
|
sb.append(komma).append(elementObjects[i].toString()); |
||||||
|
komma = ", "; |
||||||
|
} |
||||||
|
return sb.append("}").toString(); |
||||||
|
} |
||||||
|
///#endif
|
||||||
|
} |
@ -0,0 +1,102 @@ |
|||||||
|
/* AnonymousJavac Copyright (C) 1999 Jochen Hoenicke. |
||||||
|
* |
||||||
|
* 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. |
||||||
|
* |
||||||
|
* This program is distributed in the hope that it will be useful, |
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
* GNU General Public License for more details. |
||||||
|
* |
||||||
|
* You should have received a copy of the GNU General Public License |
||||||
|
* along with this program; see the file COPYING. If not, write to |
||||||
|
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. |
||||||
|
* |
||||||
|
* $Id$ |
||||||
|
*/ |
||||||
|
|
||||||
|
package jode.test; |
||||||
|
|
||||||
|
import java.util.Vector; |
||||||
|
|
||||||
|
public class AnonymousJavac { |
||||||
|
class Inner { |
||||||
|
int var = 3; |
||||||
|
|
||||||
|
public void test() { |
||||||
|
class Hello { |
||||||
|
int var = 4; |
||||||
|
|
||||||
|
Hello() { |
||||||
|
System.err.println("construct"); |
||||||
|
} |
||||||
|
Hello(String info) { |
||||||
|
System.err.println("construct: "+info); |
||||||
|
} |
||||||
|
|
||||||
|
public void hello() { |
||||||
|
this.hashCode(); |
||||||
|
Inner.this.hashCode(); |
||||||
|
Inner.this.var = var; |
||||||
|
AnonymousJavac.this.hashCode(); |
||||||
|
System.err.println("HelloWorld"); |
||||||
|
} |
||||||
|
}; |
||||||
|
final Hello hi = new Hello(); |
||||||
|
final Hello ho = new Hello("ho"); |
||||||
|
final Object o = new Object() { |
||||||
|
int blah = 5; |
||||||
|
Hello hii = hi; |
||||||
|
|
||||||
|
public String toString() { |
||||||
|
this.hii.hello(); |
||||||
|
hi.hello(); |
||||||
|
return Integer.toHexString(AnonymousJavac.this.hashCode() |
||||||
|
+blah); |
||||||
|
} |
||||||
|
}; |
||||||
|
Object p = new Object() { |
||||||
|
public String toString() { |
||||||
|
return o.toString(); |
||||||
|
} |
||||||
|
}; |
||||||
|
// Hello blah = new Hello("Hello World") {
|
||||||
|
// public void hello() {
|
||||||
|
// System.err.println("overwritten");
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
|
||||||
|
Inner blub1 = new Inner("Inner param") { |
||||||
|
public void test() { |
||||||
|
System.err.println("overwritten"); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
Inner blub2 = new AnonymousJavac().new Inner("Inner param") { |
||||||
|
public void test() { |
||||||
|
System.err.println("overwritten"); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
class Hi extends Inner { |
||||||
|
public Hi() { |
||||||
|
super("Hi World"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
Vector v = new Vector(hi.var, var) { |
||||||
|
public String toString() { |
||||||
|
return super.toString(); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
Hi hu = new Hi(); |
||||||
|
|
||||||
|
} |
||||||
|
Inner (String str) { |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue