A major complaint about early versions of Cetus was that the printing of IR was not flexible enough. To solve this problem, we have made printing completely customizable by the pass writer. Nearly all classes implement a Printable
interface, which means they provide a print
method for printing themselves as source code. By default, this print
method calls a static method of the same class, called defaultPrint
. The call is made by invoking a Java Method
object, which is similar to a function pointer in C. The Method
object can be changed by calling setPrintMethod
and passing it a different printing routine. setPrintMethod
allows a pass writer to change how one particular object prints itself. If the pass writer notices that they are calling this method frequently for the same type of object, then it may be easier to call setClassPrintMethod
, a static method which causes all newly created objects of a particular class to use the provided printing routine.