1 cananian 1.1.2.1 // DEBUG.java, created Sat Nov 21 21:19:08 1998 by cananian
 2 cananian 1.1.2.1 // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu>
 3 cananian 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 cananian 1.1.2.1 package harpoon.IR.Quads;
 5 cananian 1.1.2.1 
 6 cananian 1.1.2.6 import harpoon.ClassFile.HCodeElement;
 7 cananian 1.1.2.3 import harpoon.Temp.TempMap;
 8 cananian 1.1.2.2 import harpoon.Util.Util;
 9 cananian 1.1.2.2 
10 cananian 1.1.2.1 /**
11 cananian 1.1.2.1  * <code>DEBUG</code> prints a debugging string to standard error.
12 cananian 1.1.2.1  * 
13 cananian 1.1.2.1  * @author  C. Scott Ananian <cananian@alumni.princeton.edu>
14 cananian 1.5      * @version $Id: DEBUG.java,v 1.5 2002/04/11 04:00:34 cananian Exp $
15 cananian 1.1.2.1  */
16 cananian 1.1.2.1 public class DEBUG extends Quad {
17 cananian 1.1.2.1     /** The debugging string. */
18 cananian 1.1.2.2     final protected String str;
19 cananian 1.1.2.1 
20 cananian 1.1.2.1     /** Creates a <code>DEBUG</code> object. <code>DEBUG</code> prints a
21 cananian 1.1.2.2      *  debugging string to standard error.
22 cananian 1.1.2.2      * @param str
23 cananian 1.1.2.2      *        the debugging string to print.
24 cananian 1.1.2.2      */
25 cananian 1.1.2.4     public DEBUG(QuadFactory qf, HCodeElement source,
26 cananian 1.1.2.4                  String str) {
27 cananian 1.1.2.4         super(qf, source);
28 cananian 1.1.2.1         this.str = str;
29 cananian 1.1.2.2         // VERIFY legality of this DEBUG
30 cananian 1.3.2.1         assert str!=null;
31 cananian 1.1.2.1     }
32 cananian 1.1.2.2     // ACCESSOR METHODS:
33 cananian 1.1.2.2     /** Returns the debugging string printed by this quad. */
34 cananian 1.1.2.2     public String str() { return str; }
35 cananian 1.1.2.2 
36 cananian 1.1.2.3     public int kind() { return QuadKind.DEBUG; }
37 cananian 1.1.2.3 
38 cananian 1.1.2.5     public Quad rename(QuadFactory qqf, TempMap defMap, TempMap useMap) {
39 cananian 1.1.2.4         return new DEBUG(qqf, this, str);
40 cananian 1.1.2.3     }
41 cananian 1.1.2.3 
42 cananian 1.1.2.7     public void accept(QuadVisitor v) { v.visit(this); }
43 cananian 1.5         public <T> T accept(QuadValueVisitor<T> v) { return v.visit(this); }
44 cananian 1.1.2.3 
45 cananian 1.1.2.1     /** Returns a human-readable version of the <code>DEBUG</code> quad. */
46 cananian 1.1.2.2     public String toString() { return "DEBUG: \""+Util.escape(str)+"\""; }
47 cananian 1.2     }