ujf.verimag.bip.codegen
Class FindInteractionPointsVisitor

java.lang.Object
  extended by CBasicVisitor
      extended by ujf.verimag.bip.codegen.CBipVisitor
          extended by ujf.verimag.bip.codegen.FindInteractionPointsVisitor

public class FindInteractionPointsVisitor
extends CBipVisitor

This visitor searches for interaction point within the parsed C code. The interaction point are matched against function call (symbol name). It can't handle function pointer. It does not create any BIP code. It simply fills its attributes so that other software can use the gathered information.


Field Summary
protected  java.util.Map<Statement,java.util.Set<InteractionPoint>> contains_interaction
          Contains all objects that contain interaction with one or many interface.
protected  java.util.logging.Logger logger
           
protected  java.util.Set<InteractionPoint> propagate_interaction
          This list is used to indicate upper visiting method that a sub node contains interaction points.
 
Fields inherited from class ujf.verimag.bip.codegen.CBipVisitor
interaction_method_names
 
Constructor Summary
FindInteractionPointsVisitor()
           
 
Method Summary
 java.util.Map<Statement,java.util.Set<InteractionPoint>> getStatementWithInnerInteraction()
           
protected  void localPropagate(java.util.Set<InteractionPoint> local)
          Method to be called immediately after any accept() call.
 void postVisitBlock( b)
           
 void postVisitBlockElement(Statement s, boolean lastElement)
           
protected  void pre()
           
 void preVisitBlock( b)
           
 void preVisitBlockElement(Statement s)
           
protected  void upPropagate(java.util.Set<InteractionPoint> local, Statement node)
          Method to be called last within any visit() method.
 void visit( t)
           
 void visit( t)
           
 void visit( t)
           
protected  void visit( v)
           
 void visit( v)
           
 void visit( b)
           
 void visit( b)
           
 void visit( b)
           
 void visit( b)
           
<ElementTypeClass extends CType>
void
visit( e)
           
<ElemTypeClass extends CType>
void
visit( t)
           
<ElemTypeClass extends CType>
void
visit( v)
           
<RefTypeClass extends CType>
void
visit( t)
           
<RefTypeClass extends CType>
void
visit( v)
           
<RefTypeClass extends CType>
void
visit( e)
           
<RetTypeClass extends CType>
void
visit( e)
           
<RetTypeClass extends CType>
void
visit( d)
           
<RetTypeClass extends CType>
void
visit( t)
           
<RetTypeClass extends CType>
void
visit( v)
           
<TypeClass extends >
void
visit( e)
           
<TypeClass extends CType>
void
visit( d)
           
<TypeClass extends CType>
void
visit( d)
           
<TypeClass extends CType>
void
visit( d)
           
<TypeClass extends CType>
void
visit( d)
           
<TypeClass extends CType>
void
visit( e)
           
<TypeClass extends CType>
void
visit( e)
           
<TypeClass extends CType>
void
visit( e)
           
<TypeClass extends CType>
void
visit( e)
           
<TypeClass extends CType>
void
visit( e)
           
<TypeClass extends CType>
void
visit( e)
           
<TypeClass extends CType>
void
visit( e)
           
<TypeClass extends CType>
void
visit( e)
           
<TypeClass extends CType>
void
visit( e)
           
<TypeClass extends CType>
void
visit( e)
           
<VarTypeClass extends CType>
void
visit( e)
           
 void visit(ArgumentBlock b)
           
 void visit(ASMStatement c)
           
 void visit(Break c)
           
 void visit(CaseBlock b)
           
 void visit(CBasicStatement s)
           
 void visit(CBlock b)
           
 void visit(Char v)
           
 void visit(CharC e)
           
 void visit(CharT t)
           
 void visit(Comment c)
           
 void visit(Continue c)
           
 void visit(CString e)
           
 void visit(DoubleC e)
           
 void visit(DoubleT t)
           
 void visit(DoWhile c)
           
 void visit(EmptyLines s)
           
 void visit(EnumBlock b)
           
 void visit(EnumC e)
           
 void visit(EnumT t)
           
 void visit(EnumTDeclaration d)
           
 void visit(EnumTPredeclaration d)
           
 void visit(FieldAssignment c)
           
 void visit(FloatC e)
           
 void visit(FloatT t)
           
 void visit(For c)
           
 void visit(ForInit b)
           
 void visit(ForIter b)
           
 void visit(FunctionBlock b)
           
 void visit(GotoStatement c)
           
 void visit(IfDirective d)
           
 void visit(IfElse c)
           
 void visit(IncludeDirective d)
           
 void visit(Int v)
           
 void visit(IntC e)
           
 void visit(IntT t)
           
 void visit(Label l)
           
 void visit(LongC e)
           
 void visit(LongDouble v)
           
 void visit(LongDoubleC e)
           
 void visit(LongDoubleT t)
           
 void visit(LongLong v)
           
 void visit(LongLongC e)
           
 void visit(LongLongT t)
           
 void visit(LongT t)
           
 void visit(MacroDeclaration m)
           
 void visit(MacroUndef m)
           
 void visit(ParameterBlock b)
           
 void visit(Return c)
           
 void visit(ShortC e)
           
 void visit(ShortT t)
           
 void visit(SizeOfExpr e)
           
 void visit(SizeOfType e)
           
 void visit(SizeOfVar e)
           
 void visit(StatementBlock b)
           
 void visit(StringInitValue b)
           
 void visit(StringLiteral e)
           
 void visit(Struct v)
           
 void visit(StructInitValue b)
           
 void visit(StructOrUnionBlock b)
           
 void visit(StructT t)
           
 void visit(StructTDeclaration d)
           
 void visit(StructTPredeclaration d)
           
 void visit(StructValue e)
           
 void visit(SwitchCase c)
           
 void visit(Union v)
           
 void visit(UnionInitValue b)
           
 void visit(UnionT t)
           
 void visit(UnionTDeclaration d)
           
 void visit(UnionTPredeclaration d)
           
 void visit(UnionValue e)
           
 void visit(VaArg e)
           
 void visit(VoidT t)
           
 void visit(WhileDo c)
           
 void visitIncDecAbstract( e)
           
protected  void visitStructOrUnionT( t)
           
 
Methods inherited from class ujf.verimag.bip.codegen.CBipVisitor
addInteractionMethod, addInteractionMethod, clearInteractionMethods, getMatchForFunctionCall, matchAnyFunctionCall
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logger

protected java.util.logging.Logger logger

contains_interaction

protected java.util.Map<Statement,java.util.Set<InteractionPoint>> contains_interaction
Contains all objects that contain interaction with one or many interface.


propagate_interaction

protected final java.util.Set<InteractionPoint> propagate_interaction
This list is used to indicate upper visiting method that a sub node contains interaction points. Empty means no interaction found during the last visit()/accept() invocation.

Constructor Detail

FindInteractionPointsVisitor

public FindInteractionPointsVisitor()
Method Detail

getStatementWithInnerInteraction

public java.util.Map<Statement,java.util.Set<InteractionPoint>> getStatementWithInnerInteraction()
Returns:
the map of codegen object that contains interactions (as a list of string)

pre

protected void pre()

localPropagate

protected void localPropagate(java.util.Set<InteractionPoint> local)
Method to be called immediately after any accept() call. It takes care of gathering information from the sub just visited through the 'propagate_interaction' set.

Parameters:
local - the current local set of interactions

upPropagate

protected void upPropagate(java.util.Set<InteractionPoint> local,
                           Statement node)
Method to be called last within any visit() method. It takes care of filling the 'propagate_interaction' for the caller method.

Parameters:
local -
node -

visit

public <RetTypeClass extends CType> void visit( e)

visit

public void visit(CBasicStatement s)

visit

public <TypeClass extends CType> void visit( d)

visit

public <RetTypeClass extends CType> void visit( d)

visit

public <TypeClass extends CType> void visit( d)

visit

public void visit(EnumTDeclaration d)

visit

public void visit(EnumTPredeclaration d)

visit

public void visit(StructTDeclaration d)

visit

public void visit(StructTPredeclaration d)

visit

public void visit(UnionTDeclaration d)

visit

public void visit(UnionTPredeclaration d)

visit

public <TypeClass extends CType> void visit( d)

visit

public <TypeClass extends CType> void visit( d)

visit

public void visit( t)

visit

public <ElemTypeClass extends CType> void visit( t)

visit

public void visit( t)

visit

public void visit(CharT t)

visit

public void visit(DoubleT t)

visit

public void visit(FloatT t)

visit

public void visit(IntT t)

visit

public void visit(LongT t)

visit

public void visit(LongLongT t)

visit

public void visit(LongDoubleT t)

visit

public void visit(ShortT t)

visit

public void visit(VoidT t)

visit

public void visit(EnumT t)

visit

public <RetTypeClass extends CType> void visit( t)

visit

public <RefTypeClass extends CType> void visit( t)

visit

public void visit(StructT t)

visitStructOrUnionT

protected void visitStructOrUnionT( t)

visit

public void visit(UnionT t)

visit

public void visit( t)

visit

protected void visit( v)

visit

public <ElemTypeClass extends CType> void visit( v)

visit

public void visit( v)

visit

public void visit(Char v)

visit

public void visit(Int v)

visit

public void visit(LongLong v)

visit

public void visit(LongDouble v)

visit

public <RetTypeClass extends CType> void visit( v)

visit

public <RefTypeClass extends CType> void visit( v)

visit

public void visit(Struct v)

visit

public void visit(Union v)

visit

public <VarTypeClass extends CType> void visit( e)

visit

public <TypeClass extends CType> void visit( e)

visit

public <TypeClass extends CType> void visit( e)

visit

public <TypeClass extends CType> void visit( e)

visit

public <TypeClass extends CType> void visit( e)

visit

public <TypeClass extends > void visit( e)

visit

public void visit(CharC e)

visit

public void visit(DoubleC e)

visit

public void visit(FloatC e)

visit

public void visit(IntC e)

visit

public void visit(LongC e)

visit

public void visit(LongDoubleC e)

visit

public void visit(LongLongC e)

visit

public void visit(ShortC e)

visit

public void visit(CString e)

visit

public void visit(EnumC e)

visit

public void visit(StringLiteral e)

visit

public void visit(SizeOfType e)

visit

public void visit(SizeOfVar e)

visit

public void visit(SizeOfExpr e)

visit

public <TypeClass extends CType> void visit( e)

visit

public <TypeClass extends CType> void visit( e)

visit

public <RefTypeClass extends CType> void visit( e)

visit

public <ElementTypeClass extends CType> void visit( e)

visit

public void visit(StructValue e)

visit

public void visit(UnionValue e)

visit

public <TypeClass extends CType> void visit( e)

visitIncDecAbstract

public void visitIncDecAbstract( e)

visit

public <TypeClass extends CType> void visit( e)

visit

public <TypeClass extends CType> void visit( e)

visit

public void visit(Break c)

visit

public void visit(Continue c)

visit

public void visit(GotoStatement c)

visit

public void visit(Label l)

visit

public void visit(IfElse c)

visit

public void visit(Return c)

visit

public void visit(SwitchCase c)

visit

public void visit(DoWhile c)

visit

public void visit(WhileDo c)

visit

public void visit(For c)

visit

public void visit(CBlock b)

visit

public void visit(StatementBlock b)

visit

public void visit( b)

visit

public void visit(ForInit b)

visit

public void visit(ForIter b)

preVisitBlockElement

public void preVisitBlockElement(Statement s)

postVisitBlockElement

public void postVisitBlockElement(Statement s,
                                  boolean lastElement)

preVisitBlock

public void preVisitBlock( b)

postVisitBlock

public void postVisitBlock( b)

visit

public void visit( b)

visit

public void visit(ArgumentBlock b)

visit

public void visit(ParameterBlock b)

visit

public void visit( b)

visit

public void visit(StructOrUnionBlock b)

visit

public void visit(EnumBlock b)

visit

public void visit(StructInitValue b)

visit

public void visit(UnionInitValue b)

visit

public void visit( b)

visit

public void visit(StringInitValue b)

visit

public void visit(CaseBlock b)

visit

public void visit(FunctionBlock b)

visit

public void visit(FieldAssignment c)

visit

public void visit(MacroDeclaration m)

visit

public void visit(MacroUndef m)

visit

public void visit(IfDirective d)

visit

public void visit(IncludeDirective d)

visit

public void visit(Comment c)

visit

public void visit(EmptyLines s)

visit

public void visit(ASMStatement c)

visit

public <TypeClass extends CType> void visit( e)

visit

public void visit(VaArg e)