/****************************************************************************
** Meta object code from reading C++ file 'vehicle.h'
**
** Created by: The Qt Meta Object Compiler version 69 (Qt 6.12.0)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/

#include "../../../../../kpublictransport-26.07.90/src/lib/datatypes/vehicle.h"
#include <QtCore/qmetatype.h>

#include <QtCore/qtmochelpers.h>

#include <memory>


#include <QtCore/qxptype_traits.h>
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'vehicle.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 69
#error "This file was generated using the moc from 6.12.0. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif

#ifndef Q_CONSTINIT
#define Q_CONSTINIT
#endif

QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
QT_WARNING_DISABLE_GCC("-Wuseless-cast")
namespace {
struct qt_meta_tag_ZN16KPublicTransport14VehicleSectionE_t {};
} // unnamed namespace

template <> constexpr inline auto KPublicTransport::VehicleSection::qt_create_metaobjectdata<qt_meta_tag_ZN16KPublicTransport14VehicleSectionE_t>()
{
    namespace QMC = QtMocConstants;
    QtMocHelpers::StringRefStorage qt_stringData {
        "KPublicTransport::VehicleSection",
        "feature",
        "KPublicTransport::Feature",
        "",
        "KPublicTransport::Feature::Type",
        "type",
        "vehicleTypeIconName",
        "KPublicTransport::VehicleSection::Type",
        "name",
        "platformPositionBegin",
        "platformPositionEnd",
        "Type",
        "typeName",
        "classes",
        "Classes",
        "classesName",
        "sectionFeatures",
        "std::vector<KPublicTransport::Feature>",
        "deckCount",
        "connectedSides",
        "Sides",
        "disruptionEffect",
        "KPublicTransport::Disruption::Effect",
        "load",
        "KPublicTransport::Load::Category",
        "platformSectionName",
        "length",
        "iconName",
        "UnknownType",
        "Engine",
        "PowerCar",
        "ControlCar",
        "PassengerCar",
        "RestaurantCar",
        "SleepingCar",
        "CouchetteCar",
        "CarTransportCar",
        "Class",
        "UnknownClass",
        "FirstClass",
        "SecondClass",
        "ThirdClass",
        "Side",
        "NoSide",
        "Front",
        "Back"
    };

    QtMocHelpers::UintData qt_methods {
        // Method 'feature'
        QtMocHelpers::MethodData<KPublicTransport::Feature(KPublicTransport::Feature::Type) const>(1, 3, QMC::AccessPublic, 0x80000000 | 2, {{
            { 0x80000000 | 4, 5 },
        }}),
        // Method 'vehicleTypeIconName'
        QtMocHelpers::MethodData<QString(KPublicTransport::VehicleSection::Type)>(6, 3, QMC::AccessPublic, QMetaType::QString, {{
            { 0x80000000 | 7, 5 },
        }}),
    };
    QtMocHelpers::UintData qt_properties {
        // property 'name'
        QtMocHelpers::PropertyData<QString>(8, QMetaType::QString, QMC::DefaultPropertyFlags | QMC::Writable | QMC::StdCppSet),
        // property 'platformPositionBegin'
        QtMocHelpers::PropertyData<float>(9, QMetaType::Float, QMC::DefaultPropertyFlags | QMC::Writable | QMC::StdCppSet),
        // property 'platformPositionEnd'
        QtMocHelpers::PropertyData<float>(10, QMetaType::Float, QMC::DefaultPropertyFlags | QMC::Writable | QMC::StdCppSet),
        // property 'type'
        QtMocHelpers::PropertyData<enum Type>(5, 0x80000000 | 11, QMC::DefaultPropertyFlags | QMC::Writable | QMC::EnumOrFlag | QMC::StdCppSet),
        // property 'typeName'
        QtMocHelpers::PropertyData<QString>(12, QMetaType::QString, QMC::Readable | QMC::Designable | QMC::Scriptable),
        // property 'classes'
        QtMocHelpers::PropertyData<Classes>(13, 0x80000000 | 14, QMC::DefaultPropertyFlags | QMC::Writable | QMC::EnumOrFlag | QMC::StdCppSet),
        // property 'classesName'
        QtMocHelpers::PropertyData<QString>(15, QMetaType::QString, QMC::Readable | QMC::Designable | QMC::Scriptable),
        // property 'sectionFeatures'
        QtMocHelpers::PropertyData<std::vector<KPublicTransport::Feature>>(16, 0x80000000 | 17, QMC::Readable | QMC::Designable | QMC::Scriptable | QMC::EnumOrFlag),
        // property 'deckCount'
        QtMocHelpers::PropertyData<int>(18, QMetaType::Int, QMC::DefaultPropertyFlags | QMC::Writable | QMC::StdCppSet),
        // property 'connectedSides'
        QtMocHelpers::PropertyData<Sides>(19, 0x80000000 | 20, QMC::DefaultPropertyFlags | QMC::Writable | QMC::EnumOrFlag | QMC::StdCppSet),
        // property 'disruptionEffect'
        QtMocHelpers::PropertyData<KPublicTransport::Disruption::Effect>(21, 0x80000000 | 22, QMC::DefaultPropertyFlags | QMC::Writable | QMC::EnumOrFlag | QMC::StdCppSet),
        // property 'load'
        QtMocHelpers::PropertyData<KPublicTransport::Load::Category>(23, 0x80000000 | 24, QMC::DefaultPropertyFlags | QMC::Writable | QMC::EnumOrFlag | QMC::StdCppSet),
        // property 'platformSectionName'
        QtMocHelpers::PropertyData<QString>(25, QMetaType::QString, QMC::DefaultPropertyFlags | QMC::Writable | QMC::StdCppSet),
        // property 'length'
        QtMocHelpers::PropertyData<double>(26, QMetaType::Double, QMC::DefaultPropertyFlags | QMC::Writable | QMC::StdCppSet),
        // property 'iconName'
        QtMocHelpers::PropertyData<QString>(27, QMetaType::QString, QMC::Readable | QMC::Designable | QMC::Scriptable),
    };
    QtMocHelpers::UintData qt_enums {
        // enum 'Type'
        QtMocHelpers::EnumData<enum Type>(11, 11, QMC::EnumFlags{}).add({
            {   28, Type::UnknownType },
            {   29, Type::Engine },
            {   30, Type::PowerCar },
            {   31, Type::ControlCar },
            {   32, Type::PassengerCar },
            {   33, Type::RestaurantCar },
            {   34, Type::SleepingCar },
            {   35, Type::CouchetteCar },
            {   36, Type::CarTransportCar },
        }),
        // flag 'Classes'
        QtMocHelpers::EnumData<Classes>(14, 37, QMC::EnumIsFlag).add({
            {   38, Class::UnknownClass },
            {   39, Class::FirstClass },
            {   40, Class::SecondClass },
            {   41, Class::ThirdClass },
        }),
        // flag 'Sides'
        QtMocHelpers::EnumData<Sides>(20, 42, QMC::EnumIsFlag).add({
            {   43, Side::NoSide },
            {   44, Side::Front },
            {   45, Side::Back },
        }),
    };
    return QtMocHelpers::metaObjectData<VehicleSection, qt_meta_tag_ZN16KPublicTransport14VehicleSectionE_t>(QMC::PropertyAccessInStaticMetaCall, qt_stringData,
            qt_methods, qt_properties, qt_enums);
}
Q_CONSTINIT static const QMetaObject::SuperData qt_meta_extradata_ZN16KPublicTransport14VehicleSectionE[] = {
    QMetaObject::SuperData::link<KPublicTransport::Disruption::staticMetaObject>(),
    QMetaObject::SuperData::link<KPublicTransport::Load::staticMetaObject>(),
    nullptr
};

Q_CONSTINIT const QMetaObject KPublicTransport::VehicleSection::staticMetaObject = { {
    nullptr,
    qt_staticMetaObjectStaticContent<qt_meta_tag_ZN16KPublicTransport14VehicleSectionE_t>.stringdata,
    qt_staticMetaObjectStaticContent<qt_meta_tag_ZN16KPublicTransport14VehicleSectionE_t>.data,
    qt_static_metacall,
    qt_meta_extradata_ZN16KPublicTransport14VehicleSectionE,
    qt_staticMetaObjectRelocatingContent<qt_meta_tag_ZN16KPublicTransport14VehicleSectionE_t>.metaTypes,
    nullptr
} };

void KPublicTransport::VehicleSection::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
    auto *_t = reinterpret_cast<VehicleSection *>(_o);
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: { KPublicTransport::Feature _r = _t->feature((*reinterpret_cast<std::add_pointer_t<KPublicTransport::Feature::Type>>(_a[1])));
            if (_a[0]) *reinterpret_cast<KPublicTransport::Feature*>(_a[0]) = std::move(_r); }  break;
        case 1: { QString _r = _t->vehicleTypeIconName((*reinterpret_cast<std::add_pointer_t<KPublicTransport::VehicleSection::Type>>(_a[1])));
            if (_a[0]) *reinterpret_cast<QString*>(_a[0]) = std::move(_r); }  break;
        default: ;
        }
    }
    if (_c == QMetaObject::ReadProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: *reinterpret_cast<QString*>(_v) = _t->name(); break;
        case 1: *reinterpret_cast<float*>(_v) = _t->platformPositionBegin(); break;
        case 2: *reinterpret_cast<float*>(_v) = _t->platformPositionEnd(); break;
        case 3: *reinterpret_cast<enum Type*>(_v) = _t->type(); break;
        case 4: *reinterpret_cast<QString*>(_v) = _t->typeName(); break;
        case 5: QtMocHelpers::assignFlags<Classes>(_v, _t->classes()); break;
        case 6: *reinterpret_cast<QString*>(_v) = _t->classesName(); break;
        case 7: *reinterpret_cast<std::vector<KPublicTransport::Feature>*>(_v) = _t->sectionFeatures(); break;
        case 8: *reinterpret_cast<int*>(_v) = _t->deckCount(); break;
        case 9: QtMocHelpers::assignFlags<Sides>(_v, _t->connectedSides()); break;
        case 10: *reinterpret_cast<KPublicTransport::Disruption::Effect*>(_v) = _t->disruptionEffect(); break;
        case 11: *reinterpret_cast<KPublicTransport::Load::Category*>(_v) = _t->load(); break;
        case 12: *reinterpret_cast<QString*>(_v) = _t->platformSectionName(); break;
        case 13: *reinterpret_cast<double*>(_v) = _t->length(); break;
        case 14: *reinterpret_cast<QString*>(_v) = _t->iconName(); break;
        default: break;
        }
    }
    if (_c == QMetaObject::WriteProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: _t->setName(*reinterpret_cast<QString*>(_v)); break;
        case 1: _t->setPlatformPositionBegin(*reinterpret_cast<float*>(_v)); break;
        case 2: _t->setPlatformPositionEnd(*reinterpret_cast<float*>(_v)); break;
        case 3: _t->setType(*reinterpret_cast<enum Type*>(_v)); break;
        case 5: _t->setClasses(*reinterpret_cast<Classes*>(_v)); break;
        case 8: _t->setDeckCount(*reinterpret_cast<int*>(_v)); break;
        case 9: _t->setConnectedSides(*reinterpret_cast<Sides*>(_v)); break;
        case 10: _t->setDisruptionEffect(*reinterpret_cast<KPublicTransport::Disruption::Effect*>(_v)); break;
        case 11: _t->setLoad(*reinterpret_cast<KPublicTransport::Load::Category*>(_v)); break;
        case 12: _t->setPlatformSectionName(*reinterpret_cast<QString*>(_v)); break;
        case 13: _t->setLength(*reinterpret_cast<double*>(_v)); break;
        default: break;
        }
    }
}
namespace {
struct qt_meta_tag_ZN16KPublicTransport7VehicleE_t {};
} // unnamed namespace

template <> constexpr inline auto KPublicTransport::Vehicle::qt_create_metaobjectdata<qt_meta_tag_ZN16KPublicTransport7VehicleE_t>()
{
    namespace QMC = QtMocConstants;
    QtMocHelpers::StringRefStorage qt_stringData {
        "KPublicTransport::Vehicle",
        "platformPositionForSection",
        "",
        "sectionName",
        "name",
        "direction",
        "Direction",
        "sections",
        "QVariantList",
        "platformPositionBegin",
        "platformPositionEnd",
        "features",
        "std::vector<KPublicTransport::Feature>",
        "combinedFeatures",
        "aggregatedOccupancy",
        "std::vector<KPublicTransport::LoadInfo>",
        "UnknownDirection",
        "Forward",
        "Backward"
    };

    QtMocHelpers::UintData qt_methods {
        // Method 'platformPositionForSection'
        QtMocHelpers::MethodData<float(const QString &) const>(1, 2, QMC::AccessPublic, QMetaType::Float, {{
            { QMetaType::QString, 3 },
        }}),
    };
    QtMocHelpers::UintData qt_properties {
        // property 'name'
        QtMocHelpers::PropertyData<QString>(4, QMetaType::QString, QMC::DefaultPropertyFlags | QMC::Writable | QMC::StdCppSet),
        // property 'direction'
        QtMocHelpers::PropertyData<enum Direction>(5, 0x80000000 | 6, QMC::DefaultPropertyFlags | QMC::Writable | QMC::EnumOrFlag | QMC::StdCppSet),
        // property 'sections'
        QtMocHelpers::PropertyData<QVariantList>(7, 0x80000000 | 8, QMC::DefaultPropertyFlags | QMC::EnumOrFlag),
        // property 'platformPositionBegin'
        QtMocHelpers::PropertyData<float>(9, QMetaType::Float, QMC::Readable | QMC::Designable | QMC::Scriptable),
        // property 'platformPositionEnd'
        QtMocHelpers::PropertyData<float>(10, QMetaType::Float, QMC::Readable | QMC::Designable | QMC::Scriptable),
        // property 'features'
        QtMocHelpers::PropertyData<std::vector<KPublicTransport::Feature>>(11, 0x80000000 | 12, QMC::DefaultPropertyFlags | QMC::EnumOrFlag),
        // property 'combinedFeatures'
        QtMocHelpers::PropertyData<std::vector<KPublicTransport::Feature>>(13, 0x80000000 | 12, QMC::Readable | QMC::Designable | QMC::Scriptable | QMC::EnumOrFlag),
        // property 'aggregatedOccupancy'
        QtMocHelpers::PropertyData<std::vector<KPublicTransport::LoadInfo>>(14, 0x80000000 | 15, QMC::Readable | QMC::Designable | QMC::Scriptable | QMC::EnumOrFlag),
    };
    QtMocHelpers::UintData qt_enums {
        // enum 'Direction'
        QtMocHelpers::EnumData<enum Direction>(6, 6, QMC::EnumFlags{}).add({
            {   16, Direction::UnknownDirection },
            {   17, Direction::Forward },
            {   18, Direction::Backward },
        }),
    };
    return QtMocHelpers::metaObjectData<Vehicle, qt_meta_tag_ZN16KPublicTransport7VehicleE_t>(QMC::PropertyAccessInStaticMetaCall, qt_stringData,
            qt_methods, qt_properties, qt_enums);
}
Q_CONSTINIT const QMetaObject KPublicTransport::Vehicle::staticMetaObject = { {
    nullptr,
    qt_staticMetaObjectStaticContent<qt_meta_tag_ZN16KPublicTransport7VehicleE_t>.stringdata,
    qt_staticMetaObjectStaticContent<qt_meta_tag_ZN16KPublicTransport7VehicleE_t>.data,
    qt_static_metacall,
    nullptr,
    qt_staticMetaObjectRelocatingContent<qt_meta_tag_ZN16KPublicTransport7VehicleE_t>.metaTypes,
    nullptr
} };

void KPublicTransport::Vehicle::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
    auto *_t = reinterpret_cast<Vehicle *>(_o);
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: { float _r = _t->platformPositionForSection((*reinterpret_cast<std::add_pointer_t<QString>>(_a[1])));
            if (_a[0]) *reinterpret_cast<float*>(_a[0]) = std::move(_r); }  break;
        default: ;
        }
    }
    if (_c == QMetaObject::ReadProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: *reinterpret_cast<QString*>(_v) = _t->name(); break;
        case 1: *reinterpret_cast<enum Direction*>(_v) = _t->direction(); break;
        case 2: *reinterpret_cast<QVariantList*>(_v) = _t->sectionsVariant(); break;
        case 3: *reinterpret_cast<float*>(_v) = _t->platformPositionBegin(); break;
        case 4: *reinterpret_cast<float*>(_v) = _t->platformPositionEnd(); break;
        case 5: *reinterpret_cast<std::vector<KPublicTransport::Feature>*>(_v) = _t->features(); break;
        case 6: *reinterpret_cast<std::vector<KPublicTransport::Feature>*>(_v) = _t->combinedFeatures(); break;
        case 7: *reinterpret_cast<std::vector<KPublicTransport::LoadInfo>*>(_v) = _t->aggregatedOccupancy(); break;
        default: break;
        }
    }
    if (_c == QMetaObject::WriteProperty) {
        void *_v = _a[0];
        switch (_id) {
        case 0: _t->setName(*reinterpret_cast<QString*>(_v)); break;
        case 1: _t->setDirection(*reinterpret_cast<enum Direction*>(_v)); break;
        default: break;
        }
    }
}
QT_WARNING_POP
