<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
On 25.11.2010 23:56, Michael Spencer wrote:
<blockquote cite="mid:F5CF1BE7-4B13-43E7-9354-406CCF7DAE22@gmail.com"
 type="cite">
  <div><span class="Apple-style-span" style="">On Nov 25, 2010, at 5:01
PM, Jochen Wilhelmy <<a moz-do-not-send="true"
 href="mailto:j.wilhelmy@arcor.de">j.wilhelmy@arcor.de</a>> wrote:</span><br>
  </div>
  <div><br>
  </div>
  <blockquote type="cite">
    <div><span>Hi!</span><br>
    <span></span><br>
    <span>Of course nobody wants to implement unicode support for
windows</span><br>
    <span>because windows should support an utf8-locale and windows is
obsolete</span><br>
    <span>anyway ;-)</span><br>
    <span></span><br>
    <span>But there is a simple solution: use boost::filesystem::path
everywhere you</span><br>
    <span>use file names and paths, for example in
clang::FileManager::getFile.</span><br>
    <span>With version 3 opening a file is easy: std::fstream
file(path.c_str()).</span><br>
    <span>Internally boost::filesystem::path uses the native encoding
which is</span><br>
    <span>utf16 for windows but you won't notice it since it recodes 8
bit strings</span><br>
    <span>automatically (which is no-op on unix and macos).</span><br>
    <span></span><br>
    <span>If you don't want to become dependent on boost, I suggest
reimplementing</span><br>
    <span>the most important features always using 8 bit strings and
then have </span><br>
    <span>something</span><br>
    <span>like this:</span><br>
    <span></span><br>
    <span>#ifdef HAVE_BOOST</span><br>
    <span>namespace fs = boost::filesystem;</span><br>
    <span>#else</span><br>
    <span>// simple implementation here</span><br>
    <span>#endif</span><br>
    <span></span><br>
    <span>-Jochen</span><font class="Apple-style-span" color="#000000"><font
 class="Apple-style-span" color="#0023a3"><br>
    </font></font></div>
  </blockquote>
  <br>
  <div>This happens to be very close to the code I'm working on now (I
assume this post was prompted by my patches). I'll be adding unicode
support to the Windows implementation, however, paths will remain utf-8
encoded outside of System.</div>
</blockquote>
<br>
No, this post was prompted since I switched to boost::filesystem
version 3 in my own code and llvm/clang 2.8<br>
was the only lib with no unicode support on windows.<br>
Will your code be api compatible to boost::filesystem? The reason for
this is that maybe boost::filesystem<br>
will become part of the standard and it is possible to imbue() a locale
on boost::filesystem.<br>
While this feature is not needed on unix/macos it gives you global
control whether you want to use ansi or <br>
unicode on windows.<br>
If you implement your own code with always utf-8 this may break
compatibility with windows ansi<br>
encoding if you don't take care and why reinvent the wheel? maybe you
could even copy/paste the<br>
boost implementation and use the <span>#ifdef HAVE_BOOST approach.<br>
<br>
</span>-Jochen<br>
<br>
</body>
</html>