/* * Fernflower - The Analytical Java Decompiler * http://www.reversed-java.com * * (C) 2008 - 2010, Stiver * * This software is NEITHER public domain NOR free software * as per GNU License. See license.txt for more details. * * This software is distributed WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. */ package org.jetbrains.java.decompiler.struct.gen; import java.util.ArrayList; import java.util.List; import org.jetbrains.java.decompiler.code.CodeConstants; import org.jetbrains.java.decompiler.struct.StructMethod; import org.jetbrains.java.decompiler.util.ListStack; public class DataPoint { private List localVariables = new ArrayList(); private ListStack stack = new ListStack(); public void setVariable(int index, VarType value) { if(index>=localVariables.size()) { for(int i=localVariables.size();i<=index;i++) { localVariables.add(new VarType(CodeConstants.TYPE_NOTINITIALIZED)); } } localVariables.set(index, value); } public VarType getVariable(int index) { if(index(localVariables)); point.setStack(stack.clone()); return point; } public static DataPoint getInitialDataPoint(StructMethod mt) { DataPoint point = new DataPoint(); MethodDescriptor md = MethodDescriptor.parseDescriptor(mt.getDescriptor()); int k = 0; if((mt.getAccessFlags() & CodeConstants.ACC_STATIC) == 0) { point.setVariable(k++, new VarType(CodeConstants.TYPE_OBJECT, 0, null)); } for(int i=0;i getLocalVariables() { return localVariables; } public void setLocalVariables(List localVariables) { this.localVariables = localVariables; } public ListStack getStack() { return stack; } public void setStack(ListStack stack) { this.stack = stack; } }