inline void ValueMap::Add(const Value& key, const Value& value) { Data& d = UnShare(); d.key.Add(key); d.value.Add(value); } #ifdef DEPRECATED template 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 ~RawRef() {} }; template Ref RawAsRef(T& x) { return Ref(&x, &Single< RawRef >()); } template 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); } }; template Ref RichAsRef(T& x) { return Ref(&x, &Single< RichRef >()); } #endif