Hi Sona,

On 07.05.21 17:11, Sona Kurazyan wrote:
You could use the QFutureInterfaceBase (non-templated) class directly
to build a type-erased future, that's basically what QFuture is using
underneath. Although it's internal (not documented and is considered
to be private), but it's declared in a public header
(qfutureinterface.h) and you can still use it. QFutureInterfaceBase's
methods for accessing its internals are public (with a few exceptions
that you probably won't need to use). I hope that helps.

Yep, that's what I thought as well. But I cannot get it from an existing QFuture because it's a private member. We could add some private API to extract the QFutureInterfaceBase, however.

Anyway, I think I'll have to add some QMetaType magic anyway for this to work. In QtWebChannel, we get the method return value wrapped in a QVariant, so the QFuture<T> is wrapped in a QVariant. From there, I cannot extract the QFutureInterfaceBase in any way.

I *could* just memcpy from QVariant's data pointer to a QFutureInterfaceBase*, but I'm pretty sure that this is UB.

Any pointer where to start?

Regards,
Arno

--
Arno Rehn
Tel +49 89 189 166 0
Fax +49 89 189 166 111
a.r...@menlosystems.com
www.menlosystems.com

Menlo Systems GmbH
Bunsenstrasse 5, D-82152 Martinsried, Germany
Amtsgericht München HRB 138145
Geschäftsführung: Dr. Michael Mei, Dr. Ronald Holzwarth
USt.-IdNr. DE217772017, St.-Nr. 14316170324
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to