By default the printing statements will print a very detailed written representation of struct and union values. This implies printing out every detail of every field.
However, it is possible to change the written representation of a struct value by defining pretty-printing methods, which have prototypes:
method _print = void: { method_body }
If a struct or union type has a method called _print
, then it
is invoked every time a printed representation of the value shall be
printed on the terminal.
For example a value of a struct type:
type Switch = struct { int<32> state; method _print = void: { printf "#<switch:%i32d>", state; } };
When printed when pretty-printers are active, will result in:
(poke) .set pretty-print yes (poke) Switch { state = 1 } #<switch:1>
Struct or union fields can also have pretty-printers defined for them:
just define a method called _print_field_name
to
pretty-print a particular field.
For example a value of a struct type:
type Switch = struct { int<32> state; method _print_state = void: { printf ("#<%s>", state ? "on" : "off"); } };
This will result in:
(poke) .set pretty-print yes (poke) Switch { state = 1 } Switch { state=#<on> }