print.hpp
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
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include <sstream>
00037
00038 namespace Gecode { namespace Float {
00039 namespace Linear {
00040 class NoView;
00041 }
00042
00043 template<class Char, class Traits, class View>
00044 std::basic_ostream<Char,Traits>&
00045 print_view(std::basic_ostream<Char,Traits>& os, const View& x) {
00046 std::basic_ostringstream<Char,Traits> s;
00047 s.copyfmt(os); s.width(0);
00048 if (x.assigned()) {
00049 s << "[[" << x.med() << "]]";
00050 } else {
00051 s << "[[" << x.min() << ".." << x.max() << "]]";
00052 }
00053 return os << s.str();
00054 }
00055
00056 template<class Char, class Traits>
00057 inline std::basic_ostream<Char,Traits>&
00058 operator <<(std::basic_ostream<Char,Traits>& os, const FloatView& x) {
00059 return print_view(os,x);
00060 }
00061
00062 template<class Char, class Traits>
00063 inline std::basic_ostream<Char,Traits>&
00064 operator <<(std::basic_ostream<Char,Traits>& os, const MinusView& x) {
00065 return print_view(os,x);
00066 }
00067
00068 template<class Char, class Traits>
00069 inline std::basic_ostream<Char,Traits>&
00070 operator <<(std::basic_ostream<Char,Traits>& os, const OffsetView& x) {
00071 return print_view(os,x);
00072 }
00073
00074 template<class Char, class Traits>
00075 inline std::basic_ostream<Char,Traits>&
00076 operator <<(std::basic_ostream<Char,Traits>& os, const ScaleView& x) {
00077 return print_view(os,x);
00078 }
00079
00080 template<class Char, class Traits>
00081 inline std::basic_ostream<Char,Traits>&
00082 operator <<(std::basic_ostream<Char,Traits>& os, const Linear::NoView&) {
00083 return os << "NoView";
00084 }
00085
00086 }}
00087
00088
00089