Qt's MOC getting replicated in D for Calypso
ZombineDev via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Wed Feb 17 19:36:20 PST 2016
On Thursday, 18 February 2016 at 02:47:37 UTC, Elie Morisse wrote:
> 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.
Congratulations! This is an extremely promising result!
BTW, what do you think about DMD's recent advancement in this
area? Can you reuse some of this work for Calypso? When do you
think you'll be ready to start upstreaming some of your work to
LDC and/or DMD?
https://github.com/D-Programming-Language/dmd/pull/5261 -
Parameter types should have namespace std mangling too
https://github.com/D-Programming-Language/dmd/pull/5262 - Add
versioned-out branch to support new C++-11 implementations of
std::string
https://github.com/D-Programming-Language/druntime/pull/1470 -
Add catching C++ exception support to dwarfeh.d
https://github.com/D-Programming-Language/druntime/pull/1473 -
add core.stdcpp.exception and core.stdcpp.typeinfo
https://github.com/D-Programming-Language/dmd/pull/5330 - fix
Issue 15389 - extern(C++) forward referencing problem
https://github.com/D-Programming-Language/dmd/pull/5333 - fix
Issue 15519 - Circular imports leads to fwd ref error with
aliased imports
https://github.com/D-Programming-Language/dmd/pull/5342 - C++ EH:
initial front end work
https://github.com/D-Programming-Language/dmd/pull/5361 - fix
Issue 15579 - extern(C++) interfaces/multiple-inheritance
https://github.com/D-Programming-Language/dmd/pull/5372 - fix
Issue 15610 - extern(C++) multiple inheritance - calling with
wrong 'this' ptr
https://github.com/D-Programming-Language/dmd/pull/5397 - fix
Issue 15644 - Switch object layout ABI to MI style
https://github.com/D-Programming-Language/dmd/pull/5402 - fix
Issue 15647 - Casting from one C++ interface in a hierarchy to
another is a noop
https://github.com/D-Programming-Language/dmd/pull/5403 - fix
Issue 15626 - extern(C++) calling crash
More information about the Digitalmars-d-announce
mailing list