/******************************************************************************
* Copyright (c) 2002 - 2012 IBM Corporation.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*****************************************************************************/
package com.ibm.wala.cast.js.callgraph.fieldbased.flowgraph.vertices;
/**
* A parameter vertex represents a positional parameter of a function. It doesn't
* necessarily need to correspond to a named parameter.
*
* <p>
* Numbering of positional parameters is 1-based, with parameter 0 being the
* <code>this</code> value.
* </p>
*
* <p>
* A named parameter is an ordinary SSA variable, hence it is represented as
* a {@link VarVertex}. The flow graph builder sets up edges between parameter
* vertices and their corresponding variable vertices for named parameters.
* </p>
*
* @author mschaefer
*
*/
public class ParamVertex extends Vertex {
private FuncVertex func;
private int index;
ParamVertex(FuncVertex func, int index) {
this.func = func;
this.index = index;
}
public FuncVertex getFunc() {
return func;
}
public int getIndex() {
return index;
}
@Override
public <T> T accept(VertexVisitor<T> visitor) {
return visitor.visitParamVertex(this);
}
@Override
public String toString() {
return "Param(" + func + ", " + index + ")";
}
}