ComplexTmplDef.hxx
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _ComplexTmplDef_
00024 #define _ComplexTmplDef_
00025
00026
00027 #include <iostream>
00028
00029 namespace CLAM
00030 {
00031
00032 template <class T>
00033 inline std::istream& operator >> (std::istream & is, ComplexTmpl<T> & a)
00034 {
00035 if (is.flags() & std::ios::skipws) {
00036 char c = '\0';
00037 do
00038 is.get(c);
00039 while (is && isspace(c));
00040 if (is) is.putback(c);
00041 }
00042 char c = '\0';
00043 is >> c;
00044 if (c!='{') {
00045 if (is) is.putback(c);
00046
00047 return is;
00048 }
00049 T x;
00050 T y;
00051 if (!(is >> x)) return is;
00052 if (!(is >> y)) return is;
00053 if (is.flags() & std::ios::skipws) {
00054 char c = '\0';
00055 do
00056 is.get(c);
00057 while (is && isspace(c));
00058 if (is) is.putback(c);
00059 }
00060 if (!is.get(c) || c!='i') return is;
00061 if (is.flags() & std::ios::skipws) {
00062 char c = '\0';
00063 do
00064 is.get(c);
00065 while (is && isspace(c));
00066 if (is) is.putback(c);
00067 }
00068 if (!is.get(c) || c!='}') return is;
00069
00070 a.SetReal(x);
00071 a.SetImag(y);
00072 return is;
00073 }
00074
00075 template <class T>
00076 inline std::ostream& operator << (std::ostream & os, const ComplexTmpl<T> & a)
00077 {
00078 return os
00079 << "{"
00080 << a.Real()
00081 << " "
00082 << a.Imag()
00083 << "i}";
00084 }
00085
00086 }
00087
00088
00089 #endif // _ComplexTmplDef_
00090