QAccessibleWidgetV2: de-inline ctors and avoid QString default arg
We should not use defaulted arguments of non-trivial type, because their construction and destruction, even if not passed, is repeated at every call site, producing O(n) executable code. By overloading out-of-line, we execute the same code at runtime, but a) we have only one copy of the arg construction and destruction, in the library, O(1) executable code production, and b) being out-of-line in the library, the compiler can optimize the call to the base class ctor away, if it wants to, because it sees its implementation. Found in API-review. Amends bb2121551c3d7b1af1553710bc211ba0e39b4212. Pick-to: 6.10 Task-number: QTBUG-98117 Change-Id: Ib6a3b15cc861893797c0445a91691132b21bbf2c Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
This commit is contained in:
parent
295933aadc
commit
79ab9305c1
@ -483,6 +483,17 @@ void *QAccessibleWidget::interface_cast(QAccessible::InterfaceType t)
|
||||
|
||||
// QAccessibleWidgetV2 implementation
|
||||
|
||||
QAccessibleWidgetV2::QAccessibleWidgetV2(QWidget *object, QAccessible::Role role,
|
||||
const QString &name)
|
||||
: QAccessibleWidget(object, role, name)
|
||||
{
|
||||
}
|
||||
|
||||
QAccessibleWidgetV2::QAccessibleWidgetV2(QWidget *object, QAccessible::Role role)
|
||||
: QAccessibleWidgetV2(object, role, QString())
|
||||
{
|
||||
}
|
||||
|
||||
QAccessibleWidgetV2::~QAccessibleWidgetV2() = default;
|
||||
|
||||
/*! \reimp */
|
||||
|
@ -67,10 +67,8 @@ class Q_WIDGETS_EXPORT QAccessibleWidgetV2 : public QAccessibleWidget,
|
||||
struct error2045 : QList<QAccessible::Attribute> {};
|
||||
#endif
|
||||
public:
|
||||
explicit QAccessibleWidgetV2(QWidget *object, QAccessible::Role role = QAccessible::Client,
|
||||
const QString& name = QString())
|
||||
: QAccessibleWidget(object, role, name)
|
||||
{}
|
||||
explicit QAccessibleWidgetV2(QWidget *object, QAccessible::Role role = QAccessible::Client);
|
||||
explicit QAccessibleWidgetV2(QWidget *object, QAccessible::Role role, const QString &name);
|
||||
~QAccessibleWidgetV2() override;
|
||||
|
||||
void *interface_cast(QAccessible::InterfaceType t) override;
|
||||
|
Loading…
x
Reference in New Issue
Block a user