BioCMAMC-ST
serde.hpp
1
2
3#ifndef __CORE__SERDE_HPP__
4#define __CORE__SERDE_HPP__
5#include <core/global_initaliser.hpp>
6
7#include <core/case_data.hpp>
8#include <string_view>
9namespace SerDe
10{
11 void save_simulation(const Core::CaseData& case_data);
12
13 std::optional<Core::CaseData> impl_load(
14 std::shared_ptr<IO::Logger>& logger,
15 const ExecInfo& exec,
16 const Core::UserControlParameters&& params,
17 std::optional<Simulation::Feed::SimulationFeed> feed,
18 std::optional<Simulation::MassTransfer::Type::MtrTypeVariant> mtr_type);
19
20} // namespace SerDe
21
22#ifdef USE_CEAREAL
23# include <cereal/archives/binary.hpp>
24#endif
25
26namespace SerDe
27{
28
29#ifdef USE_CEAREAL
30 template <typename T = void>
31 requires AutoGenerated::FlagCompileTime::use_cereal_serde
32 void
33 do_serde(Core::CaseData& case_data)
34 {
35 std::cout << "Serialization...";
36 SerDe::save_simulation(case_data);
37 std::cout << "Done" << std::endl;
38 }
39
40 template <typename T = void>
41 requires AutoGenerated::FlagCompileTime::use_cereal_serde
42 std::optional<Core::CaseData>
43 load(std::shared_ptr<IO::Logger>& logger,
44 const ExecInfo& exec,
45 const Core::UserControlParameters&& params,
46 std::optional<Simulation::Feed::SimulationFeed> feed,
47 std::optional<Simulation::MassTransfer::Type::MtrTypeVariant> mtr_type)
48 {
49 return SerDe::impl_load(
50 logger, exec, std::move(params), std::move(feed), std::move(mtr_type));
51 }
52
53#endif
54
55 template <typename T = void>
56 requires(!AutoGenerated::FlagCompileTime::use_cereal_serde)
57 void
59 {
60 // NOP
61 }
62
63 template <typename T = void>
64 requires(!AutoGenerated::FlagCompileTime::use_cereal_serde)
65 [[maybe_unused]] std::optional<Core::CaseData>
66 load([[maybe_unused]] const ExecInfo& exec,
67 [[maybe_unused]] const Core::UserControlParameters&& params,
68 [[maybe_unused]] std::optional<Simulation::Feed::SimulationFeed> feed,
69 [[maybe_unused]] std::optional<
71 {
72
73 return std::nullopt;
74 }
75
76} // namespace SerDe
77
78#endif
Definition serde.hpp:10
void save_simulation(const Core::CaseData &case_data)
std::optional< Core::CaseData > impl_load(std::shared_ptr< IO::Logger > &logger, const ExecInfo &exec, const Core::UserControlParameters &&params, std::optional< Simulation::Feed::SimulationFeed > feed, std::optional< Simulation::MassTransfer::Type::MtrTypeVariant > mtr_type)
void do_serde(Core::CaseData &)
Definition serde.hpp:58
std::optional< Core::CaseData > load(const ExecInfo &exec, const Core::UserControlParameters &&params, std::optional< Simulation::Feed::SimulationFeed > feed, std::optional< Simulation::MassTransfer::Type::MtrTypeVariant > mtr_type)
Definition serde.hpp:66
std::variant< FlowmapTurbulence, FixedKla, FlowmapKla, Auto > MtrTypeVariant
Definition mass_transfer.hpp:43
Holds the data required to execute a simulation case.
Definition case_data.hpp:40
A structure to hold user-defined control parameters for simulation settings.
Definition simulation_parameters.hpp:24
Definition execinfo.hpp:22