File indexing completed on 2025-01-12 07:20:48
0001 /* 0002 SPDX-FileCopyrightText: 2018 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KPUBLICTRANSPORT_DATATYPES_P_H 0008 #define KPUBLICTRANSPORT_DATATYPES_P_H 0009 0010 #include "datatypes.h" 0011 0012 #include <QSharedData> 0013 #include <QVariant> 0014 0015 #define KPUBLICTRANSPORT_MAKE_GADGET(Class) \ 0016 Class::Class() : d(new Class ## Private) {} \ 0017 Class::Class(const Class&) = default; \ 0018 Class::Class(Class&&) noexcept = default; \ 0019 Class::~Class() = default; \ 0020 Class& Class::operator=(const Class&) = default; \ 0021 Class& Class::operator=(Class&&) noexcept = default; \ 0022 Class::operator QVariant() const { return QVariant::fromValue(*this); } 0023 0024 // TODO this could be improved by checking for equality before detaching 0025 // but this requires similar equality workarounds than KItinerary uses 0026 #define KPUBLICTRANSPORT_MAKE_PROPERTY(Class, Type, Getter, Setter) \ 0027 Type Class::Getter() const { return d->Getter; } \ 0028 void Class::Setter(KPublicTransport::Internal::parameter_type<Type>::type value) \ 0029 { \ 0030 d.detach(); \ 0031 d->Getter = value; \ 0032 } 0033 0034 #endif