The interface for report functions. A report function separates the business logic from presentation of the result.
The function is called whenever JFreeReport changes its state while generating the report. The working model for the
functions is based on cloning the state of the function on certain checkpoints to support the ReportState
implementation of JFreeReport.
Although functions support the ReportListener interface, they are not directly added to a report. A report
FunctionCollection is used to control the functions. Functions are required to be cloneable.