WALA/com.ibm.wala.cast/source/java/com/ibm/wala/cast/ir/translator/AbstractCodeEntity.java

93 lines
2.4 KiB
Java

/******************************************************************************
* Copyright (c) 2002 - 2014 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.ir.translator;
import com.ibm.wala.cast.tree.CAstControlFlowMap;
import com.ibm.wala.cast.tree.CAstNode;
import com.ibm.wala.cast.tree.CAstNodeTypeMap;
import com.ibm.wala.cast.tree.CAstSourcePositionMap;
import com.ibm.wala.cast.tree.CAstSourcePositionMap.Position;
import com.ibm.wala.cast.tree.CAstType;
import com.ibm.wala.cast.tree.impl.CAstControlFlowRecorder;
import com.ibm.wala.cast.tree.impl.CAstNodeTypeMapRecorder;
import com.ibm.wala.cast.tree.impl.CAstSourcePositionRecorder;
public abstract class AbstractCodeEntity extends AbstractEntity {
protected final CAstSourcePositionRecorder src = new CAstSourcePositionRecorder();
protected final CAstControlFlowRecorder cfg = new CAstControlFlowRecorder(src);
protected final CAstNodeTypeMapRecorder types = new CAstNodeTypeMapRecorder();
protected final CAstType type;
protected CAstNode Ast;
protected AbstractCodeEntity(CAstType type) {
this.type = type;
}
@Override
public CAstNode getAST() {
return Ast;
}
@Override
public CAstType getType() {
return type;
}
@Override
public CAstControlFlowMap getControlFlow() {
return cfg;
}
@Override
public CAstSourcePositionMap getSourceMap() {
return src;
}
@Override
public CAstNodeTypeMap getNodeTypeMap() {
return types;
}
public void setGotoTarget(CAstNode from, CAstNode to) {
setLabelledGotoTarget(from, to, null);
}
public void setLabelledGotoTarget(CAstNode from, CAstNode to, Object label) {
if (!cfg.isMapped(from)) {
cfg.map(from, from);
}
if (!cfg.isMapped(to)) {
cfg.map(to, to);
}
cfg.add(from, to, label);
}
public void setNodePosition(CAstNode n, Position pos) {
src.setPosition(n, pos);
}
public void setNodeType(CAstNode n, CAstType type) {
types.add(n, type);
}
public void setAst(CAstNode Ast) {
this.Ast = Ast;
}
}