Class CAstRewriterExt

  • Direct Known Subclasses:
    ClosureExtractor

    public abstract class CAstRewriterExt
    extends com.ibm.wala.cast.tree.rewrite.CAstRewriter<NodePos,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>
    Extension of CAstRewriter which allows adding or deleting control flow edges, and keeps track of the current entity.

    TODO: This class is an unholy mess. It should be restructured considerably.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      protected static class  CAstRewriterExt.Edge
      A control flow edge to be added to the CFG.
      • Nested classes/interfaces inherited from class com.ibm.wala.cast.tree.rewrite.CAstRewriter

        com.ibm.wala.cast.tree.rewrite.CAstRewriter.CopyKey<Self extends com.ibm.wala.cast.tree.rewrite.CAstRewriter.CopyKey<Self>>, com.ibm.wala.cast.tree.rewrite.CAstRewriter.Rewrite, com.ibm.wala.cast.tree.rewrite.CAstRewriter.RewriteContext<K extends com.ibm.wala.cast.tree.rewrite.CAstRewriter.CopyKey<K>>
    • Field Summary

      • Fields inherited from class com.ibm.wala.cast.tree.rewrite.CAstRewriter

        Ast, DEBUG, recursive, rootContext
    • Constructor Summary

      Constructors 
      Constructor Description
      CAstRewriterExt​(com.ibm.wala.cast.tree.CAst Ast, boolean recursive, NodePos rootContext)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addEntity​(com.ibm.wala.cast.tree.CAstNode anchor, com.ibm.wala.cast.tree.CAstEntity entity)  
      com.ibm.wala.cast.tree.CAstNode addFlow​(com.ibm.wala.cast.tree.CAstNode node, java.lang.Object label, com.ibm.wala.cast.tree.CAstNode target, com.ibm.wala.cast.tree.CAstControlFlowMap flow)  
      com.ibm.wala.cast.tree.CAstNode addNode​(com.ibm.wala.cast.tree.CAstNode node, com.ibm.wala.cast.tree.CAstControlFlowMap flow)  
      protected java.util.Map<com.ibm.wala.cast.tree.CAstNode,​java.util.Collection<com.ibm.wala.cast.tree.CAstEntity>> copyChildren​(com.ibm.wala.cast.tree.CAstNode root, java.util.Map<com.ibm.wala.util.collections.Pair<com.ibm.wala.cast.tree.CAstNode,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>,​com.ibm.wala.cast.tree.CAstNode> nodeMap, java.util.Map<com.ibm.wala.cast.tree.CAstNode,​java.util.Collection<com.ibm.wala.cast.tree.CAstEntity>> children)  
      protected com.ibm.wala.cast.tree.CAstControlFlowMap copyFlow​(java.util.Map<com.ibm.wala.util.collections.Pair<com.ibm.wala.cast.tree.CAstNode,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>,​com.ibm.wala.cast.tree.CAstNode> nodeMap, com.ibm.wala.cast.tree.CAstControlFlowMap orig, com.ibm.wala.cast.tree.CAstSourcePositionMap newSrc)  
      void deleteFlow​(com.ibm.wala.cast.tree.CAstNode node, com.ibm.wala.cast.tree.CAstEntity entity)  
      protected void enterEntity​(com.ibm.wala.cast.tree.CAstEntity entity)  
      protected com.ibm.wala.cast.tree.CAstNode flowOutTo​(java.util.Map<com.ibm.wala.util.collections.Pair<com.ibm.wala.cast.tree.CAstNode,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>,​com.ibm.wala.cast.tree.CAstNode> nodeMap, com.ibm.wala.cast.tree.CAstNode oldSource, java.lang.Object label, com.ibm.wala.cast.tree.CAstNode oldTarget, com.ibm.wala.cast.tree.CAstControlFlowMap orig, com.ibm.wala.cast.tree.CAstSourcePositionMap src)  
      com.ibm.wala.cast.tree.CAstEntity getCurrentEntity()  
      java.lang.Iterable<com.ibm.wala.cast.tree.CAstEntity> getEnclosingEntities()  
      protected boolean isFlowDeleted​(com.ibm.wala.cast.tree.CAstNode node, com.ibm.wala.cast.tree.CAstEntity entity)  
      protected void leaveEntity()  
      com.ibm.wala.cast.tree.CAstEntity rewrite​(com.ibm.wala.cast.tree.CAstEntity root)  
      • Methods inherited from class com.ibm.wala.cast.tree.rewrite.CAstRewriter

        copyChildrenArray, copyChildrenArrayAndTargets, copyNodes, copySource, copySubtreesIntoNewNode, copySubtreesIntoNewNode, copyTypes, rewrite
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • CAstRewriterExt

        public CAstRewriterExt​(com.ibm.wala.cast.tree.CAst Ast,
                               boolean recursive,
                               NodePos rootContext)
    • Method Detail

      • addNode

        public com.ibm.wala.cast.tree.CAstNode addNode​(com.ibm.wala.cast.tree.CAstNode node,
                                                       com.ibm.wala.cast.tree.CAstControlFlowMap flow)
      • addFlow

        public com.ibm.wala.cast.tree.CAstNode addFlow​(com.ibm.wala.cast.tree.CAstNode node,
                                                       java.lang.Object label,
                                                       com.ibm.wala.cast.tree.CAstNode target,
                                                       com.ibm.wala.cast.tree.CAstControlFlowMap flow)
      • deleteFlow

        public void deleteFlow​(com.ibm.wala.cast.tree.CAstNode node,
                               com.ibm.wala.cast.tree.CAstEntity entity)
      • isFlowDeleted

        protected boolean isFlowDeleted​(com.ibm.wala.cast.tree.CAstNode node,
                                        com.ibm.wala.cast.tree.CAstEntity entity)
      • getCurrentEntity

        public com.ibm.wala.cast.tree.CAstEntity getCurrentEntity()
      • getEnclosingEntities

        public java.lang.Iterable<com.ibm.wala.cast.tree.CAstEntity> getEnclosingEntities()
      • addEntity

        public void addEntity​(com.ibm.wala.cast.tree.CAstNode anchor,
                              com.ibm.wala.cast.tree.CAstEntity entity)
      • copyChildren

        protected java.util.Map<com.ibm.wala.cast.tree.CAstNode,​java.util.Collection<com.ibm.wala.cast.tree.CAstEntity>> copyChildren​(com.ibm.wala.cast.tree.CAstNode root,
                                                                                                                                            java.util.Map<com.ibm.wala.util.collections.Pair<com.ibm.wala.cast.tree.CAstNode,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>,​com.ibm.wala.cast.tree.CAstNode> nodeMap,
                                                                                                                                            java.util.Map<com.ibm.wala.cast.tree.CAstNode,​java.util.Collection<com.ibm.wala.cast.tree.CAstEntity>> children)
        Overrides:
        copyChildren in class com.ibm.wala.cast.tree.rewrite.CAstRewriter<NodePos,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>
      • flowOutTo

        protected com.ibm.wala.cast.tree.CAstNode flowOutTo​(java.util.Map<com.ibm.wala.util.collections.Pair<com.ibm.wala.cast.tree.CAstNode,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>,​com.ibm.wala.cast.tree.CAstNode> nodeMap,
                                                            com.ibm.wala.cast.tree.CAstNode oldSource,
                                                            java.lang.Object label,
                                                            com.ibm.wala.cast.tree.CAstNode oldTarget,
                                                            com.ibm.wala.cast.tree.CAstControlFlowMap orig,
                                                            com.ibm.wala.cast.tree.CAstSourcePositionMap src)
        Overrides:
        flowOutTo in class com.ibm.wala.cast.tree.rewrite.CAstRewriter<NodePos,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>
      • copyFlow

        protected com.ibm.wala.cast.tree.CAstControlFlowMap copyFlow​(java.util.Map<com.ibm.wala.util.collections.Pair<com.ibm.wala.cast.tree.CAstNode,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>,​com.ibm.wala.cast.tree.CAstNode> nodeMap,
                                                                     com.ibm.wala.cast.tree.CAstControlFlowMap orig,
                                                                     com.ibm.wala.cast.tree.CAstSourcePositionMap newSrc)
        Overrides:
        copyFlow in class com.ibm.wala.cast.tree.rewrite.CAstRewriter<NodePos,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>
      • rewrite

        public com.ibm.wala.cast.tree.CAstEntity rewrite​(com.ibm.wala.cast.tree.CAstEntity root)
        Overrides:
        rewrite in class com.ibm.wala.cast.tree.rewrite.CAstRewriter<NodePos,​com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter.NoKey>
      • enterEntity

        protected void enterEntity​(com.ibm.wala.cast.tree.CAstEntity entity)
      • leaveEntity

        protected void leaveEntity()