00001
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
00033
00034 #ifndef GROOVX_RUTZ_VALUE_H_UTC20050626084020_DEFINED
00035 #define GROOVX_RUTZ_VALUE_H_UTC20050626084020_DEFINED
00036
00037 #include <iosfwd>
00038
00039 namespace rutz
00040 {
00041 class fstring;
00042 class value;
00043 }
00044
00046
00055
00056
00057 class rutz::value
00058 {
00059 public:
00060
00062 value();
00063
00065 virtual ~value();
00066
00068 virtual rutz::fstring value_typename() const = 0;
00069
00071 virtual void print_to(std::ostream& os) const = 0;
00072
00074 virtual void scan_from(std::istream& is) = 0;
00075
00077
00079 rutz::fstring get_string() const;
00080
00082
00084 void set_string(rutz::fstring val);
00085 };
00086
00088
00089
00090
00092
00093 inline std::ostream& operator<<(std::ostream& os,
00094 const rutz::value& val)
00095 {
00096 val.print_to(os);
00097 return os;
00098 }
00099
00100 inline std::istream& operator>>(std::istream& is,
00101 rutz::value& val)
00102 {
00103 val.scan_from(is);
00104 return is;
00105 }
00106
00107 static const char __attribute__((used)) vcid_groovx_rutz_value_h_utc20050626084020[] = "$Id: value.h 10065 2007-04-12 05:54:56Z rjpeters $ $HeadURL: file:
00108 #endif // !GROOVX_RUTZ_VALUE_H_UTC20050626084020_DEFINED