Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* Soot - a J*va Optimization Framework
   * Copyright (C) 1997-1999 Raja Vallee-Rai and Patrick Lam
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
   * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */
 
 /*
  * Modified by the Sable Research Group and others 1997-1999.  
  * See the 'credits' file distributed with Soot for the complete list of
  * contributors.  (Soot is distributed at http://www.sable.mcgill.ca/soot)
  */
 
 
 package soot;
 
 import soot.util.*;
 import java.util.*;

A wrapper object for a pack of optimizations. Provides chain-like operations, except that the key is the phase name.
 
 public abstract class Pack implements HasPhaseOptions
 {
     private String name;
     public String getPhaseName() { return ; }
     public PackString name ) {
         this. = name;
     }
     Chain opts = new HashChain();
     
     public Iterator iterator() { return .iterator(); }
 
     public void add(Transform t) { 
     	if(!t.getPhaseName().startsWith(getPhaseName()+".")) {
     		throw new RuntimeException("Transforms in pack '"+getPhaseName()+"' must have a phase name " +
     				"that starts with '"+getPhaseName()+".'.");
     	}    	
         PhaseOptions.v().getPM().notifyAddPack();
         ifgett.getPhaseName() ) != null ) {
             throw new RuntimeException"Phase "+t.getPhaseName()+" already "
                     +"in pack" );
         }
         .add(t); 
     }
 
     public void insertAfter(Transform tString phaseName
     {
         PhaseOptions.v().getPM().notifyAddPack();
         Iterator it = .iterator();
         while (it.hasNext())
         {
             Transform tr = (Transform)it.next();
             if (tr.getPhaseName().equals(phaseName))
             {
                 .insertAfter(ttr);
                 return;
             }
         }
         throw new RuntimeException("phase "+phaseName+" not found!");
     }
 
     public void insertBefore(Transform tString phaseName)
     {
         PhaseOptions.v().getPM().notifyAddPack();
         Iterator it = .iterator();
         while (it.hasNext())
         {
             Transform tr = (Transform)it.next();
             if (tr.getPhaseName().equals(phaseName))
             {
                 .insertBefore(ttr);
                 return;
             }
         }
         throw new RuntimeException("phase "+phaseName+" not found!");
     }
 
     public Transform getString phaseName ) {
         forIterator trIt = .iterator(); trIt.hasNext(); ) {
             final Transform tr = (TransformtrIt.next();
             iftr.getPhaseName().equals(phaseName) ) {
                 return tr;
             }
         }
         return null;
     }
 
    protected void internalApply() {
        throw new RuntimeException("wrong type of pack");
    }
    protected void internalApply(Body b) {
        throw new RuntimeException("wrong type of pack");
    }
    public final void apply() {
        Map options = PhaseOptions.v().getPhaseOptionsthis );
        if( !PhaseOptions.getBooleanoptions"enabled" ) ) return;
        internalApply();
    }
    public final void apply(Body b) {
        Map options = PhaseOptions.v().getPhaseOptionsthis );
        if( !PhaseOptions.getBooleanoptions"enabled" ) ) return;
        internalApply(b);
    }
    public String getDeclaredOptions() { return soot.options.Options.getDeclaredOptionsForPhasegetPhaseName() ); }
    public String getDefaultOptions() { return soot.options.Options.getDefaultOptionsForPhasegetPhaseName() ); }
New to GrepCode? Check out our FAQ X