Fixed bug in uma::bson::Document::DocumentImpl::update where elements were duplicated when the default index of -1 was specified.
Added uma::bson::ODMObject base class for a more elegant ODM than the interface exposed by the base uma::bson::Object class.
Added src/test/sample/odm directory with ODMObject based ODM sample classes and test.
Bug fixes to Document::hasNestedElement
Bug fix to Document::set method that lead to duplicate entries
Added Document::create method to create an empty element of specified type. Use to avoid copy-construction of value (useful mostly when building up a string value in stages).
Provide default implementation of Object::setValue using the reference to value returned by Object::getValue
Fixed bug in Document::remove and made it return copy instead of reference
Updated Array::remove to return copy instead of reference
Added ObjectId::setBytes method
Added uma::bson::Object abstract class to represent BSON data of type object. uma::bson::Document extend uma::bson::Object.
A very rudimentary ODM (object-document mapping) capability now exists for classes that inherit from uma::bson::Object and implement the pure virtual call back methods. Client applications can model data using the uma::bson::Value instances as fields and inheriting from uma::bson::Object.
Array operator ([]) implementation for uma::bson::Document and uma::bson::Array now work more like standard containers. You can use them to create an assign new elements. Note that the constant versions still do not support automatically creating elements.
Unit test suite has been expanded to cover the rudimentary ODM. See the test files under src/test/sample/value.
Added Document::isEquivalentTo method to compare two documents for equivalence. Two documents are considered equivalent if they have equivalent elements without regard to element ordering within the document (in contrast to equality check which requires same element ordering).
Fixed bug in BinaryData::getSize implementation where it was not reporting the 5 extras bytes (4 for the length of the binary data, and 1 for the binary data type) included in the BSON representation.
Refactored BinaryData to use a PIMPL to allow for efficient pass-by-value semantics.
Built from ground up on Windows 7 MSVC 2010 32 bit platform. The primary purpose of this rewrite was to ensure full compatibility with 32 bit builds on Windows.
Document and Array return references to stored elements rather than shared pointer to element.
Document and Array now throw exceptions if an attempt is made to retrieve an element that does not exist.
Document and Array allow access to a constant iterator to the elements stored.
All the element value types now inherit from the base Value class.
Operator == and != have been added to all classes in the API
Added Document::clone method to fully clone a document without using any shared data.
Added Array::clone method to fully clone an array without using any shared data.
Unit tests use bsondump even on Windows to perform verification of BSON generated by API.
Minor refactoring and code cleanup
Inlined a few methods.
Sources downgraded from C++11 to C++98.
Added support for Windows 7 64 bit builds (32 bit builds crash)