blob: 19efafe9a697aaa9f9ca8e5e52d1f07d200cc753 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2006 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.ompcfg;
import org.eclipse.ptp.pldt.openmp.analysis.PAST.PASTOMPPragma;
/**
*
* @author pazel
*
*/
public class OMPPragmaNode extends OMPCFGNode
{
protected PASTOMPPragma pragma_ = null; // pragma we are holding
protected OMPPragmaNode contextPred_ = null; // backward chain of context
protected boolean implicitBarrier_ = false; // used to tie parallel/for/sections end
/**
* OMPPragmaNode - Constructor
* @param pragma - PASTOMPPragma
* @param contextPredecessor - OMPPragmaNode
*/
public OMPPragmaNode(PASTOMPPragma pragma, OMPPragmaNode contextPredecessor)
{
super();
pragma_ = pragma;
contextPred_ = contextPredecessor;
}
/**
* OMPPragmaNode - constructor
* @param pragma - PASTOMPPragma
*/
public OMPPragmaNode(PASTOMPPragma pragma)
{
super();
pragma_ = pragma;
}
public OMPPragmaNode()
{
super();
implicitBarrier_ = true;
}
/**
* getPragma - accessor to pragma
* @return PASTOMPPragma
*/
public PASTOMPPragma getPragma()
{
return pragma_;
}
/**
* isImplicitBarrier - returns whether if is implicit barrier
* @return boolean
*/
public boolean isImplicitBarrier()
{
return implicitBarrier_;
}
/**
* getContextPredecessor - get the pragma context predecessor
* @return
*/
public OMPPragmaNode getContextPredecessor()
{
return contextPred_;
}
/**
* getContext - get the list of related pragma - most recent to oldest [0--N]
* @return OMPPragmaNode []
*/
public OMPPragmaNode [] getContext()
{
int count = 0;
OMPPragmaNode pred = this;
while(pred!=null) {
count++;
pred=pred.getContextPredecessor();
}
OMPPragmaNode [] list = new OMPPragmaNode[count];
int i = 0;
pred = this;
while(pred!=null) {
list[i++] = pred;
pred=pred.getContextPredecessor();
}
return list;
}
public String getType()
{
if (pragma_!=null) return pragma_.getType();
else {
if (implicitBarrier_) return "implicit barrier";
}
return "";
}
}