We host a free code generator called the the C++ Middleware Writer (CMW). The CMW writes efficient, portable, binary serialization/marshalling code.
Using the C++ Middleware Writer in your build environmentVersion 1.13 of the CMW is on line. This version adds support for move semantics. The following shows an example of generated code that uses std::move.
template <class R>
void
Receive (::cmw::ReceiveBufferTCP<R>& buf
, std::vector<std::deque<std::string> >& az1
)
{
uint32_t headCount[2];
headCount[0] = buf.Give<uint32_t>();
az1.reserve(az1.size() + headCount[0]);
for (; headCount[0] > 0; --headCount[0]) {
std::deque<std::string> rep2;
headCount[1] = buf.Give<uint32_t>();
for (; headCount[1] > 0; --headCount[1]) {
rep2.push_back(buf.stringGive());
}
az1.push_back(::std::move(rep2));
}
}
Version 1.12 of the C++ Middleware Writer released.
Version 1.11 of the C++ Middleware Writer released.
Version 1.10 of the C++ Middleware Writer released.
Exclusive support for boost::intrusive::list and boost::intrusive::rbtree is available. Neither Boost Intrusive nor the serialization library in Boost offers serialization support for these containers.
Support for the Boost Unordered Containers library is available. This includes unordered_set, unordered_multiset, unordered_map and unordered_multimap.
Support for the Boost Range library's sub_range<> is available. Support for this type is unusual in that it is possible to marshal data based on a sub_range but not receive data into one. All messages that use sub_range need to use the @out option; not doing so will cause the code generation to fail.
Support for message IDs is now available.
This Middle code:
msgs @msg_id_a1 @out (list<int32_t>) }