Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b9570ff

Browse files
committedMar 15, 2024··
Serialization looks good, no loading yet
1 parent c29e7ff commit b9570ff

8 files changed

+896
-36
lines changed
 

‎immer/extra/archive/json/archivable.hpp

+10-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <immer/extra/archive/errors.hpp>
44
#include <immer/extra/archive/json/json_immer.hpp>
5+
#include <immer/extra/archive/json/json_immer_auto.hpp>
56
#include <immer/extra/archive/json/json_with_archive.hpp>
67
#include <immer/extra/archive/traits.hpp>
78

@@ -98,6 +99,13 @@ auto save_minimal(
9899
return id.value;
99100
}
100101

102+
template <class Archive, class WrapF, class Container>
103+
auto save_minimal(const json_immer_auto_output_archive<Archive, WrapF>& ar,
104+
const archivable<Container>& value)
105+
{
106+
return save_minimal(ar.archive, value);
107+
}
108+
101109
// This function must exist because cereal does some checks and it's not
102110
// possible to have only load_minimal for a type without having save_minimal.
103111
template <class Storage, class Names, class Container>
@@ -140,7 +148,8 @@ template <class Archive, class Container>
140148
auto save_minimal(const Archive& ar, const archivable<Container>& value) ->
141149
typename container_traits<Container>::container_id::rep_t
142150
{
143-
throw std::logic_error{"Should never be called"};
151+
throw std::logic_error{
152+
"Should never be called. save_minimal(const Archive& ar..."};
144153
}
145154

146155
template <class Archive, class Container>

‎immer/extra/archive/json/json_immer.hpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ class json_immer_output_archive
4646
archive.saveValue(value);
4747
}
4848

49-
ImmerArchives& get_output_archives() { return archives; }
49+
ImmerArchives& get_output_archives() & { return archives; }
50+
51+
ImmerArchives&& get_output_archives() && { return std::move(archives); }
5052

5153
void finalize()
5254
{

0 commit comments

Comments
 (0)
Please sign in to comment.