diff --git a/uppsrc/Core/Value.h b/uppsrc/Core/Value.h index 6960d73c9..5088b9f26 100644 --- a/uppsrc/Core/Value.h +++ b/uppsrc/Core/Value.h @@ -63,7 +63,7 @@ public: bool operator==(const T&) const { NEVER(); return false; } String ToString() const { return typeid(T).name(); } - operator ValueTypeRef(); +// operator ValueTypeRef(); }; template // Backward compatiblity diff --git a/uppsrc/Core/Value.hpp b/uppsrc/Core/Value.hpp index 8bf247ee5..0ac453762 100644 --- a/uppsrc/Core/Value.hpp +++ b/uppsrc/Core/Value.hpp @@ -333,9 +333,9 @@ inline const T& ValueTo(const Value& v, const T& dflt) { return v.Is() ? template // Deprecated (?) struct RawRef : public RefManager { - virtual void SetValue(void *p, const Value& v) { *(T *) p = RawValue::Extract(v); } - virtual Value GetValue(const void *p) { return RawValue(*(const T *) p); } - virtual int GetType() { return GetValueTypeNo(); } + virtual void SetValue(void *p, const Value& v) const { *(T *) p = RawValue::Extract(v); } + virtual Value GetValue(const void *p) const { return RawValue(*(const T *) p); } + virtual int GetType() const { return GetValueTypeNo(); } virtual ~RawRef() {} }; @@ -346,10 +346,10 @@ Ref RawAsRef(T& x) { // Deprecated (?) template // Deprecated struct RichRef : public RawRef { - virtual Value GetValue(const void *p) { return RichValue(*(T *) p); } - virtual bool IsNull(const void *p) { return UPP::IsNull(*(T *) p); } - virtual void SetValue(void *p, const Value& v) { *(T *) p = T(v); } - virtual void SetNull(void *p) { UPP::SetNull(*(T *)p); } + virtual Value GetValue(const void *p) const { return RichValue(*(T *) p); } + virtual bool IsNull(const void *p) const { return UPP::IsNull(*(T *) p); } + virtual void SetValue(void *p, const Value& v) const { *(T *) p = T(v); } + virtual void SetNull(void *p) const { UPP::SetNull(*(T *)p); } }; template // Deprecated diff --git a/uppsrc/Core/ValueUtil.cpp b/uppsrc/Core/ValueUtil.cpp index 264944294..afd402609 100644 --- a/uppsrc/Core/ValueUtil.cpp +++ b/uppsrc/Core/ValueUtil.cpp @@ -6,12 +6,13 @@ static String sAsString(const Vector& v); #define LTIMING(x) // RTIMING(x) +/* struct Ref::ValueRef : public RefManager { - virtual int GetType() { return VALUE_V; } - virtual Value GetValue(const void *ptr) { return *(Value *) ptr; } - virtual bool IsNull(const void *ptr) { return UPP::IsNull(*(Value *) ptr); } - virtual void SetValue(void *ptr, const Value& v) { *(Value *) ptr = v; } - virtual void SetNull(void *ptr) { *(Value *) ptr = Null; } + virtual int GetType() const { return VALUE_V; } + virtual Value GetValue(const void *ptr) const { return *(Value *) ptr; } + virtual bool IsNull(const void *ptr) const { return UPP::IsNull(*(Value *) ptr); } + virtual void SetValue(void *ptr, const Value& v) const { *(Value *) ptr = v; } + virtual void SetNull(void *ptr) const { *(Value *) ptr = Null; } }; Ref::Ref(String& s) { ptr = &s; m = &Single< StdRef >(); } @@ -23,7 +24,7 @@ Ref::Ref(bool& b) { ptr = &b; m = &Single< StdRef >(); } Ref::Ref(Date& d) { ptr = &d; m = &Single< StdRef >(); } Ref::Ref(Time& t) { ptr = &t; m = &Single< StdRef