wiRedPanda
Home
About
Download
Try out
API Docs
wiRedPanda
Logic Circuit Simulator
Loading...
Searching...
No Matches
ExternalFilePath.h
Go to the documentation of this file.
1
// Copyright 2015 - 2026, GIBIS-UNIFESP and the wiRedPanda contributors
2
// SPDX-License-Identifier: GPL-3.0-or-later
3
12
13
#pragma once
14
15
#include <optional>
16
17
#include <QDir>
18
#include <QFileInfo>
19
#include <QString>
20
21
#include "
App/IO/SerializationContext.h
"
22
23
namespace
ExternalFilePath
{
24
32
inline
QString
resolve
(
const
QString &storedPath,
const
QString &contextDir)
33
{
34
if
(storedPath.isEmpty() || contextDir.isEmpty()) {
35
return
storedPath;
36
}
37
38
const
QDir dir(contextDir);
39
const
QString asGiven = dir.filePath(storedPath);
40
if
(QFileInfo(asGiven).isFile()) {
41
return
asGiven;
42
}
43
44
return
dir.filePath(QFileInfo(QString(storedPath).replace(
'\\'
,
'/'
)).fileName());
45
}
46
52
inline
QString
forWriting
(
const
QString &path,
SerializationPurpose
purpose)
53
{
54
if
(path.startsWith(
":/"
) || purpose ==
SerializationPurpose::InMemorySnapshot
) {
55
return
path;
56
}
57
return
QFileInfo(path).fileName();
58
}
59
68
inline
std::optional<QString>
forReading
(
const
QString &storedValue,
const
QString &contextDir,
SerializationPurpose
purpose)
69
{
70
if
(purpose ==
SerializationPurpose::InMemorySnapshot
) {
71
return
storedValue;
72
}
73
74
if
(storedValue.startsWith(
":/"
)) {
75
return
std::nullopt;
76
}
77
78
return
resolve
(storedValue, contextDir);
79
}
80
81
}
// namespace ExternalFilePath
SerializationContext.h
Deserialization/serialization context structs passed through load()/save() call chains.
SerializationPurpose
SerializationPurpose
What a serialization operation is for – shared by both load() and save(), so the same distinction is ...
Definition
SerializationContext.h:42
SerializationPurpose::InMemorySnapshot
@ InMemorySnapshot
Definition
SerializationContext.h:44
ExternalFilePath
Definition
ExternalFilePath.h:23
ExternalFilePath::resolve
QString resolve(const QString &storedPath, const QString &contextDir)
Definition
ExternalFilePath.h:32
ExternalFilePath::forReading
std::optional< QString > forReading(const QString &storedValue, const QString &contextDir, SerializationPurpose purpose)
Definition
ExternalFilePath.h:68
ExternalFilePath::forWriting
QString forWriting(const QString &path, SerializationPurpose purpose)
Definition
ExternalFilePath.h:52
App
IO
ExternalFilePath.h
Generated by
1.16.1