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 #ifndef _CSP_KERNEL_Value_H
00030 #define _CSP_KERNEL_Value_H
00031
00032
00033 CSP_NAMESPACE_BEGIN(csp);
00034
00035
00039 class CSP_API Value
00040 {
00041 public:
00043 Value() : m_id(NoId), m_failures(0) {}
00044
00046 virtual ~Value() {}
00047
00049 Value(const Value&) { m_id = NoId; m_failures = 0; }
00050
00052 Value& operator=(const Value&) { m_id = NoId; return *this; }
00053
00055 void setId(id_t id) { m_id = id; }
00056
00058 id_t id() const { return m_id; }
00059
00062 ulonglong failures() const { return m_failures; }
00063
00065 void incrementFailures() { m_failures++; }
00066
00068 virtual wostream& print(wostream& wos) const { return wos; }
00069
00071 friend CSP_API wostream& operator<<(wostream& wos, const Value& value)
00072 {
00073 return value.print(wos);
00074 }
00075
00076 private:
00077
00078 id_t m_id;
00079
00080
00081
00082 ulonglong m_failures;
00083 };
00084
00085
00086 CSP_NAMESPACE_END(csp);
00087
00088
00089 #endif // _CSP_KERNEL_Value_H
00090
00091
00092
00093