1.1 --- a/epoc32/include/stdapis/stlport/stl/_stream_iterator.h Tue Mar 16 16:12:26 2010 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,343 +0,0 @@
1.4 -/*
1.5 - *
1.6 - * Copyright (c) 1994
1.7 - * Hewlett-Packard Company
1.8 - *
1.9 - * Copyright (c) 1996-1998
1.10 - * Silicon Graphics Computer Systems, Inc.
1.11 - *
1.12 - * Copyright (c) 1997
1.13 - * Moscow Center for SPARC Technology
1.14 - *
1.15 - * Copyright (c) 1999
1.16 - * Boris Fomitchev
1.17 - *
1.18 - * This material is provided "as is", with absolutely no warranty expressed
1.19 - * or implied. Any use is at your own risk.
1.20 - *
1.21 - * Permission to use or copy this software for any purpose is hereby granted
1.22 - * without fee, provided the above notices are retained on all copies.
1.23 - * Permission to modify the code and to distribute modified code is granted,
1.24 - * provided the above notices are retained, and a notice that the code was
1.25 - * modified is included with the above copyright notice.
1.26 - *
1.27 - */
1.28 -
1.29 -/* NOTE: This is an internal header file, included by other STL headers.
1.30 - * You should not attempt to use it directly.
1.31 - */
1.32 -
1.33 -#if !defined (_STLP_INTERNAL_STREAM_ITERATOR_H) && ! defined (_STLP_USE_NO_IOSTREAMS)
1.34 -#define _STLP_INTERNAL_STREAM_ITERATOR_H
1.35 -
1.36 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
1.37 -# include <stl/_iterator_base.h>
1.38 -#endif
1.39 -
1.40 -// streambuf_iterators predeclarations must appear first
1.41 -#ifndef _STLP_IOSFWD
1.42 -# include <iosfwd>
1.43 -#endif
1.44 -
1.45 -#ifndef _STLP_INTERNAL_ALGOBASE_H
1.46 -#include <stl/_algobase.h>
1.47 -#endif
1.48 -
1.49 -#if defined (_STLP_OWN_IOSTREAMS)
1.50 -
1.51 -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
1.52 -# include <stl/_ostreambuf_iterator.h>
1.53 -#endif
1.54 -
1.55 -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
1.56 -# include <stl/_istreambuf_iterator.h>
1.57 -#endif
1.58 -
1.59 -#ifndef _STLP_INTERNAL_ISTREAM_H
1.60 -# include <stl/_istream.h>
1.61 -#endif
1.62 -#endif /* _STLP_OWN_IOSTREAMS */
1.63 -
1.64 -// istream_iterator and ostream_iterator look very different if we're
1.65 -// using new, templatized iostreams than if we're using the old cfront
1.66 -// version.
1.67 -
1.68 -# if defined (_STLP_USE_NEW_IOSTREAMS)
1.69 -
1.70 -_STLP_BEGIN_NAMESPACE
1.71 -
1.72 -# ifndef _STLP_LIMITED_DEFAULT_TEMPLATES
1.73 -template <class _Tp,
1.74 - class _CharT = _STLP_DEFAULTCHAR, class _Traits = char_traits<_CharT>,
1.75 - class _Dist = ptrdiff_t>
1.76 -# define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _CharT, class _Traits, class _Dist
1.77 -# define __ISI_TMPL_ARGUMENTS _Tp, _CharT, _Traits, _Dist
1.78 -class istream_iterator : public iterator<input_iterator_tag, _Tp , _Dist,
1.79 - const _Tp*, const _Tp& > {
1.80 -# else
1.81 -
1.82 -# if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
1.83 -# define __ISI_TMPL_HEADER_ARGUMENTS class _Tp
1.84 -# define __ISI_TMPL_ARGUMENTS _Tp
1.85 -template <class _Tp>
1.86 -class istream_iterator : public iterator<input_iterator_tag, _Tp , ptrdiff_t,
1.87 - const _Tp*, const _Tp& > {
1.88 -# else
1.89 -# define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _Dist
1.90 -# define __ISI_TMPL_ARGUMENTS _Tp, _Dist
1.91 -template <class _Tp,__DFL_TYPE_PARAM(_Dist, ptrdiff_t)>
1.92 -class istream_iterator : public iterator<input_iterator_tag, _Tp, _Dist ,
1.93 - const _Tp*, const _Tp& > {
1.94 -# endif /* _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS */
1.95 -
1.96 -# endif /* _STLP_LIMITED_DEFAULT_TEMPLATES */
1.97 -
1.98 -# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
1.99 - typedef char _CharT;
1.100 - typedef char_traits<char> _Traits;
1.101 -# if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
1.102 - typedef ptrdiff_t _Dist;
1.103 -# endif
1.104 -# endif
1.105 -
1.106 - typedef istream_iterator< __ISI_TMPL_ARGUMENTS > _Self;
1.107 -public:
1.108 - typedef _CharT char_type;
1.109 - typedef _Traits traits_type;
1.110 - typedef basic_istream<_CharT, _Traits> istream_type;
1.111 -
1.112 - typedef input_iterator_tag iterator_category;
1.113 - typedef _Tp value_type;
1.114 - typedef _Dist difference_type;
1.115 - typedef const _Tp* pointer;
1.116 - typedef const _Tp& reference;
1.117 -
1.118 - istream_iterator() : _M_stream(0), _M_ok(false) {}
1.119 - istream_iterator(istream_type& __s) : _M_stream(&__s) { _M_read(); }
1.120 -
1.121 - reference operator*() const { return _M_value; }
1.122 -
1.123 - _STLP_DEFINE_ARROW_OPERATOR
1.124 -
1.125 - _Self& operator++() {
1.126 - _M_read();
1.127 - return *this;
1.128 - }
1.129 - _Self operator++(int) {
1.130 - _Self __tmp = *this;
1.131 - _M_read();
1.132 - return __tmp;
1.133 - }
1.134 -
1.135 - bool _M_equal(const _Self& __x) const
1.136 - { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); }
1.137 -
1.138 -private:
1.139 - istream_type* _M_stream;
1.140 - _Tp _M_value;
1.141 - bool _M_ok;
1.142 -
1.143 - void _M_read() {
1.144 - _M_ok = (_M_stream && *_M_stream) ? true : false;
1.145 - if (_M_ok) {
1.146 - *_M_stream >> _M_value;
1.147 - _M_ok = *_M_stream ? true : false;
1.148 - }
1.149 - }
1.150 -};
1.151 -
1.152 -#ifndef _STLP_LIMITED_DEFAULT_TEMPLATES
1.153 -template <class _TpP,
1.154 - class _CharT = _STLP_DEFAULTCHAR, class _Traits = char_traits<_CharT> >
1.155 -#else
1.156 -template <class _TpP>
1.157 -#endif
1.158 -class ostream_iterator: public iterator<output_iterator_tag, void, void, void, void> {
1.159 -# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
1.160 - typedef char _CharT;
1.161 - typedef char_traits<char> _Traits;
1.162 - typedef ostream_iterator<_TpP> _Self;
1.163 -# else
1.164 - typedef ostream_iterator<_TpP, _CharT, _Traits> _Self;
1.165 -# endif
1.166 -public:
1.167 - typedef _CharT char_type;
1.168 - typedef _Traits traits_type;
1.169 - typedef basic_ostream<_CharT, _Traits> ostream_type;
1.170 -
1.171 - typedef output_iterator_tag iterator_category;
1.172 -
1.173 - ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
1.174 - ostream_iterator(ostream_type& __s, const _CharT* __c)
1.175 - : _M_stream(&__s), _M_string(__c) {}
1.176 - _Self& operator=(const _TpP& __val) {
1.177 - *_M_stream << __val;
1.178 - if (_M_string) *_M_stream << _M_string;
1.179 - return *this;
1.180 - }
1.181 - _Self& operator*() { return *this; }
1.182 - _Self& operator++() { return *this; }
1.183 - _Self& operator++(int) { return *this; }
1.184 -private:
1.185 - ostream_type* _M_stream;
1.186 - const _CharT* _M_string;
1.187 -};
1.188 -
1.189 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1.190 -# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
1.191 -template <class _TpP>
1.192 -inline output_iterator_tag _STLP_CALL
1.193 -iterator_category(const ostream_iterator<_TpP>&) { return output_iterator_tag(); }
1.194 -# else
1.195 -template <class _TpP, class _CharT, class _Traits>
1.196 -inline output_iterator_tag _STLP_CALL
1.197 -iterator_category(const ostream_iterator<_TpP, _CharT, _Traits>&) { return output_iterator_tag(); }
1.198 -# endif
1.199 -# endif
1.200 -
1.201 -_STLP_END_NAMESPACE
1.202 -
1.203 -# elif ! defined(_STLP_USE_NO_IOSTREAMS)
1.204 -
1.205 -_STLP_BEGIN_NAMESPACE
1.206 -
1.207 -# if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
1.208 -# define __ISI_TMPL_HEADER_ARGUMENTS class _Tp
1.209 -# define __ISI_TMPL_ARGUMENTS _Tp
1.210 -template <class _Tp>
1.211 -class istream_iterator : public iterator<input_iterator_tag, _Tp, ptrdiff_t,
1.212 - const _Tp*, const _Tp& > {
1.213 -# else
1.214 -# define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _Dist
1.215 -# define __ISI_TMPL_ARGUMENTS _Tp, _Dist
1.216 -template <class _Tp, __DFL_TYPE_PARAM(_Dist, ptrdiff_t)>
1.217 -class istream_iterator : public iterator<input_iterator_tag, _Tp, _Dist,
1.218 - const _Tp*, const _Tp& > {
1.219 -# endif
1.220 -
1.221 -protected:
1.222 - istream* _M_stream;
1.223 - _Tp _M_value;
1.224 - bool _M_end_marker;
1.225 - void _M_read() {
1.226 - _M_end_marker = (*_M_stream) ? true : false;
1.227 - if (_M_end_marker) *_M_stream >> _M_value;
1.228 - _M_end_marker = (*_M_stream) ? true : false;
1.229 -}
1.230 -public:
1.231 - typedef input_iterator_tag iterator_category;
1.232 - typedef _Tp value_type;
1.233 - typedef _Dist difference_type;
1.234 - typedef const _Tp* pointer;
1.235 - typedef const _Tp& reference;
1.236 -
1.237 - istream_iterator() : _M_stream(&cin), _M_end_marker(false) {}
1.238 - istream_iterator(istream& __s) : _M_stream(&__s) { _M_read(); }
1.239 - reference operator*() const { return _M_value; }
1.240 -
1.241 - _STLP_DEFINE_ARROW_OPERATOR
1.242 -
1.243 - istream_iterator< __ISI_TMPL_ARGUMENTS >& operator++() {
1.244 - _M_read();
1.245 - return *this;
1.246 - }
1.247 - istream_iterator< __ISI_TMPL_ARGUMENTS > operator++(int) {
1.248 - istream_iterator< __ISI_TMPL_ARGUMENTS > __tmp = *this;
1.249 - _M_read();
1.250 - return __tmp;
1.251 - }
1.252 - inline bool _M_equal(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) const {
1.253 - return (_M_stream == __y._M_stream &&
1.254 - _M_end_marker == __y._M_end_marker) ||
1.255 - _M_end_marker == false && __y._M_end_marker == false;
1.256 - }
1.257 -};
1.258 -
1.259 -template <class _Tp>
1.260 -class ostream_iterator {
1.261 -protected:
1.262 - ostream* _M_stream;
1.263 - const char* _M_string;
1.264 -public:
1.265 - typedef output_iterator_tag iterator_category;
1.266 -# ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1.267 - typedef void value_type;
1.268 - typedef void difference_type;
1.269 - typedef void pointer;
1.270 - typedef void reference;
1.271 -# endif
1.272 - ostream_iterator(ostream& __s) : _M_stream(&__s), _M_string(0) {}
1.273 - ostream_iterator(ostream& __s, const char* __c)
1.274 - : _M_stream(&__s), _M_string(__c) {}
1.275 - ostream_iterator<_Tp>& operator=(const _Tp& __val) {
1.276 - *_M_stream << __val;
1.277 - if (_M_string) *_M_stream << _M_string;
1.278 - return *this;
1.279 - }
1.280 - ostream_iterator<_Tp>& operator*() { return *this; }
1.281 - ostream_iterator<_Tp>& operator++() { return *this; }
1.282 - ostream_iterator<_Tp>& operator++(int) { return *this; }
1.283 -};
1.284 -
1.285 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1.286 -template <class _Tp> inline output_iterator_tag
1.287 -iterator_category(const ostream_iterator<_Tp>&) { return output_iterator_tag(); }
1.288 -#endif
1.289 -
1.290 -_STLP_END_NAMESPACE
1.291 -
1.292 -#endif /* _STLP_USE_NEW_IOSTREAMS */
1.293 -
1.294 -// form-independent definiotion of stream iterators
1.295 -_STLP_BEGIN_NAMESPACE
1.296 -
1.297 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1.298 -inline bool _STLP_CALL
1.299 -operator==(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __x,
1.300 - const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) {
1.301 - return __x._M_equal(__y);
1.302 -}
1.303 -
1.304 -# ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1.305 -
1.306 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1.307 -inline bool _STLP_CALL
1.308 -operator!=(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __x,
1.309 - const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) {
1.310 - return !__x._M_equal(__y);
1.311 -}
1.312 -
1.313 -# endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1.314 -
1.315 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1.316 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1.317 -inline input_iterator_tag _STLP_CALL
1.318 -iterator_category(const istream_iterator< __ISI_TMPL_ARGUMENTS >&)
1.319 -{ return input_iterator_tag(); }
1.320 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1.321 -inline _Tp* _STLP_CALL
1.322 -value_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (_Tp*) 0; }
1.323 -
1.324 -# if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
1.325 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1.326 -inline ptrdiff_t* _STLP_CALL
1.327 -distance_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (ptrdiff_t*)0; }
1.328 -# else
1.329 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1.330 -inline _Dist* _STLP_CALL
1.331 -distance_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (_Dist*)0; }
1.332 -# endif /* _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS */
1.333 -
1.334 -# endif
1.335 -
1.336 -_STLP_END_NAMESPACE
1.337 -
1.338 -# undef __ISI_TMPL_HEADER_ARGUMENTS
1.339 -# undef __ISI_TMPL_ARGUMENTS
1.340 -
1.341 -
1.342 -#endif /* _STLP_INTERNAL_STREAM_ITERATOR_H */
1.343 -
1.344 -// Local Variables:
1.345 -// mode:C++
1.346 -// End: