File indexing completed on 2024-05-12 04:42:42

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