1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Copyright (c) 1999 3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Silicon Graphics Computer Systems, Inc. 4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Copyright (c) 1999 6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Boris Fomitchev 7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * This material is provided "as is", with absolutely no warranty expressed 9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * or implied. Any use is at your own risk. 10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to use or copy this software for any purpose is hereby granted 12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * without fee, provided the above notices are retained on all copies. 13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to modify the code and to distribute modified code is granted, 14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * provided the above notices are retained, and a notice that the code was 15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * modified is included with the above copyright notice. 16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include "stlport_prefix.h" 20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <complex> 22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <istream> 23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_BEGIN_NAMESPACE 25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// Specializations for narrow characters; lets us avoid the nuisance of 27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// widening. 28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC 29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottbasic_ostream<char, char_traits<char> >& _STLP_CALL 30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator<< (basic_ostream<char, char_traits<char> >& __os, const complex<float>& __z) 31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return __os << '(' << (double)__z.real() << ',' << (double)__z.imag() << ')'; } 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottbasic_ostream<char, char_traits<char> >& _STLP_CALL 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator<< (basic_ostream<char, char_traits<char> >& __os, const complex<double>& __z) 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return __os << '(' << __z.real() << ',' << __z.imag() << ')'; } 37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_LONG_DOUBLE 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC 40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottbasic_ostream<char, char_traits<char> >& _STLP_CALL 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator<< (basic_ostream<char, char_traits<char> >& __os, const complex<long double>& __z) 42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ return __os << '(' << __z.real() << ',' << __z.imag() << ')'; } 43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// Specialization for narrow characters; lets us avoid widen. 46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottbasic_istream<char, char_traits<char> >& _STLP_CALL 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator>>(basic_istream<char, char_traits<char> >& __is, complex<float>& __z) { 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott float __re = 0; 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott float __im = 0; 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char __c; 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __c; 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__c == '(') { 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __re >> __c; 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__c == ',') 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __im >> __c; 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__c != ')') 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is.setstate(ios_base::failbit); 61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott else { 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is.putback(__c); 64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __re; 65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__is) 68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __z = complex<float>(__re, __im); 69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return __is; 70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC 73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottbasic_istream<char, char_traits<char> >& _STLP_CALL 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator>>(basic_istream<char, char_traits<char> >& __is, complex<double>& __z) { 75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott double __re = 0; 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott double __im = 0; 77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char __c; 79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __c; 81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__c == '(') { 82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __re >> __c; 83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__c == ',') 84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __im >> __c; 85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__c != ')') 86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is.setstate(ios_base::failbit); 87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott else { 89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is.putback(__c); 90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __re; 91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__is) 94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __z = complex<double>(__re, __im); 95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return __is; 96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_LONG_DOUBLE 99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC 100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottbasic_istream<char, char_traits<char> >& _STLP_CALL 101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator>>(basic_istream<char, char_traits<char> >& __is, complex<long double>& __z) { 102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott long double __re = 0; 103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott long double __im = 0; 104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott char __c; 106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __c; 108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__c == '(') { 109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __re >> __c; 110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__c == ',') 111e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __im >> __c; 112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__c != ')') 113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is.setstate(ios_base::failbit); 114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott else { 116e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is.putback(__c); 117e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __is >> __re; 118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (__is) 121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott __z = complex<long double>(__re, __im); 122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return __is; 123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// Force instantiation of complex I/O functions 127e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !(defined (_STLP_NO_FORCE_INSTANTIATE) || defined (_STLP_NO_WCHAR_T)) 128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator>>(basic_istream<wchar_t, char_traits<wchar_t> >&, complex<float>&); 131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator>>(basic_istream<wchar_t, char_traits<wchar_t> >&, complex<double>&); 134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 135e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_NO_LONG_DOUBLE 136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator>>(basic_istream<wchar_t, char_traits<wchar_t> >&, complex<long double>&); 138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<long double>&); 141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<float>&); 145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 146e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_OPERATOR_SPEC basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL 147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottoperator<<(basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<double>&); 148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif /* _STLP_NO_WCHAR_T */ 150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott_STLP_END_NAMESPACE 152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// Local Variables: 155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// mode:C++ 156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott// End: 157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 158