Uint16 & Int16 Variant Cast.

This commit is contained in:
Jean-Baptiste Perrier
2021-05-10 22:56:48 +02:00
parent 78ed675eda
commit 97338d61d2

View File

@@ -2571,6 +2571,10 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
case VariantType::Bool:
switch (to.Type)
{
case VariantType::Int16: // No portable literal suffix for short ( Available in MSVC but Undocumented : i16 )
return Variant((int16)(v.AsBool ? 1 : 0));
case VariantType::Uint16: // No portable literal suffix for short ( Available in MSVC but Undocumented : ui16 )
return Variant((uint16)(v.AsBool ? 1 : 0));
case VariantType::Int:
return Variant(v.AsBool ? 1 : 0);
case VariantType::Uint:
@@ -2594,17 +2598,51 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
default: ;
}
break;
case VariantType::Int16:
switch (to.Type)
{
case VariantType::Bool:
return Variant(v.AsInt != 0);
case VariantType::Int:
return Variant((int32)v.AsInt16);
case VariantType::Int64:
return Variant((int64)v.AsInt16);
case VariantType::Uint16:
return Variant((uint16)v.AsInt16);
case VariantType::Uint:
return Variant((uint32)v.AsInt16);
case VariantType::Uint64:
return Variant((uint64)v.AsInt16);
case VariantType::Float:
return Variant((float)v.AsInt16);
case VariantType::Double:
return Variant((double)v.AsInt16);
case VariantType::Vector2:
return Variant(Vector2((float)v.AsInt16));
case VariantType::Vector3:
return Variant(Vector3((float)v.AsInt16));
case VariantType::Vector4:
return Variant(Vector4((float)v.AsInt16));
case VariantType::Color:
return Variant(Color((float)v.AsInt16));
default: ;
}
break;
case VariantType::Int:
switch (to.Type)
{
case VariantType::Bool:
return Variant(v.AsInt != 0);
case VariantType::Int16:
return Variant((int16)v.AsInt);
case VariantType::Int64:
return Variant((int64)v.AsUint);
return Variant((int64)v.AsInt);
case VariantType::Uint16:
return Variant((uint16)v.AsInt);
case VariantType::Uint:
return Variant((uint32)v.AsInt);
case VariantType::Uint64:
return Variant((uint64)v.AsUint);
return Variant((uint64)v.AsInt);
case VariantType::Float:
return Variant((float)v.AsInt);
case VariantType::Double:
@@ -2620,15 +2658,49 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
default: ;
}
break;
case VariantType::Uint16:
switch (to.Type)
{
case VariantType::Bool:
return Variant(v.AsUint16 != 0);
case VariantType::Int16:
return Variant((int16)v.AsUint16);
case VariantType::Int:
return Variant((int32)v.AsUint16);
case VariantType::Int64:
return Variant((int64)v.AsUint16);
case VariantType::Uint16:
return Variant((uint16)v.AsUint16);
case VariantType::Uint64:
return Variant((uint64)v.AsUint16);
case VariantType::Float:
return Variant((float)v.AsUint16);
case VariantType::Double:
return Variant((double)v.AsUint16);
case VariantType::Vector2:
return Variant(Vector2((float)v.AsUint16));
case VariantType::Vector3:
return Variant(Vector3((float)v.AsUint16));
case VariantType::Vector4:
return Variant(Vector4((float)v.AsUint16));
case VariantType::Color:
return Variant(Color((float)v.AsUint16));
default: ;
}
break;
case VariantType::Uint:
switch (to.Type)
{
case VariantType::Bool:
return Variant(v.AsUint != 0);
case VariantType::Int16:
return Variant((int16)v.AsUint);
case VariantType::Int:
return Variant((int32)v.AsUint);
case VariantType::Int64:
return Variant((int64)v.AsUint);
case VariantType::Uint16:
return Variant((uint16)v.AsUint);
case VariantType::Uint64:
return Variant((uint64)v.AsUint);
case VariantType::Float:
@@ -2651,8 +2723,12 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
{
case VariantType::Bool:
return Variant(v.AsInt64 != 0);
case VariantType::Int64:
return Variant((int64)v.AsUint);
case VariantType::Int16:
return Variant((int16)v.AsInt64);
case VariantType::Int:
return Variant((int32)v.AsInt64);
case VariantType::Uint16:
return Variant((uint16)v.AsInt64);
case VariantType::Uint:
return Variant((uint32)v.AsInt64);
case VariantType::Uint64:
@@ -2677,10 +2753,14 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
{
case VariantType::Bool:
return Variant(v.AsUint64 != 0);
case VariantType::Int16:
return Variant((int16)v.AsUint64);
case VariantType::Int:
return Variant((int32)v.AsUint64);
case VariantType::Int64:
return Variant((int64)v.AsUint64);
case VariantType::Uint16:
return Variant((uint16)v.AsUint16);
case VariantType::Uint:
return Variant((uint32)v.AsUint);
case VariantType::Float:
@@ -2703,8 +2783,12 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
{
case VariantType::Bool:
return Variant(Math::Abs(v.AsFloat) > ZeroTolerance);
case VariantType::Int16:
return Variant((int16)v.AsFloat);
case VariantType::Int:
return Variant((int32)v.AsFloat);
case VariantType::Uint16:
return Variant((uint16)v.AsFloat);
case VariantType::Uint:
return Variant((uint32)v.AsFloat);
case VariantType::Int64:
@@ -2729,8 +2813,12 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
{
case VariantType::Bool:
return Variant(Math::Abs(v.AsDouble) > ZeroTolerance);
case VariantType::Int16:
return Variant((int16)v.AsDouble);
case VariantType::Int:
return Variant((int32)v.AsDouble);
case VariantType::Uint16:
return Variant((uint16)v.AsDouble);
case VariantType::Uint:
return Variant((uint32)v.AsDouble);
case VariantType::Int64:
@@ -2755,8 +2843,12 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
{
case VariantType::Bool:
return Variant(Math::Abs(((Vector2*)v.AsData)->X) > ZeroTolerance);
case VariantType::Int16:
return Variant((int16)((Vector2*)v.AsData)->X);
case VariantType::Int:
return Variant((int32)((Vector2*)v.AsData)->X);
case VariantType::Uint16:
return Variant((uint16)((Vector2*)v.AsData)->X);
case VariantType::Uint:
return Variant((uint32)((Vector2*)v.AsData)->X);
case VariantType::Int64:
@@ -2781,8 +2873,12 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
{
case VariantType::Bool:
return Variant(Math::Abs(((Vector3*)v.AsData)->X) > ZeroTolerance);
case VariantType::Int16:
return Variant((int16)((Vector3*)v.AsData)->X);
case VariantType::Int:
return Variant((int32)((Vector3*)v.AsData)->X);
case VariantType::Uint16:
return Variant((uint16)((Vector3*)v.AsData)->X);
case VariantType::Uint:
return Variant((uint32)((Vector3*)v.AsData)->X);
case VariantType::Int64:
@@ -2807,8 +2903,12 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
{
case VariantType::Bool:
return Variant(Math::Abs(((Vector4*)v.AsData)->X) > ZeroTolerance);
case VariantType::Int16:
return Variant((int16)((Vector4*)v.AsData)->X);
case VariantType::Int:
return Variant((int32)((Vector4*)v.AsData)->X);
case VariantType::Uint16:
return Variant((uint16)((Vector4*)v.AsData)->X);
case VariantType::Uint:
return Variant((uint32)((Vector4*)v.AsData)->X);
case VariantType::Int64:
@@ -2833,8 +2933,12 @@ Variant Variant::Cast(const Variant& v, const VariantType& to)
{
case VariantType::Bool:
return Variant(Math::Abs(((Color*)v.AsData)->R) > ZeroTolerance);
case VariantType::Int16:
return Variant((int16)((Color*)v.AsData)->R);
case VariantType::Int:
return Variant((int32)((Color*)v.AsData)->R);
case VariantType::Uint16:
return Variant((uint16)((Color*)v.AsData)->R);
case VariantType::Uint:
return Variant((uint32)((Color*)v.AsData)->R);
case VariantType::Int64: