Complex.cxx
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 #include "Complex.hxx"
00023
00024
00025 #include <iostream>
00026
00027 namespace CLAM
00028 {
00029
00030 std::istream& operator >> (std::istream & is, Complex & a)
00031 {
00032 if (is.flags() & std::ios::skipws) {
00033 char c = '\0';
00034 do
00035 is.get(c);
00036 while (is && isspace(c));
00037 if (is) is.putback(c);
00038 }
00039 char c = '\0';
00040 is >> c;
00041 if (c!='{') {
00042 if (is) is.putback(c);
00043
00044 return is;
00045 }
00046 TData x;
00047 TData y;
00048 if (!(is >> x)) return is;
00049 if (!(is >> y)) return is;
00050 if (is.flags() & std::ios::skipws) {
00051 char c = '\0';
00052 do
00053 is.get(c);
00054 while (is && isspace(c));
00055 if (is) is.putback(c);
00056 }
00057 if (!is.get(c) || c!='i') return is;
00058 if (is.flags() & std::ios::skipws) {
00059 char c = '\0';
00060 do
00061 is.get(c);
00062 while (is && isspace(c));
00063 if (is) is.putback(c);
00064 }
00065 if (!is.get(c) || c!='}') return is;
00066
00067 a.SetReal(x);
00068 a.SetImag(y);
00069 return is;
00070 }
00071
00072 std::ostream& operator << (std::ostream & os, const Complex & a)
00073 {
00074 return os
00075 << "{"
00076 << a.Real()
00077 << " "
00078 << a.Imag()
00079 << "i}";
00080 }
00081
00082 }
00083