D23918: RFC: Drop Outputs class

Roman Gilg noreply at phabricator.kde.org
Sat Sep 14 03:48:45 BST 2019


romangg added a comment.


  In D23918#530689 <https://phabricator.kde.org/D23918#530689>, @zzag wrote:
  
  > I haven't received any strong arguments why we need a subclass of QVector<AbstractOutput *>. Outputs overloads constructor to implement some sort of covariance. However, that doesn't qualify as a good argument because the right solution would be to add a helper function that could perform these conversions.
  >
  > In many cases, inheriting from a vector type is a no-no. You should do that only if there's no any other way around.
  
  
  You need to provide sources for such generic statements. If you would be a computer science professor of 30 years I would believe them without asking for such but we are not.
  
  >  ---
  > 
  >> This change makes everything too explicit. Boo!
  > 
  > I personally don't consider it to be a problem. That's C++ after all.
  > 
  > Templates are invariant and making conversions between Collection<Base> and Collection<Derived> explicit is a good thing because this way we have less magic in the code.
  
  Independent of researched facts I agree though with Vlad that the qvector_cast feels better since it's more explicit and David's QVector subclassing, while being an interesting solution, feels kind of forbidden magic in comparison.

INLINE COMMENTS

> utils.h:240
> +    QVector<To> mapped;
> +    mapped.reserve(collection.size());
> +    std::copy(collection.constBegin(), collection.constEnd(), std::back_inserter(mapped));

For simple data types according to Qt docs resize is faster. It's a micro-optimization, but since the outputs are queried often maybe it's worth it. I assume we could use template specialization for `AbstractOutput*` as `To` type, or just use no template at all? Although having a templated qvector_cast is nice.

REPOSITORY
  R108 KWin

REVISION DETAIL
  https://phabricator.kde.org/D23918

To: zzag, #kwin
Cc: romangg, davidedmundson, alexeymin, kwin, LeGast00n, The-Feren-OS-Dev, sbergeron, jraleigh, fbampaloukas, GB_2, mkulinski, ragreen, jackyalcine, Pitel, iodelay, crozbo, bwowk, ZrenBot, ngraham, himcesjf, lesliezhai, ali-mohamed, hardening, jensreuterberg, abetts, sebas, apol, mart
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kwin/attachments/20190914/bec3cc55/attachment-0001.html>


More information about the kwin mailing list