message ids - assigned by a script and stored in a data base in cvs
different ones for each type of message
different counters per tag, group, subsystem, id
different counters for different events: received, issued, distributed, shown, buffered, printed.
by type of message (group, subsystem, tag)
by id of message
per stream (also by type & id)
per stream: print messages only once
different levels of filtering:
so that counting is suppressed (-> issue filter)
so that messages are invisible (-> show filter)
per stream printing decision (-> print filter)
for locally suppressing messages
for postponing and re-filtering messages
for user extensions
for systems that lack stderr
for graphical environments
customisable by the user
for colour tags, HTML messages, etc.
For 'address' to file, line, pos-mapping, user plug-in may be used
here, 'address' may be any concept of source code location: you can provide your own format function.
C and C++ support
substitute of clib's printf family to have advantages of Erwin format: consistency between platforms, quotation, NULL-handling: %s prints NULL, 0x%Lx etc. FILE* may be NULL to suppress output The family is called *xprintf: fxprintf, vxprintf, snxprintf, etc.