Ebenezer Enterprises

We host a code generator called the the C++ Middleware Writer (CMW). The CMW writes portable binary serialization code.

Using the C++ Middleware Writer
Comparing the serialization library in Boost to our approach
Send Sample   Receive Sample
Rbtree Sample

Supported Types and Platforms
Provide Feedback
Company Overview/Want help with your project?
Links

Recent Developments

February, 2014

Version 1.13 of the CMW is on line. This version takes advantage of move semantics. Here's an example of some generated code:


template <class R>
void Give (::cmw::ReceiveBuffer<R>& buf
       ,std::vector<std::deque<std::string> >& az1){
  int32_t count[2];
  count[0]=buf.template Give<uint32_t>();
  az1.reserve(az1.size()+count[0]);
  for(;count[0]>0;--count[0]){
    std::deque<std::string> rep2;
    count[1]=buf.template Give<uint32_t>();
    for(;count[1]>0;--count[1]){
      rep2.emplace_back(buf.GiveString());
    }
    az1.emplace_back(::std::move(rep2));
  }
}
December, 2011

Version 1.12 of the CMW released.

April, 2010

Version 1.11 of the CMW released.

November, 2009

Version 1.10 of the CMW released.

July, 2009

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.

March, 2008

Support for "unordered" containers 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.