View Javadoc

1   /* Soot - a J*va Optimization Framework
2    * Copyright (C) 1999 Patrick Lam
3    * Copyright (C) 2004 Ondrej Lhotak
4    *
5    * This library is free software; you can redistribute it and/or
6    * modify it under the terms of the GNU Lesser General Public
7    * License as published by the Free Software Foundation; either
8    * version 2.1 of the License, or (at your option) any later version.
9    *
10   * This library is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   * Lesser General Public License for more details.
14   *
15   * You should have received a copy of the GNU Lesser General Public
16   * License along with this library; if not, write to the
17   * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18   * Boston, MA 02111-1307, USA.
19   */
20  
21  /*
22   * Modified by the Sable Research Group and others 1997-1999.  
23   * See the 'credits' file distributed with Soot for the complete list of
24   * contributors.  (Soot is distributed at http://www.sable.mcgill.ca/soot)
25   */
26  
27  
28  
29  
30  
31  
32  package org.kit.furia.fragment.soot.representation.internal;
33  
34  import soot.*;
35  import org.kit.furia.fragment.soot.representation.*;
36  import soot.jimple.internal.*;
37  import java.util.*;
38  
39  public class FStaticInvokeExpr extends AbstractStaticInvokeExpr 
40  implements Qable, SpecialConstructContainer
41  {
42      /**
43  	 * 
44  	 */
45  	private static final long serialVersionUID = 5584249147548620479L;
46  
47  	public FStaticInvokeExpr(SootMethodRef methodRef, List args)
48      {
49          super(methodRef, new ValueBox[args.size()]);
50  
51          for(int i = 0; i < args.size(); i++)
52              this.argBoxes[i] = Frimp.v().newExprBox((Value) args.get(i));
53      }
54      
55      
56      public Object clone()  // NOPMD by amuller on 11/16/06 4:21 PM
57      {
58          ArrayList clonedArgs = new ArrayList(getArgCount());
59  
60          for(int i = 0; i < getArgCount(); i++) {
61              clonedArgs.add(i, Frimp.cloneIfNecessary(getArg(i)));
62          }
63          
64          return new  FStaticInvokeExpr(methodRef, clonedArgs);
65      }
66      
67      public String toQ() throws Exception{
68      	
69      	StringBuffer buffer = new StringBuffer();
70  
71          buffer.append(FuriaConstructDefinitions.FURIA_fstaticInvoque+ "(" + Frimp.toQ(methodRef));
72  
73          for(int i = 0; i < argBoxes.length; i++)
74          {
75              
76              buffer.append(",");
77  
78              buffer.append(Frimp.toQ(argBoxes[i].getValue()));
79          }
80  
81          buffer.append(")");
82  
83          return buffer.toString();
84      }
85      
86      public List getContainedSpecialConstructs() {
87  		List res = new LinkedList();
88  		res.add(methodRef);		
89  		return res;
90  	}
91      
92  }