| ## This file is a template. The comment below is emitted |
| ## into the rendered file; feel free to edit this file. |
| // This file was auto generated. Do not edit. |
| |
| #include <cereal/types/string.hpp> |
| #include <cereal/types/tuple.hpp> |
| #include <cereal/types/vector.hpp> |
| #include <cereal/types/map.hpp> |
| #include "config.h" |
| % for iface in interfaces: |
| #include <${iface.header()}> |
| % endfor |
| |
| % for iface in interfaces: |
| <% properties = interface_composite.names(str(iface)) %>\ |
| CEREAL_CLASS_VERSION(${iface.namespace()}, CLASS_VERSION); |
| % endfor |
| |
| // Emitting signals prior to claiming a well known DBus service name causes |
| // un-necessary DBus traffic and wakeups. De-serialization only happens prior |
| // to claiming a well known name, so don't emit signals. |
| static constexpr auto skipSignals = true; |
| namespace cereal |
| { |
| |
| % for iface in interfaces: |
| <% properties = interface_composite.names(str(iface)) %>\ |
| template<class Archive> |
| void save(Archive& a, |
| const ${iface.namespace()}& object, |
| const std::uint32_t version) |
| { |
| <% |
| props = ["object." + p.camelCase + "()" for p in properties] |
| props = ', '.join(props) |
| %>\ |
| a(${props}); |
| } |
| |
| |
| template<class Archive> |
| void load(Archive& a, |
| ${iface.namespace()}& object, |
| const std::uint32_t version) |
| { |
| % for p in properties: |
| <% t = "object." + p.camelCase + "()" %>\ |
| decltype(${t}) ${p.CamelCase}{}; |
| % endfor |
| <% |
| props = ', '.join([p.CamelCase for p in properties]) |
| %>\ |
| a(${props}); |
| % for p in properties: |
| <% t = "object." + p.camelCase + "(" + p.CamelCase + ", skipSignals)" %>\ |
| ${t}; |
| % endfor |
| } |
| |
| % endfor |
| } // namespace cereal |