Code::Blocks uses TinyXML to store its complete configuration (including the storage of compound types such as wxArrayStrings or serialized maps of objects) and for reading/writing its project files.
TinyXML is the coolest non-Unicode XML library I have seen (integration time: 1 minute, learning time: 5 minutes, size: excellent, speed: excellent).
The only drawback is the missing wchar support, which gives our east Asian users a headache. Are there any plans to implement that any time soon, or do we have to find a workaround?
Actually, TinyXML supports Unicode just fine. (UTF-8). I've been hoping someone would write or find some open source simple StringUTF8/StringUTF16 conversion classes that could be used to wrap the inputs.
Windows has macros to do it of course but I haven't yet seen a cross platform solution.
It does, indeed :) It is running with no problems whatsoever for several weeks now.
There were only two issues with TinyXML and Unicode, and the first one was really my fault.
I kept wondering "what's it good for if it parses UTF-8 when our strings are wchar_t sized and TinyXML does not take these". But in fact, I ailed to see that a simple call to wxString::mb_str() would solve that issue. Took me a while (*blush*).
Another problem which we encountered was when some Czech and Russian people suddenly complained that saving configuration failed alltogether. What they had done was using a system path that contained non-Western Unicode characters.
The problem with this is that you pass the filename to TinyXML as UTF-8 which is fine so far. Windows, on the other hand, does not like UTF-8 filenames at all, so TinyXML fails to open the output file.
The workaround is easy: you stream the document into a string and write that string to a file manually (using a wide char filename), that works really well. What's nasty about that is just that it is not immediately obvious why everything fails. But well, that's Windows... :)
Again, many thanks, TinyXML is a great piece of software. :)