Krita Source Code Documentation
Loading...
Searching...
No Matches
KoResourceLoadResult.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
8#include <variant>
9#include <KisMpl.h>
10
11#include <KoResource.h>
12
14{
15 // XXX: this should take a monostate for null resources
16 // AAA: no, it shouldn't, null resource must be a KoResourceSignature only
17 std::variant<KoResourceSP, KoEmbeddedResource, KoResourceSignature> value;
18};
19
21 : m_d(new Private)
22{
23 m_d->value = resource;
24}
25
31
37
42
44{
45 m_d->value = rhs.m_d->value;
46 return *this;
47}
48
52
54{
55 return std::holds_alternative<KoResourceSP>(m_d->value) ? std::get<KoResourceSP>(m_d->value) : KoResourceSP();
56}
57
59{
60 return std::holds_alternative<KoEmbeddedResource>(m_d->value) ? std::get<KoEmbeddedResource>(m_d->value) : KoEmbeddedResource();
61}
62
64{
65 return std::visit(
67 [](const KoResourceSignature &signature) { return signature; },
68 [](const KoResourceSP &resource) { return resource->signature(); },
69 [](const KoEmbeddedResource &resource) { return resource.signature(); }
70 }, m_d->value);
71}
72
74{
75 return std::visit(
77 [](auto) { return FailedLink; },
78 [](const KoResourceSP &) { return ExistingResource; },
79 [](const KoEmbeddedResource &) { return EmbeddedResource; }
80 }, m_d->value);
81}
QSharedPointer< KoResource > KoResourceSP
KoResourceLoadResult & operator=(const KoResourceLoadResult &rhs)
KoResourceLoadResult(KoResourceSP resource)
KoResourceSP resource() const noexcept
KoEmbeddedResource embeddedResource() const noexcept
const QScopedPointer< Private > m_d
KoResourceSignature signature() const
A simple wrapper object for the main information about the resource.
std::variant< KoResourceSP, KoEmbeddedResource, KoResourceSignature > value