We offer free services aimed at helping those who are developing applications with C++.
Version 1.13 is on line. This version adds support for:
1. A lil_string class which throws an exception if an operation would result in a string more than 255 characters. This guarantees that the length of the string can be marshalled with one byte. Lil_string is used, for example, to hold account passwords.
2. Move semantics. A config file parameter, 'Permit-std::move', is used to indicate that the generated code may use std::move. The following shows an example of code generated when Permit-std::move is turned on.
template <typename B>
void
Receive(B* buf, vector<deque<lil_string> >& abt1)
{
uint32_t headCount[2];
buf->Give(headCount[0]);
abt1.reserve(abt1.size() + headCount[0]);
for (; headCount[0] > 0; --headCount[0]) {
deque<lil_string> rep4;
buf->Give(headCount[1]);
for (; headCount[1] > 0; --headCount[1]) {
lil_string rep5(buf);
rep4.push_back(std::move(rep5));
}
abt1.push_back(std::move(rep4));
}
}
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.
Support for stable_vector added. Here's a modified version of stable_vector.hpp that compiles with gcc version 4.3.2.
Support for Boost Array is available.
Support for the Boost Unordered Containers library is available. This includes unordered_set, unordered_multiset, unordered_map and unordered_multimap.
Support for message lengths is now available. Code that receives messages should call SetMsgLength() (ReceiveBuffer::SetMsgLength or ReceiveCompressedBuffer::SetMsgLength) prior to calling a Receive function. See the Receive Sample for an example of this. A clc++m thread titled "Preventing Denial of Service Attack in IPC Serialization" was instrumental in our decision to add this support.
Support for the Boost Range library's sub_range<> is available. The support for this type is unusual in that it is possible to send data via a sub_range but not receive data into one. There's more info here about how we support this type.
Support for message IDs is now available.
This Middle code:
msgs (list<int32_t>) @msg_id_a1 }
Added a Resize function to the Buffer class.
Fixed an overflow problem in Buffer's Receive function and made a few minor changes to the class.
Worked on improvements to the Middleware Service documentation including expanding the "Advantages" section and adding a section called "Dealing with Stragglers" that discusses supporting multiple versions of a product simultaneosly.
Added valarray<> support,
changed/improved the code generated when
receiving vectors of POD,
changed/improved the code in Send functions after
noting only a single int is needed to keep track
of the counts/sizes of container classes. We still
use an array of ints in Receive functions.