allow to use iostream and sstream without wchar support, as pointed by Scott
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7137 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
cc8cb39465
commit
5702970de9
7 changed files with 67 additions and 19 deletions
|
|
@ -4,6 +4,7 @@
|
|||
struct A;
|
||||
%}
|
||||
|
||||
%include <wchar.i>
|
||||
%include <std_iostream.i>
|
||||
%include <std_sstream.i>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
%include <std_common.i>
|
||||
#if defined(SWIG_WCHAR)
|
||||
%include <wchar.i>
|
||||
#endif
|
||||
|
||||
namespace std
|
||||
{
|
||||
|
|
@ -68,6 +70,7 @@ namespace std
|
|||
};
|
||||
|
||||
|
||||
#if defined(SWIG_WCHAR)
|
||||
template<>
|
||||
struct char_traits<wchar_t>
|
||||
{
|
||||
|
|
@ -119,14 +122,19 @@ namespace std
|
|||
static int_type
|
||||
not_eof(const int_type& __c);
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
namespace std {
|
||||
#ifndef SWIG_STL_WRAP_TRAITS
|
||||
%template() char_traits<char>;
|
||||
#if defined(SWIG_WCHAR)
|
||||
%template() char_traits<wchar_t>;
|
||||
#endif
|
||||
#else
|
||||
%template(char_traits_c) char_traits<char>;
|
||||
#if defined(SWIG_WCHAR)
|
||||
%template(char_traits_w) char_traits<wchar_t>;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,21 @@
|
|||
/*
|
||||
For wchar support, you need to include the wchar.i file
|
||||
before this file, ie:
|
||||
|
||||
%include <wchar.i>
|
||||
%include <std_iostream.i>
|
||||
|
||||
or equivalently, just include
|
||||
|
||||
%include <std_wiostream.i>
|
||||
*/
|
||||
|
||||
%include <std_ios.i>
|
||||
%include <std_basic_string.i>
|
||||
%include <std_string.i>
|
||||
#if defined(SWIG_WCHAR)
|
||||
%include <std_wstring.i>
|
||||
#endif
|
||||
|
||||
%{
|
||||
#include <iostream>
|
||||
|
|
@ -46,16 +60,12 @@ namespace std
|
|||
|
||||
basic_ostream<_CharT, _Traits>&
|
||||
operator<<(long __n);
|
||||
|
||||
|
||||
|
||||
basic_ostream<_CharT, _Traits>&
|
||||
operator<<(unsigned long __n);
|
||||
|
||||
|
||||
basic_ostream<_CharT, _Traits>&
|
||||
operator<<(bool __n);
|
||||
|
||||
|
||||
basic_ostream<_CharT, _Traits>&
|
||||
operator<<(short __n);
|
||||
|
|
@ -63,11 +73,9 @@ namespace std
|
|||
basic_ostream<_CharT, _Traits>&
|
||||
operator<<(unsigned short __n);
|
||||
|
||||
|
||||
basic_ostream<_CharT, _Traits>&
|
||||
operator<<(int __n);
|
||||
|
||||
|
||||
basic_ostream<_CharT, _Traits>&
|
||||
operator<<(unsigned int __n);
|
||||
|
||||
|
|
@ -280,19 +288,21 @@ namespace std
|
|||
typedef basic_istream<char> istream;
|
||||
typedef basic_iostream<char> iostream;
|
||||
|
||||
typedef basic_ostream<wchar_t> wostream;
|
||||
typedef basic_istream<wchar_t> wistream;
|
||||
typedef basic_iostream<wchar_t> wiostream;
|
||||
|
||||
extern istream cin;
|
||||
extern ostream cout;
|
||||
extern ostream cerr;
|
||||
extern ostream clog;
|
||||
|
||||
#if defined(SWIG_WCHAR)
|
||||
typedef basic_ostream<wchar_t> wostream;
|
||||
typedef basic_istream<wchar_t> wistream;
|
||||
typedef basic_iostream<wchar_t> wiostream;
|
||||
|
||||
extern wistream wcin;
|
||||
extern wostream wcout;
|
||||
extern wostream wcerr;
|
||||
extern wostream wclog;
|
||||
#endif
|
||||
|
||||
template<typename _CharT, typename _Traits = char_traits<_CharT> >
|
||||
std::basic_ostream<_CharT, _Traits>&
|
||||
|
|
@ -312,16 +322,18 @@ namespace std {
|
|||
%template(istream) basic_istream<char>;
|
||||
%template(iostream) basic_iostream<char>;
|
||||
|
||||
%template(wostream) basic_ostream<wchar_t>;
|
||||
%template(wistream) basic_istream<wchar_t>;
|
||||
%template(wiostream) basic_iostream<wchar_t>;
|
||||
|
||||
%template(endl) endl<char, std::char_traits<char> >;
|
||||
%template(ends) ends<char, std::char_traits<char> >;
|
||||
%template(flush) flush<char, std::char_traits<char> >;
|
||||
|
||||
#if defined(SWIG_WCHAR)
|
||||
%template(wostream) basic_ostream<wchar_t>;
|
||||
%template(wistream) basic_istream<wchar_t>;
|
||||
%template(wiostream) basic_iostream<wchar_t>;
|
||||
|
||||
%template(wendl) endl<wchar_t, std::char_traits<wchar_t> >;
|
||||
%template(wends) ends<wchar_t, std::char_traits<wchar_t> >;
|
||||
%template(wflush) flush<wchar_t, std::char_traits<wchar_t> >;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,22 @@
|
|||
/*
|
||||
For wchar support, you need to include the wchar.i file
|
||||
before this file, ie:
|
||||
|
||||
%include <wchar.i>
|
||||
%include <std_sstream.i>
|
||||
|
||||
or equivalently, just include
|
||||
|
||||
%include <std_wsstream.i>
|
||||
*/
|
||||
|
||||
%include <std_alloc.i>
|
||||
%include <std_basic_string.i>
|
||||
%include <std_string.i>
|
||||
%include <std_ios.i>
|
||||
#if defined(SWIG_WCHAR)
|
||||
%include <std_wstring.i>
|
||||
#endif
|
||||
%include <std_streambuf.i>
|
||||
%include <std_iostream.i>
|
||||
|
||||
|
|
@ -173,7 +187,9 @@ namespace std {
|
|||
%template(stringstream) basic_stringstream<char>;
|
||||
|
||||
|
||||
#if defined(SWIG_WCHAR)
|
||||
%template(wistringstream) basic_istringstream<wchar_t>;
|
||||
%template(wostringstream) basic_ostringstream<wchar_t>;
|
||||
%template(wstringstream) basic_stringstream<wchar_t>;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
7
Lib/std/std_wiostream.i
Normal file
7
Lib/std/std_wiostream.i
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
/*
|
||||
Provide 'std_iostream.i' with wchar support.
|
||||
*/
|
||||
|
||||
%include <wchar.i>
|
||||
%include <std_iostream.i>
|
||||
|
||||
7
Lib/std/std_wsstream.i
Normal file
7
Lib/std/std_wsstream.i
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
/*
|
||||
Provide 'std_sstream.i' with wchar support.
|
||||
*/
|
||||
|
||||
%include <wchar.i>
|
||||
%include <std_sstream.i>
|
||||
|
||||
|
|
@ -1,12 +1,8 @@
|
|||
%{
|
||||
#include <cwchar>
|
||||
%}
|
||||
|
||||
%include <wchar.i>
|
||||
%include <std/std_basic_string.i>
|
||||
|
||||
/* wide strings */
|
||||
|
||||
|
||||
namespace std
|
||||
{
|
||||
%std_comp_methods(basic_string<wchar_t>);
|
||||
|
|
@ -14,3 +10,4 @@ namespace std
|
|||
}
|
||||
|
||||
%template(wstring) std::basic_string<wchar_t>;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue