D28325: [Inotify] Call QFile::decode only in a single place
Stefan BrĂ¼ns
noreply at phabricator.kde.org
Fri Mar 27 01:01:13 GMT 2020
bruns added inline comments.
INLINE COMMENTS
> apol wrote in kinotify.cpp:371
> This conditional looks off, maybe it would make sense to have an intermediate class to decide when to initialize it?
>
> Something like this:
>
> template <typename T>
> class Delayed
> {
> public:
> Delayed(std::function<T()> func) : m_func(func) {}
> T operator*() {
> if (!m_value) {
> m_value = m_func();
> }
> return *m_value;
> }
> std::function<T()> m_func;
> std::optional<T> m_value;
> };
>
> and consuming it as
>
> Delayed<QString> fname([&path]{return QFile::decodeName(path);});
> //...
> Q_EMIT accessed(*fname);
>
> Then the object itself makes sure it's initialised just once without the risk of forgetting one of the cases.
Have you read the summary?
> it removes the duplicated QFile::decode() calls from the object code.
Your code is expanded in all places again, and even adds more code (the check).
REPOSITORY
R293 Baloo
REVISION DETAIL
https://phabricator.kde.org/D28325
To: bruns, #baloo, ngraham
Cc: apol, kde-frameworks-devel, hurikhan77, lots0logs, LeGast00n, cblack, fbampaloukas, GB_2, domson, ashaposhnikov, michaelh, astippich, spoorun, ngraham, bruns, abrahams
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20200327/206d7072/attachment.html>
More information about the Kde-frameworks-devel
mailing list