Code::Blocks IDE

Projects
thomas
2005-12-12
2013-05-20
  • thomas
    thomas
    2005-12-12

    http://www.codeblocks.org

    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?

     
    • Lee Thomason
      Lee Thomason
      2005-12-15

      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.

      lee

       
    • thomas
      thomas
      2006-02-03

      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. :)