KMime API review
Sune Vuorela
nospam at vuorela.dk
Thu Feb 5 10:45:07 GMT 2026
On 2026-02-04, Ingo Klöcker <kloecker at kde.org> wrote:
> I think you didn't write what you meant to write.
Right.
> If `this` is const, the function *does not take* an argument. Otherwise, it
> takes one optional argument. This makes a lot of sense to me because you
> cannot create/add a new header to a const object. The argument-less overload
> prevents you from calling subject() with Create. Hmm, is your concern that the
> non-const overload creates a new header if called without argument while the
> const overload doesn't create a new header?
yeah. the fact that asking for a subject() has different behavior wether
or not the message/content is const or not is at least a bit surprising.
I don't know the good solutions to the problem off hand - I only see
various less-optimal solutions - but maybe just dropping the default
argument is the simplest?
>> Types:
>> At least KMime::Type::Address have a public QList member
>
> What do you suggest? I guess one could make the member private and add a
> public inline `const QList<KMime::Type::Address> &` getter to avoid the smell
> of a public member variable and, at the same time, avoid a prohibitive
> performance penalty. Or maybe Address should simply be a struct (with one
> private member variable) instead of a class if it's supposed to be used like a
> struct (like AddrSpec is).
It is again, surprising. I don't know if people expects it to be mutable
or not, but it is.
Either make it clearly a struct to be used like a struct or make it
clearly a class (with a getter and maybe a setter) is probably my
suggestion.
/Sune
More information about the kde-pim
mailing list