Hi Ulf

I was not going to add them to jsroot.qmltypes. I was wondering if there was a mechanism to extend what is defined in jsroot.qmltypes.

A singleton would work, but it would mean having to import the module and scope the function calls accordingly. We have a standard that says all imports (bar a few exceptions) be imported with a namespace so the usage can easily be searched for. So where there is currently:

   clog(....)
   gassert(....)


There would need to be

   import Global AS GBL // or whatever name the module has

   GBL.Logger.clog(...)
   GBL.Assert.gassert(...)


Or at least something like that. While it's not terrible, its more noisy than the simple function calls. Is there no mechanism to tell the type system about global objects and types?

Many thanks
Matthew



On 2023/08/31 13:51, Ulf Hermann via Interest wrote:
Another issue we are having with qmllint is adding type information for objects added to the global object in C++. We've used this to provide custom log and assert functions, but obviously the linter doesn't know about them. If they are added to qml/jsroot.qmltypes (along similar lines to the 'Console' type) then the linter does know about the type.

The point of the linker is to warn you about QML constructs we cannot compile to C++. jsroot.qmltypes is supposed to only contain information about types built into QtQml itself, so that we can make strong assumptions about where to find the respective functionality when generating C++ code. Please don't add anything to it.

You should define singletons if you need to add globally accessible functionality. A singleton can have methods, and access to a known singleton can be compiled to C++.

best regards,
Ulf Hermann
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to