inline Value::Value(const Value& v) : data(String::SPECIAL) { if(v.IsRef() || v.data.IsLarge()) SetLarge(v); else data.SetSmall(v.data); Magic(); } template<> inline bool IsPolyEqual(const bool& x, const Value& v) { return v.Is() && int(x) == double(v) || v.Is() && int(x) == float(v) || v.Is() && int(x) == int64(v) || v.Is() && int(x) == int(v); } template<> inline bool IsPolyEqual(const int& x, const Value& v) { return v.Is() && x == double(v) || v.Is() && x == float(v) || v.Is() && x == int64(v); } template<> inline bool IsPolyEqual(const int64& x, const Value& v) { return v.Is() && double(x) == double(v); } template<> inline bool IsPolyEqual(const Date& x, const Value& v) { return v.Is