513 const Methods &methods,
const Properties &properties,
514 const Enums &enums,
int qt_metaObjectHashIndex = -1,
515 const Constructors &constructors = {},
516 const ClassInfo &classInfo = {})
518 constexpr uint MetaTypeCount = Properties::metaTypeCount()
519 + Enums::metaTypeCount()
521 + Methods::metaTypeCount()
522 + Constructors::metaTypeCount();
524 constexpr uint HeaderSize = 15;
525 constexpr uint TotalSize = HeaderSize
526 + Properties::dataSize()
528 + Methods::dataSize()
529 + Constructors::dataSize()
530 + ClassInfo::headerSize()
534 MetaTypeCount> result = {};
535 strings.writeTo(result.staticData.stringdata, result.staticData.strings);
537 uint dataoffset = HeaderSize;
538 uint metatypeoffset = 0;
539 uint *data = result.staticData.data;
541 data[0] = QtMocConstants::OutputRevision;
544 data[2] = ClassInfo::headerSize() / 2;
545 data[3] = ClassInfo::headerSize() ? dataoffset : 0;
546 q20::copy_n(classInfo.header, classInfo.headerSize(), data + dataoffset);
547 dataoffset += ClassInfo::headerSize();
549 data[6] = properties.count();
550 data[7] = properties.count() ? dataoffset : 0;
551 properties.
template copyTo<Unique>(result, dataoffset, metatypeoffset);
552 dataoffset += properties.dataSize();
554 data[8] = enums.count();
555 data[9] = enums.count() ? dataoffset : 0;
556 enums.
template copyTo<Unique>(result, dataoffset, metatypeoffset);
557 dataoffset += enums.dataSize();
560 result.relocatingData.metaTypes[metatypeoffset++] = QMetaType::fromType<ObjectType>().iface();
562 data[4] = methods.count();
563 data[5] = methods.count() ? dataoffset : 0;
564 methods.
template copyTo<Unique>(result, dataoffset, metatypeoffset);
565 dataoffset += methods.dataSize();
567 data[10] = constructors.count();
568 data[11] = constructors.count() ? dataoffset : 0;
569 constructors.
template copyTo<Unique>(result, dataoffset, metatypeoffset);
570 dataoffset += constructors.dataSize();
575 if constexpr (Methods::count()) {
576 constexpr uint MethodHeaderSize = Methods::headerSize() / Methods::count();
577 const uint *ptr = &data[data[5]];
578 const uint *end = &data[data[5] + MethodHeaderSize * Methods::count()];
579 for ( ; ptr < end; ptr += MethodHeaderSize) {
580 if ((ptr[4] & QtMocConstants::MethodSignal) == 0)
586 data[14] = qt_metaObjectHashIndex;