OpenTTD Source: src/saveload/saveload_filter.h Source File

OpenTTD Source 14.0-RC3

saveload_filter.h
Go to the documentation of this file.
1 /*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6 */
7
10 #ifndef SAVELOAD_FILTER_H
11 #define SAVELOAD_FILTER_H
12
14 struct LoadFilter {
16 std::shared_ptr<LoadFilter> chain;
17
22 LoadFilter(std::shared_ptr<LoadFilter> chain) : chain(chain)
23 {
24 }
25
27 virtual ~LoadFilter()
28 {
29 }
30
37 virtual size_t Read(byte *buf, size_t len) = 0;
38
42 virtual void Reset()
43 {
44 this->chain->Reset();
45 }
46 };
47
53 template <typename T> std::shared_ptr<LoadFilter> CreateLoadFilter(std::shared_ptr<LoadFilter> chain)
54 {
55 return std::make_shared<T>(chain);
56 }
57
59 struct SaveFilter {
61 std::shared_ptr<SaveFilter> chain;
62
67 SaveFilter(std::shared_ptr<SaveFilter> chain) : chain(chain)
68 {
69 }
70
72 virtual ~SaveFilter()
73 {
74 }
75
81 virtual void Write(byte *buf, size_t len) = 0;
82
86 virtual void Finish()
87 {
88 if (this->chain != nullptr) this->chain->Finish();
89 }
90 };
91
98 template <typename T> std::shared_ptr<SaveFilter> CreateSaveFilter(std::shared_ptr<SaveFilter> chain, byte compression_level)
99 {
100 return std::make_shared<T>(chain, compression_level);
101 }
102
103 #endif /* SAVELOAD_FILTER_H */
SaveFilter::chain
std::shared_ptr< SaveFilter > chain
Chained to the (savegame) filters.
Definition: saveload_filter.h:61
LoadFilter::Reset
virtual void Reset()
Reset this filter to read from the beginning of the file.
Definition: saveload_filter.h:42
SaveFilter::SaveFilter
SaveFilter(std::shared_ptr< SaveFilter > chain)
Initialise this filter.
Definition: saveload_filter.h:67
LoadFilter::Read
virtual size_t Read(byte *buf, size_t len)=0
Read a given number of bytes from the savegame.
LoadFilter::LoadFilter
LoadFilter(std::shared_ptr< LoadFilter > chain)
Initialise this filter.
Definition: saveload_filter.h:22
SaveFilter::Finish
virtual void Finish()
Prepare everything to finish writing the savegame.
Definition: saveload_filter.h:86
SaveFilter::Write
virtual void Write(byte *buf, size_t len)=0
Write a given number of bytes into the savegame.
CreateLoadFilter
std::shared_ptr< LoadFilter > CreateLoadFilter(std::shared_ptr< LoadFilter > chain)
Instantiator for a load filter.
Definition: saveload_filter.h:53
LoadFilter::chain
std::shared_ptr< LoadFilter > chain
Chained to the (savegame) filters.
Definition: saveload_filter.h:16
SaveFilter::~SaveFilter
virtual ~SaveFilter()
Make sure the writers are properly closed.
Definition: saveload_filter.h:72
SaveFilter
Interface for filtering a savegame till it is written.
Definition: saveload_filter.h:59
LoadFilter
Interface for filtering a savegame till it is loaded.
Definition: saveload_filter.h:14
CreateSaveFilter
std::shared_ptr< SaveFilter > CreateSaveFilter(std::shared_ptr< SaveFilter > chain, byte compression_level)
Instantiator for a save filter.
Definition: saveload_filter.h:98
LoadFilter::~LoadFilter
virtual ~LoadFilter()
Make sure the writers are properly closed.
Definition: saveload_filter.h:27