Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* Soot - a J*va Optimization Framework
   * Copyright (C) 2003 Ondrej Lhotak
   *
   * 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.
  */
 
 package soot.jimple.toolkits.pointer;
 import java.util.*;
 import soot.*;

Represents the read or write set of a statement.
 
 public class SiteRWSet extends RWSet {
     public HashSet<RWSetsets = new HashSet<RWSet>();
     protected boolean callsNative = false;
 
    	public int size()
 	{
 		Set globals = getGlobals();
 		Set fields = getFields();
 		if(globals == null)
 		{
 			if(fields == null)
 				return 0;
 			else
 				return fields.size();
 		}
 		else
 		{
 			if(fields == null)
 				return globals.size();
 			else
 				return globals.size() + fields.size();
 		}
 	}
 
 public String toString() {
         boolean empty = true;
         final StringBuffer ret = new StringBuffer();
         ret.append("SiteRWSet: ");
         forIterator<RWSetkeyIt = .iterator(); keyIt.hasNext(); ) {
             final Object key = keyIt.next();
             ret.appendkey.toString() );
             empty = false;
         }
         if(emptyret.append("empty");
         return ret.toString();
     }
 
     public boolean getCallsNative() {
 	return ;
     }
 
     public boolean setCallsNative() {
 	boolean ret = !;
 	 = true;
 	return ret;
     }

    
Returns an iterator over any globals read/written.
 
     public Set getGlobals() {
 	HashSet ret = new HashSet();
 	for (RWSet s : ) {
 	    ret.addAlls.getGlobals() );
 	}
 	return ret;
     }

    
Returns an iterator over any fields read/written.
 
     public Set getFields() {
 	HashSet ret = new HashSet();
 	for (RWSet s : ) {
 	    ret.addAlls.getFields() );
 	}
 	return ret;
     }

    
Returns a set of base objects whose field f is read/written.
 
     public PointsToSet getBaseForFieldObject f ) {
 	Union ret = null;
 	for (RWSet s : ) {
 	    PointsToSet os = s.getBaseForFieldf );
 	    ifos == null ) continue;
 	    ifos.isEmpty() ) continue;
 	    ifret == null ) ret = G.v()..newUnion();
 	    ret.addAllos );
 	}
	return ret;
    }
    public boolean hasNonEmptyIntersectionRWSet oth ) {
	if.containsoth ) ) return true;
	for (RWSet s : ) {
	    ifoth.hasNonEmptyIntersections ) ) return true;
	}
	return false;
    }

    
Adds the RWSet other into this set.
    public boolean unionRWSet other ) {
	ifother == null ) return false;
	boolean ret = false;
	ifother.getCallsNative() ) ret = setCallsNative();
	ifother.getFields().isEmpty() && other.getGlobals().isEmpty() ) return ret;
	return .addother ) | ret;
    }
    public boolean addGlobalSootField global ) {
	throw new RuntimeException"Not implemented; try MethodRWSet" );
    }
    public boolean addFieldRefPointsToSet otherBaseObject field ) {
	throw new RuntimeException"Not implemented; try MethodRWSet" );
    }
    public boolean isEquivToRWSet other ) {
	if( !( other instanceof SiteRWSet ) ) return false;
	SiteRWSet o = (SiteRWSetother;
	ifo.callsNative !=  ) return false;
	return o.sets.equals );
    }
New to GrepCode? Check out our FAQ X