#include "Core.h" #ifndef SVO_VALUE NAMESPACE_UPP #ifndef flagSO const Nuller Null; #endif #define LTIMING(x) // RTIMING(x) unsigned Value::GetHashValue() const { return IsNull() ? 0 : ptr->GetHashValue(); } Value& Value::operator=(const Value& v) { if(this == &v) return *this; ptr->Release(); ptr = v.ptr; ptr->Retain(); return *this; } Value::Value(const Value& v) { ptr = v.ptr; ptr->Retain(); } void Value::SetVoidVal() { ptr = &Single(); ptr->Retain(); } Value::Value() { SetVoidVal(); } Value::~Value() { ptr->Release(); } bool Value::operator==(const Value& v) const { if(ptr == v.ptr) return true; bool an = IsNull(); bool bn = v.IsNull(); if(an || bn) return an && bn; if(GetType() == v.GetType()) return ptr->IsEqual(v.ptr); return ptr->IsPolyEqual(v) || v.ptr->IsPolyEqual(*this); } Value::Value(const String& s) { ptr = new RichValueRep(s); } Value::Value(const WString& s) { ptr = new RichValueRep(s); } Value::Value(const char *s) { ptr = new RichValueRep(s); } Value::Value(int i) { ptr = new RichValueRep(i); } Value::Value(int64 i) { ptr = new RichValueRep(i); } Value::Value(double d) { ptr = new RichValueRep(d); } Value::Value(bool b) { ptr = new RichValueRep(b); } Value::Value(Date d) { ptr = new RichValueRep(d); } Value::Value(Time t) { ptr = new RichValueRep