Note this is a breaking change to the way Verdigris works internally.
Sorry that a lot of changes accumulated here. My intention was originally to mainly speed up compilation times. So I simplified the code base to only C++20. Later I found this to be the base to implement bindable. Here goes nothing…
New requirements:
Qt6.2.4+ (Versions before are too buggy with C++20 support, which is still an ongoing issue.)
Compiler with decent C++20 support (CLANG >=12, GCC >= 12, MSVC 2022 >=17.2, MSVC 2019 >=16.11)
New features:
Use current property flags from Qt 6.3
Also support the REQUIRED property
Reduced the global namespace spam (macros are bad enough)
W_PROPERTY now supports bindable with overload support (mainly for: const / non-const overloads)
Added tst_qproperty.cpp from Qt6 to test bindable support
Allow defining overloaded methods in macros with W_SLOT_N, W_INVOKABLE_N, W_SIGNAL_N or W_SIGNAL_COMPAT_N.
Faster compile times:
use C++20 concepts for complex reflections where possible
use pointers instead of inheritance for counters and strong flags
dropped compile time hash for MSVC with wrapped member function pointers
This enables some cleanups:
Dropped Qt5 based MOC versions
Removed Qt5 unit tests
Cleaned up C++ version precompiler checks all over the code
Dropped old compiler unit tests
Require semicolon after the declaring W_ macros to avoid tooling confusion (clang_format, QtCreator)
While I was on breaking changes, I also upped the project a bit:
Introduced clang-format to reduce manual formatting work
Dropped AppVeyor that was only used for old msvc tests
If we want to move forward with this, we should do:
[ ] Gather support for this PR. Or propose changes.
Note this is a breaking change to the way Verdigris works internally.
Sorry that a lot of changes accumulated here. My intention was originally to mainly speed up compilation times. So I simplified the code base to only C++20. Later I found this to be the base to implement bindable. Here goes nothing…
New requirements:
New features:
REQUIRED
propertytst_qproperty.cpp
from Qt6 to test bindable supportW_SLOT_N
,W_INVOKABLE_N
,W_SIGNAL_N
orW_SIGNAL_COMPAT_N
.Faster compile times:
This enables some cleanups:
W_
macros to avoid tooling confusion (clang_format, QtCreator)While I was on breaking changes, I also upped the project a bit:
If we want to move forward with this, we should do: