From 5702970de9ec41f396431757a7a618dadc9fbc8b Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Sat, 2 Apr 2005 18:52:10 +0000 Subject: [PATCH] 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 --- Examples/test-suite/python/li_std_stream.i | 1 + Lib/std/std_char_traits.i | 8 +++++ Lib/std/std_iostream.i | 40 ++++++++++++++-------- Lib/std/std_sstream.i | 16 +++++++++ Lib/std/std_wiostream.i | 7 ++++ Lib/std/std_wsstream.i | 7 ++++ Lib/std/std_wstring.i | 7 ++-- 7 files changed, 67 insertions(+), 19 deletions(-) create mode 100644 Lib/std/std_wiostream.i create mode 100644 Lib/std/std_wsstream.i diff --git a/Examples/test-suite/python/li_std_stream.i b/Examples/test-suite/python/li_std_stream.i index 0a999ddbf..792f796cf 100644 --- a/Examples/test-suite/python/li_std_stream.i +++ b/Examples/test-suite/python/li_std_stream.i @@ -4,6 +4,7 @@ struct A; %} +%include %include %include diff --git a/Lib/std/std_char_traits.i b/Lib/std/std_char_traits.i index 920fee50b..b9b4def32 100644 --- a/Lib/std/std_char_traits.i +++ b/Lib/std/std_char_traits.i @@ -1,5 +1,7 @@ %include +#if defined(SWIG_WCHAR) %include +#endif namespace std { @@ -68,6 +70,7 @@ namespace std }; +#if defined(SWIG_WCHAR) template<> struct char_traits { @@ -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; +#if defined(SWIG_WCHAR) %template() char_traits; +#endif #else %template(char_traits_c) char_traits; +#if defined(SWIG_WCHAR) %template(char_traits_w) char_traits; #endif +#endif } diff --git a/Lib/std/std_iostream.i b/Lib/std/std_iostream.i index 65be41eb7..7a33afe39 100644 --- a/Lib/std/std_iostream.i +++ b/Lib/std/std_iostream.i @@ -1,7 +1,21 @@ +/* + For wchar support, you need to include the wchar.i file + before this file, ie: + + %include + %include + + or equivalently, just include + + %include +*/ + %include %include %include +#if defined(SWIG_WCHAR) %include +#endif %{ #include @@ -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 istream; typedef basic_iostream iostream; - typedef basic_ostream wostream; - typedef basic_istream wistream; - typedef basic_iostream wiostream; - extern istream cin; extern ostream cout; extern ostream cerr; extern ostream clog; +#if defined(SWIG_WCHAR) + typedef basic_ostream wostream; + typedef basic_istream wistream; + typedef basic_iostream wiostream; + extern wistream wcin; extern wostream wcout; extern wostream wcerr; extern wostream wclog; +#endif template > std::basic_ostream<_CharT, _Traits>& @@ -312,16 +322,18 @@ namespace std { %template(istream) basic_istream; %template(iostream) basic_iostream; - %template(wostream) basic_ostream; - %template(wistream) basic_istream; - %template(wiostream) basic_iostream; - %template(endl) endl >; %template(ends) ends >; %template(flush) flush >; +#if defined(SWIG_WCHAR) + %template(wostream) basic_ostream; + %template(wistream) basic_istream; + %template(wiostream) basic_iostream; + %template(wendl) endl >; %template(wends) ends >; %template(wflush) flush >; +#endif } diff --git a/Lib/std/std_sstream.i b/Lib/std/std_sstream.i index 8308db135..12bccef2e 100644 --- a/Lib/std/std_sstream.i +++ b/Lib/std/std_sstream.i @@ -1,8 +1,22 @@ +/* + For wchar support, you need to include the wchar.i file + before this file, ie: + + %include + %include + + or equivalently, just include + + %include +*/ + %include %include %include %include +#if defined(SWIG_WCHAR) %include +#endif %include %include @@ -173,7 +187,9 @@ namespace std { %template(stringstream) basic_stringstream; +#if defined(SWIG_WCHAR) %template(wistringstream) basic_istringstream; %template(wostringstream) basic_ostringstream; %template(wstringstream) basic_stringstream; +#endif } diff --git a/Lib/std/std_wiostream.i b/Lib/std/std_wiostream.i new file mode 100644 index 000000000..b9bef9037 --- /dev/null +++ b/Lib/std/std_wiostream.i @@ -0,0 +1,7 @@ +/* + Provide 'std_iostream.i' with wchar support. +*/ + +%include +%include + diff --git a/Lib/std/std_wsstream.i b/Lib/std/std_wsstream.i new file mode 100644 index 000000000..4c663fc45 --- /dev/null +++ b/Lib/std/std_wsstream.i @@ -0,0 +1,7 @@ +/* + Provide 'std_sstream.i' with wchar support. +*/ + +%include +%include + diff --git a/Lib/std/std_wstring.i b/Lib/std/std_wstring.i index f0284eb67..ff06aa8bf 100644 --- a/Lib/std/std_wstring.i +++ b/Lib/std/std_wstring.i @@ -1,12 +1,8 @@ -%{ -#include -%} - +%include %include /* wide strings */ - namespace std { %std_comp_methods(basic_string); @@ -14,3 +10,4 @@ namespace std } %template(wstring) std::basic_string; +