On Friday 9 August 2024 01:36:22 GMT-7 Ivan Solovev via Development wrote:
> Do I understand it correctly that the approach with constexpr functions will
> allow us to solve the problems with moc (point 2 from the first e-mail of
> the thread)?

I've thrown together a sample of what it may look like for the Qt namespace.  
I have not modified moc yet, so I generated from the moc JSON output and manual 
editing. I've tested Clang 18, GCC 13.3 and VS 2022 and they all compiled, 
producing a std::array<uint, 3007>. I also noted in editing this that there's 
an opportunity for reduction by reusing the definitions of flags that are 
Q_ENUMs too.

moc_qnamespace.cpp is by far the largest in qtbase:
$ find -name 'moc*cpp' -printf '%-6s %p\n' | sort -n | tail -3
49965  ./src/corelib/Core_autogen/include/moc_qlocale.cpp
70502  ./src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp
87549  ./src/corelib/Core_autogen/43AIQRLLGG/moc_qnamespace.cpp

I've thrown it at the CI to check more:
https://codereview.qt-project.org/c/qt/qtbase/+/582313

But not for all of Qt:
$ find -name 'moc*cpp' -size +115168c  -printf '%-6s %p\n'
88679  ./qtdeclarative/src/quick/Quick_autogen/include/
moc_qquickvaluetypes_p.cpp
90699  ./qtcharts/src/chartsqml2/ChartsQml_autogen/include/
moc_declarativebarseries_p.cpp
92547  ./qtdeclarative/src/quick/Quick_autogen/include/moc_qquickitem_p.cpp
101065 ./qtquick3d/src/quick3d/Quick3D_autogen/EWIEGA46WW/
moc_qquick3dspecularglossymaterial_p.cpp
104656 ./qtdeclarative/src/quick/Quick_autogen/include/moc_qquickpath_p.cpp
128155 ./qtquick3d/src/quick3d/Quick3D_autogen/EWIEGA46WW/
moc_qquick3dprincipledmaterial_p.cpp
140925 ./qttools/src/designer/src/components/lib/
DesignerComponentsPrivate_autogen/include/moc_qtpropertymanager.cpp
2844668 ./qtopcua/src/opcua/OpcUa_autogen/include/moc_qopcuanodeids.cpp

QOpcUa::NodeIds contains a single enum with 16162 entries. I'll need to test 
that too. The other ones are not big meta objects; the files are big because 
there are multiple classes in them and the content for signals and slots is 
large.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Principal Engineer - Intel DCAI Platform & System Engineering

Attachment: smime.p7s
Description: S/MIME cryptographic signature

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

Reply via email to