Hi,

there is certainly no straightforward way from QV4::Value to 
ExecutableCompilationUnit, especially considering that the Value can be 
anything, from a primitive like bool or undefined to basically arbitrary 
objects managed on the engine's heap.

Could you expand a bit more how exactly you envision registerModule to work? 
What is your QJSValue supposed to contain:
- A string with the JS code of the module?
- An URL?
- A C++ object which ought to provide methods that can then be used in the JS 
engine?

Regards,
Fabian
--
Fabian Kosmale
Software Engineer

The Qt Company GmbH
Erich-Thilo-Str. 10
D-12489 Berlin
fabian.kosm...@qt.io
+49 1638686070
http://qt.io


Geschäftsführer: Mika Pälsi, Juha Varelius, Jouni Lintunen
Sitz der Gesellschaft: Berlin
Registergericht: Amtsgericht Charlottenburg, HRB 144331 B

--

________________________________________
Von: Development <development-boun...@qt-project.org> im Auftrag von Alex Shaw 
<alex.shaw...@gmail.com>
Gesendet: Mittwoch, 21. April 2021 16:18
An: development@qt-project.org
Betreff: [Development] Question about QtDeclarative Internals

Hello,

In QtDeclarative, can a QV4::ReturnedValue or a QV4::Value be converted into an 
ExecutableCompilationUnit?

I'm trying to work on a patch for QJSEngine to allow importing modules from C++ 
(similar to Node.js: import fs from "fs")
The planned method is something along the lines of:
void QJSEngine::registerModule(const QString &moduleName, const QJSValue &value)

I can see that behind the scenes, loadModule compiles a URL to an 
ExecutableCompilationUnit, then saves it to a list of modules for future lookup.
I thought the easiest way to do what I need is to convert a QJSValue to an 
internal QV4::Value, and from there into an ExecutableCompilationUnit.
Is there any way of doing that?

Thanks.
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to