@@ -38,27 +38,19 @@ class Writer {
3838 using OutputUnionType = CerealOutputUnion;
3939 using OutputVarType = CerealOutputVar;
4040
41- Writer (CerealArchive* _archive) : archive_(_archive) {}
41+ Writer (CerealArchive* _archive);
4242
4343 ~Writer () = default ;
4444
45- OutputArrayType array_as_root (const size_t _size) const {
46- (*archive_)(::cereal::make_size_tag (_size));
47- return OutputArrayType{};
48- }
45+ OutputArrayType array_as_root (const size_t _size) const ;
4946
50- OutputMapType map_as_root (const size_t _size) const {
51- (*archive_)(::cereal::make_size_tag (_size));
52- return OutputMapType{};
53- }
47+ OutputMapType map_as_root (const size_t _size) const ;
5448
55- OutputObjectType object_as_root (const size_t _size) const {
56- return OutputObjectType{};
57- }
49+ OutputObjectType object_as_root (const size_t _size) const ;
5850
59- OutputUnionType union_as_root () const { return OutputUnionType{}; }
51+ OutputUnionType union_as_root () const ;
6052
61- OutputVarType null_as_root () const { return OutputVarType{}; }
53+ OutputVarType null_as_root () const ;
6254
6355 template <class T >
6456 OutputVarType value_as_root (const T& _var) const {
@@ -67,105 +59,57 @@ class Writer {
6759 }
6860
6961 OutputArrayType add_array_to_array (const size_t _size,
70- OutputArrayType* _parent) const {
71- (*archive_)(::cereal::make_size_tag (_size));
72- return OutputArrayType{};
73- }
62+ OutputArrayType* _parent) const ;
7463
7564 OutputArrayType add_array_to_map (const std::string_view& _name,
7665 const size_t _size,
77- OutputMapType* _parent) const {
78- add_string_view (_name);
79- (*archive_)(::cereal::make_size_tag (_size));
80- return OutputArrayType{};
81- }
66+ OutputMapType* _parent) const ;
8267
8368 OutputArrayType add_array_to_object (const std::string_view& _name,
8469 const size_t _size,
85- OutputObjectType* _parent) const {
86- (*archive_)(::cereal::make_size_tag (_size));
87- return OutputArrayType{};
88- }
70+ OutputObjectType* _parent) const ;
8971
9072 OutputArrayType add_array_to_union (const size_t _index, const size_t _size,
91- OutputUnionType* _parent) const {
92- (*archive_)(_index);
93- (*archive_)(::cereal::make_size_tag (_size));
94- return OutputArrayType{};
95- }
73+ OutputUnionType* _parent) const ;
9674
9775 OutputMapType add_map_to_array (const size_t _size,
98- OutputArrayType* _parent) const {
99- (*archive_)(::cereal::make_size_tag (_size));
100- return OutputMapType{};
101- }
76+ OutputArrayType* _parent) const ;
10277
10378 OutputMapType add_map_to_map (const std::string_view& _name,
10479 const size_t _size,
105- OutputMapType* _parent) const {
106- (*archive_)(std::string (_name));
107- (*archive_)(::cereal::make_size_tag (_size));
108- return OutputMapType{};
109- }
80+ OutputMapType* _parent) const ;
11081
11182 OutputMapType add_map_to_object (const std::string_view& _name,
11283 const size_t _size,
113- OutputObjectType* _parent) const {
114- (*archive_)(::cereal::make_size_tag (_size));
115- return OutputMapType{};
116- }
84+ OutputObjectType* _parent) const ;
11785
11886 OutputMapType add_map_to_union (const size_t _index, const size_t _size,
119- OutputUnionType* _parent) const {
120- (*archive_)(_index);
121- (*archive_)(::cereal::make_size_tag (_size));
122- return OutputMapType{};
123- }
87+ OutputUnionType* _parent) const ;
12488
12589 OutputObjectType add_object_to_array (const size_t _size,
126- OutputArrayType* _parent) const {
127- return OutputObjectType{};
128- }
90+ OutputArrayType* _parent) const ;
12991
13092 OutputObjectType add_object_to_map (const std::string_view& _name,
13193 const size_t _size,
132- OutputMapType* _parent) const {
133- add_string_view (_name);
134- return OutputObjectType{};
135- }
94+ OutputMapType* _parent) const ;
13695
13796 OutputObjectType add_object_to_object (const std::string_view& _name,
13897 const size_t _size,
139- OutputObjectType* _parent) const {
140- return OutputObjectType{};
141- }
98+ OutputObjectType* _parent) const ;
14299
143100 OutputObjectType add_object_to_union (const size_t _index, const size_t _size,
144- OutputUnionType* _parent) const {
145- (*archive_)(_index);
146- return OutputObjectType{};
147- }
101+ OutputUnionType* _parent) const ;
148102
149- OutputUnionType add_union_to_array (OutputArrayType* _parent) const {
150- return OutputUnionType{};
151- }
103+ OutputUnionType add_union_to_array (OutputArrayType* _parent) const ;
152104
153105 OutputUnionType add_union_to_map (const std::string_view& _name,
154- OutputMapType* _parent) const {
155- add_string_view (_name);
156- return OutputUnionType{};
157- }
106+ OutputMapType* _parent) const ;
158107
159108 OutputUnionType add_union_to_object (const std::string_view& _name,
160- OutputObjectType* _parent) const {
161- return OutputUnionType{};
162- }
109+ OutputObjectType* _parent) const ;
163110
164111 OutputUnionType add_union_to_union (const size_t _index,
165- OutputUnionType* _parent) const {
166- (*archive_)(_index);
167- return OutputUnionType{};
168- }
112+ OutputUnionType* _parent) const ;
169113
170114 template <class T >
171115 OutputVarType add_value_to_array (const T& _var, OutputArrayType*) const {
@@ -196,38 +140,25 @@ class Writer {
196140 return OutputVarType{};
197141 }
198142
199- OutputVarType add_null_to_array (OutputArrayType* _parent) const {
200- return OutputVarType{};
201- }
143+ OutputVarType add_null_to_array (OutputArrayType* _parent) const ;
202144
203145 OutputVarType add_null_to_map (const std::string_view& _name,
204- OutputMapType* _parent) const {
205- add_string_view (_name);
206- return OutputVarType{};
207- }
146+ OutputMapType* _parent) const ;
208147
209148 OutputVarType add_null_to_object (const std::string_view& _name,
210- OutputObjectType* _parent) const {
211- return OutputVarType{};
212- }
149+ OutputObjectType* _parent) const ;
213150
214151 OutputVarType add_null_to_union (const size_t _index,
215- OutputUnionType* _parent) const {
216- (*archive_)(_index);
217- return OutputVarType{};
218- }
152+ OutputUnionType* _parent) const ;
219153
220- void end_array (OutputArrayType* _arr) const noexcept {}
154+ void end_array (OutputArrayType* _arr) const noexcept ;
221155
222- void end_map (OutputMapType* _map) const noexcept {}
156+ void end_map (OutputMapType* _map) const noexcept ;
223157
224- void end_object (OutputObjectType* _obj) const noexcept {}
158+ void end_object (OutputObjectType* _obj) const noexcept ;
225159
226160 private:
227- void add_string_view (const std::string_view& _str) const {
228- (*archive_)(::cereal::make_size_tag (_str.size ()));
229- (*archive_)(::cereal::binary_data (_str.data (), _str.size ()));
230- }
161+ void add_string_view (const std::string_view& _str) const ;
231162
232163 template <class T >
233164 void add_value (const T& _var) const noexcept {
0 commit comments