abc.aspectj.visit
Class PatternMatcher

java.lang.Object
  extended by abc.aspectj.visit.PatternMatcher

public class PatternMatcher
extends java.lang.Object

Encapsulates the pattern matching code. Contains means for matching classname patterns, type patterns, method patterns, field patterns and constructor patterns.

Author:
Aske Simon Christensen, Damien Sereni

Method Summary
 java.util.regex.Pattern compileNamePattern(java.lang.String name_pat)
           
 void computeMatches(NamePattern pat, PCNode context, java.util.Set classes, java.util.Set packages)
           
static PatternMatcher create(PCStructure hierarchy)
           
 ClassnamePattern makeAIClassnamePattern(ClassnamePatternExpr pattern)
           
 ConstructorPattern makeAIConstructorPattern(ConstructorPattern pattern)
           
 FieldPattern makeAIFieldPattern(FieldPattern pattern)
           
 MethodPattern makeAIMethodPattern(MethodPattern pattern)
           
 TypePattern makeAITypePattern(TypePatternExpr pattern)
           
 boolean matchesClass(ClassnamePatternExpr pattern, SootClass sc)
           
 boolean matchesFormals(java.util.List fpats, java.util.List ftypes)
           
 boolean matchesModifiers(java.util.List modps, int mods)
           
 boolean matchesName(NamePattern pat, PCNode name)
           
 boolean matchesObject(NamePattern pat)
           
 boolean matchesType(TypePatternExpr pattern, java.lang.String type)
           
 void recomputeAllMatches()
           
 void updateWithAllSootClasses()
          Should be called when jimplification is complete.
static PatternMatcher v()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

v

public static PatternMatcher v()

create

public static PatternMatcher create(PCStructure hierarchy)

compileNamePattern

public java.util.regex.Pattern compileNamePattern(java.lang.String name_pat)

computeMatches

public void computeMatches(NamePattern pat,
                           PCNode context,
                           java.util.Set classes,
                           java.util.Set packages)

updateWithAllSootClasses

public void updateWithAllSootClasses()
Should be called when jimplification is complete. This ensures that all Soot classes can be used to index into the hierarchy.


recomputeAllMatches

public void recomputeAllMatches()

matchesName

public boolean matchesName(NamePattern pat,
                           PCNode name)

matchesObject

public boolean matchesObject(NamePattern pat)

matchesClass

public boolean matchesClass(ClassnamePatternExpr pattern,
                            SootClass sc)

matchesType

public boolean matchesType(TypePatternExpr pattern,
                           java.lang.String type)

matchesModifiers

public boolean matchesModifiers(java.util.List modps,
                                int mods)

matchesFormals

public boolean matchesFormals(java.util.List fpats,
                              java.util.List ftypes)

makeAIClassnamePattern

public ClassnamePattern makeAIClassnamePattern(ClassnamePatternExpr pattern)

makeAITypePattern

public TypePattern makeAITypePattern(TypePatternExpr pattern)

makeAIMethodPattern

public MethodPattern makeAIMethodPattern(MethodPattern pattern)

makeAIFieldPattern

public FieldPattern makeAIFieldPattern(FieldPattern pattern)

makeAIConstructorPattern

public ConstructorPattern makeAIConstructorPattern(ConstructorPattern pattern)