rtbkit/rtbkit — pull request #164 by oktal (2014-03-25 15:44:52+00:00)
Title: Unicode Everywhere

Alright so this Pull Request brings a lot of commits but here is the main feature: Unicode

This branch has been lying around for a long time now and is in its final state. Since it's an old branch, it's pretty messy. To help you out, the relevant commits are:

* [248f88](https://github.com/datacratic/rtbkit/commit/248f8890bf594edbf8a18167bc28da9a7629e553)
* [cda289](https://github.com/datacratic/rtbkit/commit/cda289031e3e8ca4dcb8fa1ac56781bcfd3233c8)
* [147f65](https://github.com/datacratic/rtbkit/commit/147f65dbd5598264256ec73c98a4d2c4e1f11ba9)
* [950b55](https://github.com/datacratic/rtbkit/commit/950b55bca360e185d26ec81583a746683c7cf636)

The first commit introduces a new Utf32String class, which encodes an Unicode String in UTF32 ;
The second one introduces an UtfString typedef that can either be typedef'd to Utf8String or Utf32String and replaces everywhere in the code the usage of Utf8String by UtfString ;
The third one replaces std::string fields in BidRequest classes (OpenRTB and RTBKit internal BidRequest) by UtfString.
Finally, the last one renames UtfString by a more precise UnicodeString class. Also note that this commit fixes a huge mess in our header where we use using directives and declarations, which is a bad idea because it can then pollute other files. Also, since ICU already has an UnicodeString class, I ran in a situation where it was ambiguous wether the compiler should use ICU version or our typedef. I then decided to use the fully qualified name, prefixed by the namespace and took advantage of the situation to fix all the other headers where he had the same problem (i.e we were abusing the using namespace facility)