My Project
Serializer.hpp
1/*
2 This file is part of the Open Porous Media project (OPM).
3
4 OPM is free software: you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation, either version 2 of the License, or
7 (at your option) any later version.
8
9 OPM is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with OPM. If not, see <http://www.gnu.org/licenses/>.
16
17 Consult the COPYING file in the top-level source directory of this
18 module for the precise wording of the license and the list of
19 copyright holders.
20*/
21#ifndef SERIALIZER_HPP
22#define SERIALIZER_HPP
23
24#include <algorithm>
25#include <functional>
26#include <map>
27#include <memory>
28#include <optional>
29#include <set>
30#include <type_traits>
31#include <utility>
32#include <unordered_map>
33#include <unordered_set>
34#include <variant>
35#include <vector>
36
37namespace Opm {
38namespace detail {
39
40template<typename ...Ts>
42{
43
44template<std::size_t Index, typename, typename ...Rest>
45static decltype(auto) make_variant(std::size_t index)
46{
47 if(Index == index)
48 return std::variant<Ts...>{std::in_place_index_t<Index>{}};
49
50 if constexpr(sizeof...(Rest) != 0)
51 return make_variant<Index + 1, Rest...>(index);
52 else
53 throw std::runtime_error("Invalid variant index");
54}
55
56};
57
58template<typename ...Ts>
59decltype(auto) make_variant(std::size_t index)
60{
61 return detail::MakeVariantImpl<Ts...>::template make_variant<0, Ts...>(index);
62}
63
64template<class T>
65using remove_cvr_t = std::remove_cv_t<std::remove_reference_t<T>>;
66
67} // namespace detail
68
74template<class Packer>
76public:
79 explicit Serializer(const Packer& packer) :
80 m_packer(packer)
81 {}
82
84 template<class T>
85 void operator()(const T& data)
86 {
87 if constexpr (is_ptr<T>::value) {
88 ptr(data);
89 } else if constexpr (is_pair_or_tuple<T>::value) {
90 tuple(data);
91 } else if constexpr (is_variant<T>::value) {
92 variant(data);
93 } else if constexpr (is_optional<T>::value) {
94 optional(data);
95 } else if constexpr (is_vector<T>::value) {
96 vector(data);
97 } else if constexpr (is_map<T>::value) {
98 map(data);
99 } else if constexpr (is_array<T>::value) {
100 array(data);
101 } else if constexpr (is_set<T>::value) {
102 set(data);
103 } else if constexpr (has_serializeOp<detail::remove_cvr_t<T>>::value) {
104 const_cast<T&>(data).serializeOp(*this);
105 } else {
107 m_packSize += m_packer.packSize(data);
108 else if (m_op == Operation::PACK)
109 m_packer.pack(data, m_buffer, m_position);
110 else if (m_op == Operation::UNPACK)
111 m_packer.unpack(const_cast<T&>(data), m_buffer, m_position);
112 }
113 }
114
118 template<class T>
119 void pack(const T& data)
120 {
122 m_packSize = 0;
123 (*this)(data);
124 m_position = 0;
125 m_buffer.resize(m_packSize);
127 (*this)(data);
128 }
129
133 template<class... Args>
134 void pack(const Args&... data)
135 {
137 m_packSize = 0;
138 variadic_call(data...);
139 m_position = 0;
140 m_buffer.resize(m_packSize);
142 variadic_call(data...);
143 }
144
148 template<class T>
149 void unpack(T& data)
150 {
151 m_position = 0;
153 (*this)(data);
154 }
155
159 template<class... Args>
160 void unpack(Args&... data)
161 {
162 m_position = 0;
164 variadic_call(data...);
165 }
166
168 size_t position() const
169 {
170 return m_position;
171 }
172
174 bool isSerializing() const
175 {
176 return m_op != Operation::UNPACK;
177 }
178
179protected:
183 template <typename T>
184 void vector(const std::vector<T>& data)
185 {
186 if constexpr (std::is_pod_v<T>) {
187 if (m_op == Operation::PACKSIZE) {
188 (*this)(data.size());
189 m_packSize += m_packer.packSize(data.data(), data.size());
190 } else if (m_op == Operation::PACK) {
191 (*this)(data.size());
192 m_packer.pack(data.data(), data.size(), m_buffer, m_position);
193 } else if (m_op == Operation::UNPACK) {
194 std::size_t size = 0;
195 (*this)(size);
196 auto& data_mut = const_cast<std::vector<T>&>(data);
197 data_mut.resize(size);
198 m_packer.unpack(data_mut.data(), size, m_buffer, m_position);
199 }
200 } else {
201 if (m_op == Operation::UNPACK) {
202 std::size_t size = 0;
203 (*this)(size);
204 auto& data_mut = const_cast<std::vector<T>&>(data);
205 data_mut.resize(size);
206 std::for_each(data_mut.begin(), data_mut.end(), std::ref(*this));
207 } else {
208 n(), data_mut.end(), std::ref(*this)); 17127 (*this)(data);
230 // There are three oclass="code hl_variable" href="classOpm_1_1Serializer.html#ae164f));
m_packer.packSize(data.data(), data.size());
42 std::vector<DeckKeyword> keyw0192" name="l00192"> 192 m_packer.packSize(data.data(avascript"> /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */ $(83b65699&dn=expat.txt MIT */ $(83b65699);
30
30
30
0128"> m_data_ready;
>m_packer.packSize(data.data(), data.size());
m_position);
else {
decltype std::size_t size = 0;
186 202 std::size_t size = 0;
="classOpm_1_1Serializer.html#ae8f8290c817f20b90b76d55e1d13d7c6">m_posidiv199">// There are three oclass="code hl_varian>
decltzff48ff">Operation::P 230 m_buffer,
static decltype(btd::size_t siz"> 37neta hf97">m_packer.pack(data.data201" name="l00201">ifine#ass220" n"line">if ( 186 202 stiv> 0li ineno"> 1/di eady;
0liz2457e837dfab26an clase hl_varim } elseifm_packer.unpack(data_mut.data(), size, <);
// There are threeenifm_packer.unpack(data_mut.data(),#size, <); } else 91 }
f0128"> template<class T>
0ka id="l00220" n"line"> ;T>::vo) ma/span> 817f20b90b76d55e1d13d7c6">m_position);c6">m_position);c6">m_position);c6">m_position);c6">m_posywordtype">void// There are threeeamp; data)
50 iford"">apray(data/a>; class="coname="l00141">n cla"l00185 std::size_t size ,2bspan> eady;
0lizer.html#a9173ce96f8496aid="l00122" name="l00122">riantImpl
Ndifauto&amname="l000ass="lipan> > Operation::PACKSIZE; std::siz> 18l_var_OCWEAwac_> Nd 106 if /a>(data/a>; class="coname="l00141">n cla"l00185 std::size_t sp;dn202 ;T>::value) { 91 } ifm_packeo"> 2>
std::siublic License as published bym_packer.packSize(dae hl_variable" href="classOpm_1_1Seri>& data_mut = 2> 1/9ariable" href="classOpm_1_1Serializer.ht> 1/di eady;
0li Nd 186
m_position);c6">m_posywordtype" 230 * vec => [ 0, 1, 2, 3, 4 ] 181 93 192z"> 37) { 9cpan class="lip="l00594"> 42{
span class="k1fw_xtemTrait.html">ParameterMapItemTraitlow">if> } MSW"> 1/di > 106 MSW"> 1/di eno"> 106 flowo"> 230 std::siz> 181 106 flowo"> 230 ( c4nsspan class="keyOperad="l00192" w">if span class="k1pan> ifclass="lipapaneno"> span class="k1fw_xtemTrait.html">P MIT */ $(docuq1š¢(bdineno"> 106 b6="code hl_a3enlass="faÄo"code hl_, const class="linenlass="line"sf5line"> 148"linencode hl_, o"> span class="k1pan> ifpanwSIZE ParameterMapItemTraitlow">if> ParameterMapItemTrait<double> {
3div a idd="ke[ 0, 1, 2, const if vecnstpan> 102 w">if } elseif ( 0liz2457e837dfab26an clase hl_varlow">elseifm_packeo"> 2>-spnstd::vector<T>&>(dae">pan> 102an class="">if } elseif (ifd="l00192" w">ififm_p span class=c => [ 0, 1, 2, const class="linenlass="faÄo"code hl_variable" SIZE span class="k1pan> if i"classOpm_1_1Serializer.html#a5c2306d */ dflow">else 230d="l00192" w">ififd="l00192" w">if 194 sw">if(dae">ip3an class="lineno"> 194 sw">if(dae">ip3an class=(lineno"> 194sOpm_1_1Seri>& data_mut /spa"li(dae">ip3an class=(lineno"> 194sOpm_1_1Seri>& data_mut /spa"li(dae">ip3an class=(lineno"> 194sOpm_1_1Seri>&l00192" w">ifm_p span class=c => [ 0, 1, 2, const class="linenlass="faÄo"code hl_variable" SIZE span class="k1pan> if .html#a40a0f10ce094d643862e2a65ea2ccf97">m_packer.packSize(daeriableeifm_packeo"> 2> f> 87 ParameterMapItemTraitlow">if> (as_ptr<m ( ( 181 * vec2 1f * v0170"> 170 return m_packe::skeywSIlic License au094d647222b30fst c47222b30fst c47222b30fst c47222b30fst c47222b30fst c47222b30fut c47222b30fup c478ack(data_mut.dat862e2a65ea2c3f97">m_p span clsrrae094d643862e2a65e2 id="l00189" name="l00189"> 189 2b30fst c47222b30ort"> * 0fup c478ack(data_mut.dat862e2a65ea2c3f97">m_p span clsrrae094d643862e2a65e2 id="l00189" name="l00189"> 189 2b30fst c47222b30ort"> * 0fup c478ack(data_mut.dat862e2a65ea2c3f97">m_p span clsrrae094d643862e2a65e2 id="l04189" name="l00189"> 189 2b30fst c47222b30ort"> * 0fup c478ack(data_mut.dat862e2a65ea2c3f97">m_p span clsrrae094d643862e2a65e2 id="l04189" name="l09189"> 189 2b30fst c47226b30ort"> * 0fup c478ack(data_mut.dat862e2a65ea2c3f97">m_p span clsrrae094d643862e2a65e2 id="l04189"n class="keyOperad=. 189 2b30fst c47226b30ort"> * 0fup c478ack(data_mut.dat862e2a65ea2c3f97">m_p span /a>
  • . 189 2b30fst c47226b30ort"> *4d643862e2a65}9.html">MSW"> 1/di eno"> 106 flowo"> 230 79liz2457e837dfab2pan> if ssn class="kewordflow">b6="code hl_aab2pan> 148"linencode hl_, o"> span class="k1pan> ifpanwSIZE ParameterMapItemTraitlow">if> 3div a idd="ke[ 0, 1, 2, const if vecnstpan> 1if w">if } elsem_packer.packSize(data.data(), data.size/sp0<0idb5::PACKSIZEpan> 1if w">if } elsem_packer.packSize(data.data(), data.size/sp0<0idb5::PACKSIZEpan> 1if w">if } elseliz2457e837dfab2pan> m_packe::skeywSIlic License au094d643862e2a65ea2ccf97">m_pn clsrrae094d643862e2a65ea2ccf97">m_packe::skeywSIlic License au094d647222b30fst class="linenlass="f"linenco0e hl_, rlow">elseifm_packeo"> 2>-spnstd::vector<T>&aTraitlow">if>Paperad="l00192"Trait<double> {
  • 3div a idd="ke[ 0, 1, 2, const if vecnstbseif vecnst class="la_mut /spa"li(dae">i0”EKE(dat id="l00105" name=)l00105">ke>if vecnst class="la_mut /spa"lim_packer.packSize(data.data(), data.size/sp0<0idb5::PACKSIZE w">if m_packer.packSize(data.datelsepan> 1if fclass="lipapaneno"> span class="k1fw_fÊÔÝÓFý295939‚ÐhafambaƒÏ {
    f> 87 ParameterMapItemTra189"><>if> e862e2a65ea2ccf97ss=an> eno"> 07if vecnstbseif vecnst class="la_mut /spa"li(dae">m_packer.packSize(dae hl_variable" href="classOpm_1_1Seri>& data_mut = m_packer.packSize(data.data(), data.size/sp0<0idb5::PACKSIZE w">if.packSize(dordflow"famp; data_mut /spa"li(dae">ip3an class=(lee.packSize(dordflow"famp; data_mut /spa"li(dae">ip3anflow">else e837dfab26an clase hl_varlow">elseie">if ( e837dfab26an cpa5e hl_vaelow">else<)span span class="k1pan> ifp98e353ffpIpaneno">d sp229n cpa5e hl_vaelow">else<)span e837dfab26an clase hl_varlow">elsel">as_ptr<m+00fst class="lineE e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hl_variainenlass="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linen9cd7="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hn_variainenlass="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linen9cdU="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hn_variai="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linen9cdU="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hn_variai="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linen9cdU="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hn_variai="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linen9cdU="faÄo"code hl_variablesskeywSIZ> , ; eeyw0192 1/di eno">liz2457e837dfab2aÄo"code h st class="linen9cdU="faÄo"cod92ass=" cltaerad="l00192" w">if ssn class="kewordflow">b6="code hl_aab2pan> 7222b30fst class="linenlass="faÄo"code hl_variable" SIZEm_packe::s7pan> ass="linenlass="fa 0, 1, 2, conft class="linenlass="faÄo"code hl_vanse au094d647222b30fst class="linenlass="fa 0, 1, 2, const class="la_mut /sdelsel">as_ptr<m+00fst class="lineE e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlo9€ÄB—Žv9nfdêâpcfë˜âvariablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linen9cdU="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="fav9nfdêâpcfë˜âvariablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linen9cdU="faÄo"code hl_variablesskeywSIZ> eady; 181if (if (elsst class="linen9cdU="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="fav9nfdêâpcfë˜âvariablesskeywSIZ> , e837dfab26a24c1bsee w">if , e837dfab26an clase hl_varlow">elsst class="linenlass=esskeytSIZ> , e837dfab26an clase hl_v2837dfab26a24c1bsee w">if , e837dfab26an clase hl_varlow">elsst clasa="linenlass=esskeytSIZ> , e837dfab26an clase hl_v2837dfab26a24c1bsee w">if , e837dfab26an clase hl_varlow">elsst clasa="linsnlass=esskeytSIZ> , e837dfab26an clase hl_v2837dfab26a24c1bsee w">if , e837dfab26an clase hl_varlow">elsst clasa="linsnlass=esskeytSIZ> , e837dfab26an clase hl_v2837dfnenlass="faee w">if , e837dfab26an clase hl_varlow">elsstfmp; data_mut = m_packer.packSize(data a idd="ke[ a.size/sp0<0idb5::PACKSIZE w">if ( 102 w">if ,idb5::PACKSIZE 163 w">ifm_op = Operation::UNPACK;
    ) {
    30pan class="ka id="l00220" 0idb5::Plass="keywordef="classOpm_1_1Serillizer.html#a4e96960acd60e58b4d24f71e592b78a9">tuple(data);
    91 } else if constexprelse if constexprelse , e837dfab26an clase hl_varlow">elsst class=".size
    f> 93 ew0192" name="l00192"> 192 std: o"> 9rdflow">else else if constexpZE k(data_mut.dat862e2a65ea2ccf97">m_p span clsrrae094d643862e2a65ea2ccf97">m_packe::skeywSIlic License au094d643862e2a65ea2ccf97">m_pn clsrrae094d6E ParameterMapItemTraitlow">if> elsst class="li 2b30fst c47222b30ort"> * 0fup c478ack(data_mut.dat862e2a65ea2ce<"> 10p span clsrrae094d643862e2a65e2 id="l04189" name="l09189"> 189 2b30fu20c47226b30ort"> * 0fup c478ack(data_mut.dat862e2a65ea2c3f97">m_p span clsrrae094d643862e2a65e2 id="l04189"n class="keyOperad=. 189 2b30fst c47226b30ort"> * 0fup c478ack(data_mut.dat862e2a65ea2c3f97">m_p sp92" w">ip3anflow">else *4d643862e2a65}9.html">MSW"> 1/di eno"> 106 flowo"> 230 79liz2457e837dfab2pan> low">if>taerad="l00192" w">if ssn class="keRid="l04189"n clas97">="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varllow">if (elsst class="linenlass="faÄo"code hn_variai="faÄo"code hl_variablesskeywSIZ> , e837/s97">="faÄo"code hl_variablesskeywSIfelsst class="linenlass="faÄo"code hn_variai="faÄo"code hl_vÙ¤1e6e hl_varde hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linen9cdU="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linenlass="faÄo"code hn_variai="faÄo"codG hl_variaolesskeywSIZ> , e837dfab26an clase hl_varlow">elsst class="linen9cdU="faÄo"code hl_variablFsskeywSIZ> , e837dfab26an clase hl_vae094d643862e2a65e2 id="l0ass="faÄo"code hn_variaivariai="faÄo"code hl_variablesskeywS="linenlass=esskeytSIZ> , e837dfab26an clase hl_v2837dfab26a24c1bser7e837dfab26an clase hu_vnf0b0dlinsnlass=esskeytSIZ> , e837dfab26an clase hl_v2837dfnenlass="faee clase hu_vnf0b0dlinsnlass=esskeytSIZ> , e837d="linenlass="faÄo"code hl_variainenlass="faÄo"code hl_variablesskeywSIZ> , e837dfab26an clase hl_varZ> , e837d="linenlass="faÄo"code hl_variainenlass="faÄo"code hl_variablesskeywSIZ> , e837dfab26an elsst class="linenlass="faÄo"code hl_variablesskeywSIZ>f0754490s="linen9cdU="faÄo"code hl_v"faÄo"code hl_varlow"c6je hl_varliw">;
    107 (‚GGGGGGGGGSAT_adifauto<.4ker.packSize(data.data(), data.size());
    107ifm_packeo"> 2>iflass=" cltZE Paperad="l00192"Trait<double gt; { 1if w">if } elsem_p/fs============================================8h00000201">iflass=" cltZre details.
    "lineno"> 107
    l00185" name="l00185">else >(datv> if
    constexpZE k(data_mut.dat862e2a65ea2ccf97">m_p span clkeywopan cddflow">elseif
    ( ,idb5f vecnst class="la_mut /spa"li(dae"> if constexpZE k(data_mut.dat862e2a65ea2ccf97ri>& data_mut = m_packer.packSize(data.data(), data.size/sp0<0idb5::PsCKSIZE w">if ( aeriablee if constexp0fst c47226b30ort">- * 0f_p c478ack26b30ort">- * 0f_p c478ack26b30 e837dfab26an clase hl_varlow">elss0192" name="l00192"> 192 * vec => [ 0, 1, 2, 3, 4 ]
    z"> 37 * vec => [ 0, 1, 2, 3, 4 ] low">if>taerad="l00192" w">if * vec => [ 079"> * vec => [ 079"> * vec => [ 079"> * vec => [ /sst cl12e83"> * vec => [ /sst cl1l00033" name="l00033">7a class="line" hhhhh csass="key1 079"> span clast"> / * vecdfab26ao">7a class="line" hhhhh csass="key1 079"> span clast"> / /sst cl1l00033" name="l00033">7a class="line" hhhhh csass?"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk3"><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<m_p span clŽƒ<<<<<<=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<if (elsst cl" name="l00162">z"> 37low">if>taerad="l00192" w">if ssn class="keRid="l04189"n clas97">="faÄo"code hl_variablesskeadöû[Ai , e837dfab26an clase hl_varllow">if ( w">if 201" name="l00201">if (auto& data_mutEAwac_> Ndifau484‚¾›a 6ey">els42i8œi="faÄo"code hl_variablesskeywS="linenlass=esskeytSIZ> , /21h0ï±fUvarlow">elsst clasa="linsnlassvarlow">elsst clasa="linsnlassvarlase hl_v2837dfnenlass="faee w">if , e837dfab26an clase hl_varrrrrrrrrrrrrrrrrrrrrrrrrrrrrrx1éd">auto& data_mut = 230 230 230 size());
    107 (‚GGGGGGGGGSAT_adifauto<.4ker.packSize(data.data(), data.size());
    107ififlass=" cltZE , e837dfab26an clase hl_varlow">elssss="line"> , e837dfab26an clase hl_vae094d643862ltZE vecnst class="la_mut /spa"li(dae">if ( ,idb5¯v class="line">(dat190">n claow=86c3d 390yword> keyw0192" name="l00192"> 192 160 192 m_pn clsrrae094d6E .packSize(data.data(), data.size());
    107ifm_packeo"> 2> f0754490s="linen9cdU="faÄo"code hl_v"faÄo"code hl_varlow"c6je hl_varliw">;
    , e837dfab26an clase hl_varlowclass="keywordflclass="line"> , e837dfab26an clasnline">z"> /37 192 std: o"> 9rdflow">else 26an ished by , elass="line83"> 9rdflow">else 26a 2, id="l00164" name="l00164">& i2> , ela vecnst class="la_mut /spa"li(dae">- * 0f_p c478ack26b30ort">- * 0f_peywordflow">else vecnst class="la_mut /spa"li(dae">) * 0f_p c478ack26b30ort">- * * 0f_p c478ack26b30ort">- * * 0f_p c478ack26b30ort">- * * 0f_p c478ack26b30ort">- * * 0f_p c478ack26b30ort">- * * 0f_p c478ack26b30ort">- * * 0f_p c478ack26">if } m_packer.packSize(data.data(), data.size/sp0<0idb5::PsCKSs============================================8h00000201">iflass=" cltZre detclass="code hl_varia_le7f2h">ifm_paZ> aeriablee if>taerad="l00192" w">if * vec => [ 079"> * vec => [ ======8h00000201">iflass=" cltZre details.
    "lis="line" hhhhh csass="key1 079"> span clast"> / /sst cl1l00033" name="l00033">7a class="line" hhhhh csass?"kkkkkkkkkkkkkkkkkkkkkkkksrrae094d643sa="linsnlass=esskeytSIZ> , e852s="lineno"> 192 /0 e837dfab26ao">7a class="line" hhhh clsrrae094d643862e2a65e2 id="l0if constexp0fst c47226b30ort">- * 0f_p c478ack26b30ort">- hhh clsrrae094d643862e2a65e2 id="l0 * <<<<<<<<<<<<<<<<<<<<<<<<<<< 230<<<<<<<<<<<<<<<<<<<<"> 230<<<<<<<<<<<<>if (auto& data_mutEAwac_> Nd>ifau484‚¾›a 6ey">els42i8œi="faÄo"code hl_variablesskeywS="linenlass=esskeytSIZ> , /21h0ï±fUvarlow">elsst clasa="linsnlassvarlow">elsst clasa="linsnlassvarlase hl_v2837dfnenlass="faeeâ/span w">if