513 const Methods &methods,
const Properties &properties,
514 const Enums &enums,
const Constructors &constructors = {},
515 const ClassInfo &classInfo = {})
517 constexpr uint MetaTypeCount = Properties::metaTypeCount()
518 + Enums::metaTypeCount()
520 + Methods::metaTypeCount()
521 + Constructors::metaTypeCount();
523 constexpr uint HeaderSize = 14;
524 constexpr uint TotalSize = HeaderSize
525 + Properties::dataSize()
527 + Methods::dataSize()
528 + Constructors::dataSize()
529 + ClassInfo::headerSize()
533 MetaTypeCount> result = {};
534 strings.writeTo(result.staticData.stringdata, result.staticData.strings);
536 uint dataoffset = HeaderSize;
537 uint metatypeoffset = 0;
538 uint *data = result.staticData.data;
540 data[0] = QtMocConstants::OutputRevision;
543 data[2] = ClassInfo::headerSize() / 2;
544 data[3] = ClassInfo::headerSize() ? dataoffset : 0;
545 q20::copy_n(classInfo.header, classInfo.headerSize(), data + dataoffset);
546 dataoffset += ClassInfo::headerSize();
548 data[6] = properties.count();
549 data[7] = properties.count() ? dataoffset : 0;
550 properties.
template copyTo<Unique>(result, dataoffset, metatypeoffset);
551 dataoffset += properties.dataSize();
553 data[8] = enums.count();
554 data[9] = enums.count() ? dataoffset : 0;
555 enums.
template copyTo<Unique>(result, dataoffset, metatypeoffset);
556 dataoffset += enums.dataSize();
559 result.relocatingData.metaTypes[metatypeoffset++] = QMetaType::fromType<ObjectType>().iface();
561 data[4] = methods.count();
562 data[5] = methods.count() ? dataoffset : 0;
563 methods.
template copyTo<Unique>(result, dataoffset, metatypeoffset);
564 dataoffset += methods.dataSize();
566 data[10] = constructors.count();
567 data[11] = constructors.count() ? dataoffset : 0;
568 constructors.
template copyTo<Unique>(result, dataoffset, metatypeoffset);
569 dataoffset += constructors.dataSize();
574 if constexpr (Methods::count()) {
575 constexpr uint MethodHeaderSize = Methods::headerSize() / Methods::count();
576 const uint *ptr = &data[data[5]];
577 const uint *end = &data[data[5] + MethodHeaderSize * Methods::count()];
578 for ( ; ptr < end; ptr += MethodHeaderSize) {
579 if ((ptr[4] & QtMocConstants::MethodSignal) == 0)