// Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #ifndef GREETER_H #define GREETER_H #include #include #include namespace HelloSwift { class SwiftGreeter; class Test; } template class SwiftWrapper { public: template SwiftWrapper(Args && ...args) : swiftImpl(new SwiftType( SwiftType::init( static_cast(this), std::forward(args)...))) { } protected: std::unique_ptr swiftImpl; }; class Greeter : public QObject, public SwiftWrapper { Q_OBJECT public: Q_PRIVATE_PROPERTY(swiftImpl, std::string greeting READ getGreeting NOTIFY greetingChanged) Q_PRIVATE_SLOT(swiftImpl, void updateGreeting()) Q_SIGNAL void greetingChanged(); } SWIFT_UNSAFE_REFERENCE; #endif // GREETER_H