blob: 10314ff35e3c9fa135f57fd9e7d8a7c615fda987 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2006, 2007 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 org.eclipse.ptp.pldt.openmp.analysis.PAST;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTNodeLocation;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
/**
* Preprocessor node, pseudo for IASTNode, used for analysis
*
* @author pazel
*
*/
public abstract class PASTNode implements IASTNode
{
protected ASTNode astNode_ = null;
protected boolean compiled_ = false;
// Location information
protected int startingLine_ = -1;
protected int startLocation_ = -1;
protected int endLocation_ = -1;
protected String filename_ = "";
/**
* PASTNode - Constructor
* @param astNode: LocationMap.ScannerASTNode
*/
public PASTNode(ASTNode astNode)
{
astNode_ = astNode;
getLocationInfo();
}
/**
* PASTNode - Copy Constructor
* @param n
*/
public PASTNode(PASTNode n)
{
astNode_ = n.astNode_;
compiled_ = n.compiled_;
startingLine_ = n.startingLine_;
startLocation_ = n.startLocation_;
filename_ = n.filename_;
}
/**
* getLocationInfo - Line number, offset, etc
*
*/
protected void getLocationInfo()
{
IASTNodeLocation[] locations = astNode_.getNodeLocations();
filename_ = astNode_.getContainingFilename();
if (locations.length == 1) {
IASTFileLocation astFileLocation = null;
if (locations[0] instanceof IASTFileLocation) {
astFileLocation = (IASTFileLocation) locations[0];
startingLine_ = astFileLocation.getStartingLineNumber();
startLocation_ = astFileLocation.getNodeOffset();
endLocation_ = astFileLocation.getNodeOffset() + astFileLocation.getNodeLength();
}
}
}
/**
* getFilename - accessor
* @return String
*/
public String getFilename() { return filename_; }
/**
* getStartingLine - accessor
* @return int
*/
public int getStartingLine() { return startingLine_; }
/**
* getStartLocation - accessor
* @return int
*/
public int getStartLocation() { return startLocation_; }
/**
* getEndLocation - accessor
* @return int
*/
public int getEndLocation() { return endLocation_; }
/**
* getType - descriptive text for type of node
* @return String
*/
public abstract String getType();
/**
* setCompiled - setter
* @param compiled: boolean
*/
public void setCompiled(boolean compiled)
{
compiled_ = compiled;
}
/**
* isCompiled - accessor
* @return boolean
*/
public boolean isCompiled()
{
return compiled_;
}
/**
* delegated methods for interface IASTNode
*/
public boolean accept(ASTVisitor visitor) {
return astNode_.accept(visitor);
}
/** @since cdt40*/
public boolean contains(IASTNode node) {
return astNode_.contains(node);
}
public String getContainingFilename() {
return astNode_.getContainingFilename();
}
public IASTFileLocation getFileLocation() {
return astNode_.getFileLocation();
}
public IASTNodeLocation[] getNodeLocations() {
return astNode_.getNodeLocations();
}
public IASTNode getParent() {
return astNode_.getParent();
}
public ASTNodeProperty getPropertyInParent() {
return astNode_.getPropertyInParent();
}
public String getRawSignature() {
return astNode_.getRawSignature();
}
public IASTTranslationUnit getTranslationUnit() {
return astNode_.getTranslationUnit();
}
public void setParent(IASTNode node) {
astNode_.setParent(node);
}
public void setPropertyInParent(ASTNodeProperty property) {
astNode_.setPropertyInParent(property);
}
}