On 02/11/2012 01:44 AM, ext [email protected] wrote:
> However, adding yet another 'keyword' to the framework has a price,
> especially since the difference between
> 'qDebug(QMessageLogContext("MyCategory"))'<< and a
> 'qLog("MyCategory")<< ' is subtle.
We tried that but while this difference is subtle to the eye, it's a
huge difference to the implementation.
qDebug is currently an argument-less macro that expands to the name of a
function. Before message logging it was just a plain old function.
Overloading means that qDebug("message") and qDebug() << "message" both
work.
Since we can't have a macro func with 0, 1 or many arguments, we can
only add a new overload for qDebug(category) << "message" but if we do
this, there is nowhere to put the "do nothing quickly" logic.
Expanding to this is always going to be slow:
func(category) << "args" << expensive();
We need to expand to this to be fast:
if (do_nothing) /*NOP*/; else func(category) << "args" << expensive();
Thus we cannot overload qDebug.
qLog is just a name. It's the name this code had when it was in Qtopia
but it's hardly important if it keeps this name. It would be nice to
focus on the implementation of the feature to make sure it is sound
before we worry overly much about what to call it :)
--
Lincoln Ramsay - Senior Software Engineer
Qt Development Frameworks, Nokia - http://qt.nokia.com/
_______________________________________________
Development mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/development