kossebau added a comment.

  Thanks. Okay, so the old symbol is still there, and with that info I looked 
some more, and indeed the ::endl symbol is not declared in the header 
qtextstream.h, but only defined (and exported) in the source file 
qtextstream.cpp. Having 3 variants now not make sense to me on first look, but 
perhaps a result of some incomplete approach in Qt 5.14... oh well...
  
  For Okteta I now went for this approach, which I find more elegant:
  
    using TextStreamFunction = QTextStream& (*)(QTextStream&);
    #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
    constexpr TextStreamFunction endl = Qt::endl;
    #else
    constexpr TextStreamFunction endl = ::endl;
    #endif
  
  No extra namespace here, as all code is already in some Okteta namespace, so 
the lines with the `endl` do not even have to be touched :)
  
  Whether `endl` is a proper call in such places is left for another 
investigation on its own.
  
  In D26320#585916 <https://phabricator.kde.org/D26320#585916>, @dfaure wrote:
  
  > I don't think a code generator needs to flush() many times along the way 
anyway. \n actually sounds more efficient.
  
  
  Do Qt experts have some numbers on the sizes before which flush() makes sense 
in general? I guess it varies on the actual QIODevice, and then with QFile 
perhaps on the actual filesystem/kernel/whatever?
  
  Also surprised to see the implementation do a 
¸writeBuffer.replace(QLatin1Char('\n'), QLatin1String("\r\n"));¸for windows 
where I expected `endl` itself to care for it...

REPOSITORY
  R269 BluezQt

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

To: mlaurent, dfaure
Cc: kossebau, apol, kde-frameworks-devel, LeGast00n, GB_2, michaelh, ngraham, 
bruns

Reply via email to