openPMD-api
 
Loading...
Searching...
No Matches
InvalidatableFile.hpp
1/* Copyright 2018-2025 Franz Poeschel, Axel Huebl
2 *
3 * This file is part of openPMD-api.
4 *
5 * openPMD-api is free software: you can redistribute it and/or modify
6 * it under the terms of of either the GNU General Public License or
7 * the GNU Lesser General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * openPMD-api is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License and the GNU Lesser General Public License
15 * for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * and the GNU Lesser General Public License along with openPMD-api.
19 * If not, see <http://www.gnu.org/licenses/>.
20 */
21#pragma once
22
23#include <memory>
24#include <string>
25
26namespace openPMD
27{
43struct InvalidatableFile
44{
45 explicit InvalidatableFile(std::string s);
46
47 InvalidatableFile() = default;
48
49 struct FileState
50 {
51 explicit FileState(std::string s);
52
53 std::string name;
54 bool valid = true;
55 };
56
57 std::shared_ptr<FileState> fileState;
58
59 void invalidate();
60
61 bool valid() const;
62
63 InvalidatableFile &operator=(std::string s);
64
65 bool operator==(InvalidatableFile const &f) const;
66
67 std::string &operator*() const;
68
69 std::string *operator->() const;
70
71 explicit operator bool() const;
72};
73} // namespace openPMD
74
75namespace std
76{
77template <>
78struct hash<openPMD::InvalidatableFile>
79{
80 using argument_type = openPMD::InvalidatableFile;
81 using result_type = std::size_t;
82
83 result_type operator()(argument_type const &s) const noexcept;
84};
85} // namespace std
Public definitions of openPMD-api.
Definition Date.cpp:29
STL namespace.
Wrapper around a shared pointer to:
Definition InvalidatableFile.hpp:44