Class CAstCloner
java.lang.Object
com.ibm.wala.cast.tree.rewrite.CAstRewriter<CAstBasicRewriter.NonCopyingContext, CAstBasicRewriter.NoKey>
com.ibm.wala.cast.tree.rewrite.CAstBasicRewriter<CAstBasicRewriter.NonCopyingContext>
com.ibm.wala.cast.tree.rewrite.CAstCloner
- Direct Known Subclasses:
PatternBasedRewriter
-
Nested Class Summary
Nested classes/interfaces inherited from class CAstBasicRewriter
CAstBasicRewriter.NoKey, CAstBasicRewriter.NonCopyingContextModifier and TypeClassDescriptionstatic classkey indicating that no duplication is being performedstatic classcontext indicating that no cloning is being performedNested classes/interfaces inherited from class CAstRewriter
CAstRewriter.CopyKey<Self>, CAstRewriter.Rewrite, CAstRewriter.RewriteContext<K>Modifier and TypeClassDescriptionstatic interfaceCAstRewriter.CopyKey<Self extends CAstRewriter.CopyKey<Self>>interface to be implemented by keys used for cloning sub-trees during the rewritestatic interfacerepresents a rewritten CAststatic interfaceCAstRewriter.RewriteContext<K extends CAstRewriter.CopyKey<K>>interface to be implemented by contexts used while traversing the AST -
Field Summary
Fields inherited from class CAstRewriter
Ast, DEBUG, recursive, rootContextModifier and TypeFieldDescriptionprotected final CAstprotected static final booleanprotected final booleanfor CAstEntity nodes r s.t.protected final CAstBasicRewriter.NonCopyingContext -
Constructor Summary
ConstructorsModifierConstructorDescriptionCAstCloner(CAst Ast) CAstCloner(CAst Ast, boolean recursive) protectedCAstCloner(CAst Ast, CAstBasicRewriter.NonCopyingContext context, boolean recursive) -
Method Summary
Modifier and TypeMethodDescriptioncopy(CAstNode root, CAstControlFlowMap cfg, CAstSourcePositionMap pos, CAstNodeTypeMap types, Map<CAstNode, Collection<CAstEntity>> children, CAstNode[] defaults) protected CAstNodecopyNodes(CAstNode root, CAstControlFlowMap cfg, CAstBasicRewriter.NonCopyingContext context, Map<Pair<CAstNode, @NonNull CAstBasicRewriter.NoKey>, CAstNode> nodeMap, Pair<CAstNode, CAstBasicRewriter.NoKey> pairKey) protected CAstNodecopyNodes(CAstNode root, CAstControlFlowMap cfg, CAstBasicRewriter.NonCopyingContext context, Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, CAstNode> nodeMap) rewrite the CAst rooted at root under some context, returning the node at the root of the rewritten tree.Methods inherited from class CAstRewriter
copyChildren, copyChildrenArray, copyChildrenArrayAndTargets, copyFlow, copySource, copySubtreesIntoNewNode, copySubtreesIntoNewNode, copyTypes, flowOutTo, rewrite, rewriteModifier and TypeMethodDescriptionprotected Map<CAstNode, Collection<CAstEntity>> copyChildren(CAstNode root, Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, CAstNode> nodeMap, Map<CAstNode, @NonNull Collection<CAstEntity>> children) copyChildrenArray(CAstNode n, CAstControlFlowMap cfg, CAstBasicRewriter.NonCopyingContext context, Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, CAstNode> nodeMap) copyChildrenArrayAndTargets(CAstNode n, CAstControlFlowMap cfg, CAstBasicRewriter.NonCopyingContext context, Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, CAstNode> nodeMap) protected CAstControlFlowMapcopyFlow(Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, @NonNull CAstNode> nodeMap, CAstControlFlowMap orig, CAstSourcePositionMap newSrc) create a control-flow map for the rewritten tree, given the mapping from (original node, copy key) pairs ot new nodes and the original control-flow map.protected CAstSourcePositionMapcopySource(Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, CAstNode> nodeMap, CAstSourcePositionMap orig) protected CAstNodecopySubtreesIntoNewNode(CAstNode n, CAstControlFlowMap cfg, CAstBasicRewriter.NonCopyingContext c, Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, CAstNode> nodeMap) protected CAstNodecopySubtreesIntoNewNode(CAstNode n, CAstControlFlowMap cfg, CAstBasicRewriter.NonCopyingContext c, Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, CAstNode> nodeMap, Pair<CAstNode, CAstBasicRewriter.NoKey> pairKey) protected CAstNodeTypeMapcopyTypes(Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, CAstNode> nodeMap, CAstNodeTypeMap orig) protected CAstNodeflowOutTo(Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, CAstNode> nodeMap, CAstNode oldSource, Object label, CAstNode oldTarget, CAstControlFlowMap orig, CAstSourcePositionMap src) inCAstRewriter.copyFlow(Map, CAstControlFlowMap, CAstSourcePositionMap), if the source of some original CFG edge is replicated, but we find no replica for the target, what node should be the target of the CFG edge in the rewritten AST? By default, just uses the original target.rewrite(CAstEntity root) perform the rewrite on aCAstEntity, returning the newCAstEntityas the resultrewrite(CAstNode root, CAstControlFlowMap cfg, CAstSourcePositionMap pos, CAstNodeTypeMap types, Map<CAstNode, Collection<CAstEntity>> children, CAstNode[] defaults) rewrite the CAst sub-tree rooted at root
-
Constructor Details
-
CAstCloner
-
CAstCloner
-
CAstCloner
-
-
Method Details
-
copyNodes
protected CAstNode copyNodes(CAstNode root, CAstControlFlowMap cfg, CAstBasicRewriter.NonCopyingContext context, Map<Pair<CAstNode, CAstBasicRewriter.NoKey>, CAstNode> nodeMap) Description copied from class:CAstRewriterrewrite the CAst rooted at root under some context, returning the node at the root of the rewritten tree. mutate nodeMap in the process, indicating how (original node, copy key) pairs are mapped to nodes in the rewritten tree.- Specified by:
copyNodesin classCAstBasicRewriter<CAstBasicRewriter.NonCopyingContext>
-
copyNodes
protected CAstNode copyNodes(CAstNode root, CAstControlFlowMap cfg, CAstBasicRewriter.NonCopyingContext context, Map<Pair<CAstNode, @NonNull CAstBasicRewriter.NoKey>, CAstNode> nodeMap, Pair<CAstNode, CAstBasicRewriter.NoKey> pairKey) -
copy
public CAstRewriter.Rewrite copy(CAstNode root, CAstControlFlowMap cfg, CAstSourcePositionMap pos, CAstNodeTypeMap types, Map<CAstNode, Collection<CAstEntity>> children, CAstNode[] defaults)
-