Class Address.

Address groups can exist, but only as empty groups ("internet-drafts:;"). (An empty address group is an address with a name() but without a localpart() or a domain().)

The un-address <> can be parsed and represented; both its name(), localpart() and domain() are empty. Local-only addresses (e.g. "root") are accepted, because so much legacy software generated it, and some even generates it still.

Domains are kept as naked strings, and there is as yet no attempt to make this fit nicely in the database.

uint Address::id() const

This private function contains the shared part of the constructors, initialising the object with the display-name n, localpart l, and domain o and an appropriate type(). Uses a cache to try to share the id() with other instances of the same address.