93 lines
2.4 KiB
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;
|
|
}
|
|
}
|