/*
* @(#)Node.java
*/
package org.jf.dexlib.Code.Analysis.ssa.graphs;
import org.jf.dexlib.Code.Analysis.AnalyzedInstruction;
import org.jf.dexlib.Code.Analysis.ssa.PHI;
/**
* This interface represents a node.
* @author Patrick Kuhn
*/
public interface Node {
/**
* Returns whether this node contains an instruction.
* @return <tt>true</tt> if this node is an instruction.
*/
boolean isInstruction();
/**
* Returns whether this is the entry node of the programme.
* @return <tt>true</tt> if entry node
*/
boolean isEntry();
/**
* Returns whether this is the exit node of the programme.
* @return <tt>true</tt> if exit node
*/
boolean isExit();
/**
* Returns whether this is a phi node.
* @return <tt>true</tt> if phi node
*/
boolean isPHI();
/**
* Returns the instruction in this node if contained.
* @return the instruction
*/
AnalyzedInstruction getInstruction();
/**
* Returns the PHI-function of this node if contained.
* @return
*/
PHI getPHI();
/**
* Change variable name.
* @param varOriginal original variable name
* @param varNewName new variable name
*/
void changeVariableName(int varOriginal, String varNewName);
/**
* Change definition name.
* @param newName new definition name
*/
void changeDefinitionName(String newName);
}