Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

339 lines
8.6 KiB

  1. /*
  2. For wchar support, you need to include the wchar.i file
  3. before this file, ie:
  4. %include <wchar.i>
  5. %include <std_iostream.i>
  6. or equivalently, just include
  7. %include <std_wiostream.i>
  8. */
  9. %include <std_ios.i>
  10. %include <std_basic_string.i>
  11. %include <std_string.i>
  12. #if defined(SWIG_WCHAR)
  13. %include <std_wstring.i>
  14. #endif
  15. %{
  16. #include <iostream>
  17. %}
  18. namespace std
  19. {
  20. // 27.6.2.1 Template class basic_ostream
  21. template<typename _CharT, typename _Traits = char_traits<_CharT> >
  22. class basic_ostream : virtual public basic_ios<_CharT, _Traits>
  23. {
  24. public:
  25. // Types (inherited from basic_ios (27.4.4)):
  26. typedef _CharT char_type;
  27. typedef typename _Traits::int_type int_type;
  28. typedef typename _Traits::pos_type pos_type;
  29. typedef typename _Traits::off_type off_type;
  30. typedef _Traits traits_type;
  31. // 27.6.2.2 Constructor/destructor:
  32. explicit
  33. basic_ostream(basic_streambuf<_CharT, _Traits>* __sb);
  34. virtual
  35. ~basic_ostream();
  36. // 27.6.2.5 Formatted output:
  37. // 27.6.2.5.3 basic_ostream::operator<<
  38. basic_ostream<_CharT, _Traits>&
  39. operator<<(basic_ostream<_CharT, _Traits>& (*__pf)(basic_ostream<_CharT, _Traits>&));
  40. basic_ostream<_CharT, _Traits>&
  41. operator<<(basic_ios<_CharT, _Traits>& (*__pf)(basic_ios<_CharT, _Traits>&));
  42. basic_ostream<_CharT, _Traits>&
  43. operator<<(ios_base& (*__pf) (ios_base&));
  44. // 27.6.2.5.2 Arithmetic Inserters
  45. basic_ostream<_CharT, _Traits>&
  46. operator<<(long __n);
  47. basic_ostream<_CharT, _Traits>&
  48. operator<<(unsigned long __n);
  49. basic_ostream<_CharT, _Traits>&
  50. operator<<(bool __n);
  51. basic_ostream<_CharT, _Traits>&
  52. operator<<(short __n);
  53. basic_ostream<_CharT, _Traits>&
  54. operator<<(unsigned short __n);
  55. basic_ostream<_CharT, _Traits>&
  56. operator<<(int __n);
  57. basic_ostream<_CharT, _Traits>&
  58. operator<<(unsigned int __n);
  59. basic_ostream<_CharT, _Traits>&
  60. operator<<(long long __n);
  61. basic_ostream<_CharT, _Traits>&
  62. operator<<(unsigned long long __n);
  63. basic_ostream<_CharT, _Traits>&
  64. operator<<(double __f);
  65. basic_ostream<_CharT, _Traits>&
  66. operator<<(float __f);
  67. basic_ostream<_CharT, _Traits>&
  68. operator<<(long double __f);
  69. basic_ostream<_CharT, _Traits>&
  70. operator<<(const void* __p);
  71. basic_ostream<_CharT, _Traits>&
  72. operator<<(basic_streambuf<_CharT, _Traits>* __sb);
  73. %extend {
  74. std::basic_ostream<_CharT, _Traits >&
  75. operator<<(const std::basic_string<_CharT,_Traits, std::allocator<_CharT> >& s)
  76. {
  77. *self << s;
  78. return *self;
  79. }
  80. }
  81. // Unformatted output:
  82. basic_ostream<_CharT, _Traits>&
  83. put(char_type __c);
  84. basic_ostream<_CharT, _Traits>&
  85. write(const char_type* __s, streamsize __n);
  86. basic_ostream<_CharT, _Traits>&
  87. flush();
  88. // Seeks:
  89. pos_type
  90. tellp();
  91. basic_ostream<_CharT, _Traits>&
  92. seekp(pos_type);
  93. basic_ostream<_CharT, _Traits>&
  94. seekp(off_type, ios_base::seekdir);
  95. };
  96. // 27.6.1.1 Template class basic_istream
  97. template<typename _CharT, typename _Traits = char_traits<_CharT> >
  98. class basic_istream : virtual public basic_ios<_CharT, _Traits>
  99. {
  100. public:
  101. // Types (inherited from basic_ios (27.4.4)):
  102. typedef _CharT char_type;
  103. typedef typename _Traits::int_type int_type;
  104. typedef typename _Traits::pos_type pos_type;
  105. typedef typename _Traits::off_type off_type;
  106. typedef _Traits traits_type;
  107. public:
  108. // 27.6.1.1.1 Constructor/destructor:
  109. explicit
  110. basic_istream(basic_streambuf<_CharT, _Traits>* __sb);
  111. virtual
  112. ~basic_istream();
  113. // 27.6.1.2.3 basic_istream::operator>>
  114. basic_istream<_CharT, _Traits>&
  115. operator>>(basic_istream<_CharT, _Traits>& (*__pf)(basic_istream<_CharT, _Traits>&));
  116. basic_istream<_CharT, _Traits>&
  117. operator>>(basic_ios<_CharT, _Traits>& (*__pf)(basic_ios<_CharT, _Traits>&));
  118. basic_istream<_CharT, _Traits>&
  119. operator>>(ios_base& (*__pf)(ios_base&));
  120. // 27.6.1.2.2 Arithmetic Extractors
  121. basic_istream<_CharT, _Traits>&
  122. operator>>(bool& __n);
  123. basic_istream<_CharT, _Traits>&
  124. operator>>(short& __n);
  125. basic_istream<_CharT, _Traits>&
  126. operator>>(unsigned short& __n);
  127. basic_istream<_CharT, _Traits>&
  128. operator>>(int& __n);
  129. basic_istream<_CharT, _Traits>&
  130. operator>>(unsigned int& __n);
  131. basic_istream<_CharT, _Traits>&
  132. operator>>(long& __n);
  133. basic_istream<_CharT, _Traits>&
  134. operator>>(unsigned long& __n);
  135. basic_istream<_CharT, _Traits>&
  136. operator>>(long long& __n);
  137. basic_istream<_CharT, _Traits>&
  138. operator>>(unsigned long long& __n);
  139. basic_istream<_CharT, _Traits>&
  140. operator>>(float& __f);
  141. basic_istream<_CharT, _Traits>&
  142. operator>>(double& __f);
  143. basic_istream<_CharT, _Traits>&
  144. operator>>(long double& __f);
  145. basic_istream<_CharT, _Traits>&
  146. operator>>(void*& __p);
  147. basic_istream<_CharT, _Traits>&
  148. operator>>(basic_streambuf<_CharT, _Traits>* __sb);
  149. // 27.6.1.3 Unformatted input:
  150. inline streamsize
  151. gcount(void) const;
  152. int_type
  153. get(void);
  154. basic_istream<_CharT, _Traits>&
  155. get(char_type& __c);
  156. basic_istream<_CharT, _Traits>&
  157. get(char_type* __s, streamsize __n, char_type __delim);
  158. inline basic_istream<_CharT, _Traits>&
  159. get(char_type* __s, streamsize __n);
  160. basic_istream<_CharT, _Traits>&
  161. get(basic_streambuf<_CharT, _Traits>& __sb, char_type __delim);
  162. inline basic_istream<_CharT, _Traits>&
  163. get(basic_streambuf<_CharT, _Traits>& __sb);
  164. basic_istream<_CharT, _Traits>&
  165. getline(char_type* __s, streamsize __n, char_type __delim);
  166. inline basic_istream<_CharT, _Traits>&
  167. getline(char_type* __s, streamsize __n);
  168. basic_istream<_CharT, _Traits>&
  169. ignore(streamsize __n = 1, int_type __delim = _Traits::eof());
  170. int_type
  171. peek(void);
  172. basic_istream<_CharT, _Traits>&
  173. read(char_type* __s, streamsize __n);
  174. streamsize
  175. readsome(char_type* __s, streamsize __n);
  176. basic_istream<_CharT, _Traits>&
  177. putback(char_type __c);
  178. basic_istream<_CharT, _Traits>&
  179. unget(void);
  180. int
  181. sync(void);
  182. pos_type
  183. tellg(void);
  184. basic_istream<_CharT, _Traits>&
  185. seekg(pos_type);
  186. basic_istream<_CharT, _Traits>&
  187. seekg(off_type, ios_base::seekdir);
  188. };
  189. // 27.6.1.5 Template class basic_iostream
  190. template<typename _CharT, typename _Traits = char_traits<_CharT> >
  191. class basic_iostream
  192. : public basic_istream<_CharT, _Traits>,
  193. public basic_ostream<_CharT, _Traits>
  194. {
  195. public:
  196. typedef _CharT char_type;
  197. typedef typename _Traits::int_type int_type;
  198. typedef typename _Traits::pos_type pos_type;
  199. typedef typename _Traits::off_type off_type;
  200. typedef _Traits traits_type;
  201. explicit
  202. basic_iostream(basic_streambuf<_CharT, _Traits>* __sb);
  203. virtual
  204. ~basic_iostream();
  205. };
  206. typedef basic_ostream<char> ostream ;
  207. typedef basic_istream<char> istream;
  208. typedef basic_iostream<char> iostream;
  209. extern istream cin;
  210. extern ostream cout;
  211. extern ostream cerr;
  212. extern ostream clog;
  213. #if defined(SWIG_WCHAR)
  214. typedef basic_ostream<wchar_t> wostream;
  215. typedef basic_istream<wchar_t> wistream;
  216. typedef basic_iostream<wchar_t> wiostream;
  217. extern wistream wcin;
  218. extern wostream wcout;
  219. extern wostream wcerr;
  220. extern wostream wclog;
  221. #endif
  222. template<typename _CharT, typename _Traits = char_traits<_CharT> >
  223. std::basic_ostream<_CharT, _Traits>&
  224. endl(std::basic_ostream<_CharT, _Traits>&);
  225. template<typename _CharT, typename _Traits = char_traits<_CharT> >
  226. std::basic_ostream<_CharT, _Traits>&
  227. ends(std::basic_ostream<_CharT, _Traits>&);
  228. template<typename _CharT, typename _Traits = char_traits<_CharT> >
  229. std::basic_ostream<_CharT, _Traits>&
  230. flush(std::basic_ostream<_CharT, _Traits>&);
  231. }
  232. namespace std {
  233. %template(ostream) basic_ostream<char>;
  234. %template(istream) basic_istream<char>;
  235. %template(iostream) basic_iostream<char>;
  236. %template(endl) endl<char, std::char_traits<char> >;
  237. %template(ends) ends<char, std::char_traits<char> >;
  238. %template(flush) flush<char, std::char_traits<char> >;
  239. #if defined(SWIG_WCHAR)
  240. %template(wostream) basic_ostream<wchar_t>;
  241. %template(wistream) basic_istream<wchar_t>;
  242. %template(wiostream) basic_iostream<wchar_t>;
  243. %template(wendl) endl<wchar_t, std::char_traits<wchar_t> >;
  244. %template(wends) ends<wchar_t, std::char_traits<wchar_t> >;
  245. %template(wflush) flush<wchar_t, std::char_traits<wchar_t> >;
  246. #endif
  247. }