Qt's MOC getting replicated in D for Calypso
Elie Morisse via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Wed Feb 17 18:47:37 PST 2016
Hi all,
I now have a working D replacement for moc:
https://github.com/Syniurge/Calypso/blob/master/tests/calypso/qt5/moc
For those unfamiliar with Qt, moc (the Meta-Object Compiler) is a
tool that generates additional code for Qt classes, code then
used by the signal/slot system, properties and other Qt-specific
extensions. While C++ moc is not going away for probably a very
long time
(http://woboq.com/blog/reflection-in-cpp-and-qt-moc.html), D's
compile-time reflection makes it possible to replicate moc's
functionality entirely with templates and CTFE, with the help of
some Calypso features: C++ template instantiation, overriding C++
virtual methods, and member function pointers.
Calypso had been partially supporting Qt5 for a while and there
was a Qt5 demo written by Kelly Wilson, but to work around the
lack of moc he had to write an intermediate C++ class with
virtual slots and the signal <-> slot connections were done in
C++ code.
Now everything is in D:
https://github.com/Syniurge/Calypso/blob/master/tests/calypso/qt5/qt5demo.d
The moc package is as faithful as possible to Qt 5.5.0's moc.
It's not finished yet (missing: properties, class info) but
signals, slots and connections are working, making Qt 5
development in D much more practical than before.
More information about the Digitalmars-d-announce
mailing list