mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-19 05:53:35 +00:00
add support for changing encoding on idocstream
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_6_X@27907 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
d68a7867a4
commit
c087c43dd7
@ -383,6 +383,28 @@ odocstream & operator<<(odocstream & os, SetEnc e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//CHECKME: I just copied the code above, and have no idea whether it
|
||||||
|
//is correct... (JMarc)
|
||||||
|
idocstream & operator<<(idocstream & is, SetEnc e)
|
||||||
|
{
|
||||||
|
if (has_facet<iconv_codecvt_facet>(is.rdbuf()->getloc())) {
|
||||||
|
// This stream must be a file stream, since we never imbue
|
||||||
|
// any other stream with a locale having a iconv_codecvt_facet.
|
||||||
|
// Flush the stream so that all pending output is written
|
||||||
|
// with the old encoding.
|
||||||
|
//is.flush();
|
||||||
|
locale locale(is.rdbuf()->getloc(),
|
||||||
|
new iconv_codecvt_facet(e.encoding, ios_base::in));
|
||||||
|
// FIXME Does changing the codecvt facet of an open file
|
||||||
|
// stream always work? It does with gcc 4.1, but I have read
|
||||||
|
// somewhere that it does not with MSVC.
|
||||||
|
// What does the standard say?
|
||||||
|
is.imbue(locale);
|
||||||
|
}
|
||||||
|
return is;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#if ! defined(USE_WCHAR_T)
|
#if ! defined(USE_WCHAR_T)
|
||||||
odocstream & operator<<(odocstream & os, char c)
|
odocstream & operator<<(odocstream & os, char c)
|
||||||
{
|
{
|
||||||
|
@ -90,6 +90,7 @@ SetEnc setEncoding(std::string const & encoding);
|
|||||||
\endcode
|
\endcode
|
||||||
*/
|
*/
|
||||||
odocstream & operator<<(odocstream & os, SetEnc e);
|
odocstream & operator<<(odocstream & os, SetEnc e);
|
||||||
|
idocstream & operator<<(idocstream & os, SetEnc e);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user