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.