Class type PPrintEngine.custom

class type custom = object .. end

method requirement : requirement
A custom document must publish the width (i.e., the number of columns) that it would like to occupy if it is printed on a single line (that is, in flattening mode). The special value infinity means that this document cannot be printed on a single line; this value causes any groups that contain this document to be dissolved. This method should in principle work in constant time.
method pretty : output -> state -> int -> bool -> unit
The method pretty is used by the main rendering algorithm. It has access to the output channel and to the algorithm's internal state, as described above. In addition, it receives the current indentation level and the current flattening mode (on or off). If flattening mode is on, then the document must be printed on a single line, in a manner that is consistent with the requirement that was published ahead of time. If flattening mode is off, then there is no such obligation. The state must be updated in a manner that is consistent with what is sent to the output channel.
method compact : output -> unit
The method compact is used by the compact rendering algorithm. It has access to the output channel only.