From e79be6ce07ed8c89011f759ecade070a3bd5a806 Mon Sep 17 00:00:00 2001 From: rune-scape Date: Mon, 5 Dec 2022 21:46:47 -0500 Subject: Unify String and StringName --- core/variant/variant_op.cpp | 117 +++++++++++++++++++++++--------------------- 1 file changed, 62 insertions(+), 55 deletions(-) (limited to 'core/variant/variant_op.cpp') diff --git a/core/variant/variant_op.cpp b/core/variant/variant_op.cpp index 25bc241e9b..d4e6dfb4d1 100644 --- a/core/variant/variant_op.cpp +++ b/core/variant/variant_op.cpp @@ -229,6 +229,20 @@ public: static Variant::Type get_return_type() { return GetTypeInfo::VARIANT_TYPE; } }; +#define register_string_op(m_op_type, m_op_code) \ + do { \ + register_op>(m_op_code, Variant::STRING, Variant::STRING); \ + register_op>(m_op_code, Variant::STRING, Variant::STRING_NAME); \ + register_op>(m_op_code, Variant::STRING_NAME, Variant::STRING); \ + register_op>(m_op_code, Variant::STRING_NAME, Variant::STRING_NAME); \ + } while (false) + +#define register_string_modulo_op(m_class, m_type) \ + do { \ + register_op>(Variant::OP_MODULE, Variant::STRING, m_type); \ + register_op>(Variant::OP_MODULE, Variant::STRING_NAME, m_type); \ + } while (false) + void Variant::_register_variant_operators() { memset(operator_return_type_table, 0, sizeof(operator_return_type_table)); memset(operator_evaluator_table, 0, sizeof(operator_evaluator_table)); @@ -239,7 +253,7 @@ void Variant::_register_variant_operators() { register_op>(Variant::OP_ADD, Variant::INT, Variant::FLOAT); register_op>(Variant::OP_ADD, Variant::FLOAT, Variant::INT); register_op>(Variant::OP_ADD, Variant::FLOAT, Variant::FLOAT); - register_op>(Variant::OP_ADD, Variant::STRING, Variant::STRING); + register_string_op(OperatorEvaluatorStringConcat, Variant::OP_ADD); register_op>(Variant::OP_ADD, Variant::VECTOR2, Variant::VECTOR2); register_op>(Variant::OP_ADD, Variant::VECTOR2I, Variant::VECTOR2I); register_op>(Variant::OP_ADD, Variant::VECTOR3, Variant::VECTOR3); @@ -415,46 +429,46 @@ void Variant::_register_variant_operators() { register_op>(Variant::OP_MODULE, Variant::VECTOR4I, Variant::VECTOR4I); register_op>(Variant::OP_MODULE, Variant::VECTOR4I, Variant::INT); - register_op(Variant::OP_MODULE, Variant::STRING, Variant::NIL); - - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::BOOL); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::INT); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::FLOAT); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::STRING); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::VECTOR2); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::VECTOR2I); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::RECT2); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::RECT2I); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::VECTOR3); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::VECTOR3I); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::VECTOR4); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::VECTOR4I); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::TRANSFORM2D); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PLANE); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::QUATERNION); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::AABB); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::BASIS); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::TRANSFORM3D); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PROJECTION); - - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::COLOR); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::STRING_NAME); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::NODE_PATH); - register_op(Variant::OP_MODULE, Variant::STRING, Variant::OBJECT); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::CALLABLE); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::SIGNAL); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::DICTIONARY); - register_op(Variant::OP_MODULE, Variant::STRING, Variant::ARRAY); - - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PACKED_BYTE_ARRAY); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PACKED_INT32_ARRAY); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PACKED_INT64_ARRAY); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PACKED_FLOAT32_ARRAY); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PACKED_FLOAT64_ARRAY); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PACKED_STRING_ARRAY); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PACKED_VECTOR2_ARRAY); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PACKED_VECTOR3_ARRAY); - register_op>(Variant::OP_MODULE, Variant::STRING, Variant::PACKED_COLOR_ARRAY); + register_string_modulo_op(void, Variant::NIL); + + register_string_modulo_op(bool, Variant::BOOL); + register_string_modulo_op(int64_t, Variant::INT); + register_string_modulo_op(double, Variant::FLOAT); + register_string_modulo_op(String, Variant::STRING); + register_string_modulo_op(Vector2, Variant::VECTOR2); + register_string_modulo_op(Vector2i, Variant::VECTOR2I); + register_string_modulo_op(Rect2, Variant::RECT2); + register_string_modulo_op(Rect2i, Variant::RECT2I); + register_string_modulo_op(Vector3, Variant::VECTOR3); + register_string_modulo_op(Vector3i, Variant::VECTOR3I); + register_string_modulo_op(Vector4, Variant::VECTOR4); + register_string_modulo_op(Vector4i, Variant::VECTOR4I); + register_string_modulo_op(Transform2D, Variant::TRANSFORM2D); + register_string_modulo_op(Plane, Variant::PLANE); + register_string_modulo_op(Quaternion, Variant::QUATERNION); + register_string_modulo_op(::AABB, Variant::AABB); + register_string_modulo_op(Basis, Variant::BASIS); + register_string_modulo_op(Transform3D, Variant::TRANSFORM3D); + register_string_modulo_op(Projection, Variant::PROJECTION); + + register_string_modulo_op(Color, Variant::COLOR); + register_string_modulo_op(StringName, Variant::STRING_NAME); + register_string_modulo_op(NodePath, Variant::NODE_PATH); + register_string_modulo_op(Object, Variant::OBJECT); + register_string_modulo_op(Callable, Variant::CALLABLE); + register_string_modulo_op(Signal, Variant::SIGNAL); + register_string_modulo_op(Dictionary, Variant::DICTIONARY); + register_string_modulo_op(Array, Variant::ARRAY); + + register_string_modulo_op(PackedByteArray, Variant::PACKED_BYTE_ARRAY); + register_string_modulo_op(PackedInt32Array, Variant::PACKED_INT32_ARRAY); + register_string_modulo_op(PackedInt64Array, Variant::PACKED_INT64_ARRAY); + register_string_modulo_op(PackedFloat32Array, Variant::PACKED_FLOAT32_ARRAY); + register_string_modulo_op(PackedFloat64Array, Variant::PACKED_FLOAT64_ARRAY); + register_string_modulo_op(PackedStringArray, Variant::PACKED_STRING_ARRAY); + register_string_modulo_op(PackedVector2Array, Variant::PACKED_VECTOR2_ARRAY); + register_string_modulo_op(PackedVector3Array, Variant::PACKED_VECTOR3_ARRAY); + register_string_modulo_op(PackedColorArray, Variant::PACKED_COLOR_ARRAY); register_op>(Variant::OP_POWER, Variant::INT, Variant::INT); register_op>(Variant::OP_POWER, Variant::INT, Variant::FLOAT); @@ -498,7 +512,7 @@ void Variant::_register_variant_operators() { register_op>(Variant::OP_EQUAL, Variant::INT, Variant::FLOAT); register_op>(Variant::OP_EQUAL, Variant::FLOAT, Variant::INT); register_op>(Variant::OP_EQUAL, Variant::FLOAT, Variant::FLOAT); - register_op>(Variant::OP_EQUAL, Variant::STRING, Variant::STRING); + register_string_op(OperatorEvaluatorEqual, Variant::OP_EQUAL); register_op>(Variant::OP_EQUAL, Variant::VECTOR2, Variant::VECTOR2); register_op>(Variant::OP_EQUAL, Variant::VECTOR2I, Variant::VECTOR2I); register_op>(Variant::OP_EQUAL, Variant::RECT2, Variant::RECT2); @@ -516,10 +530,6 @@ void Variant::_register_variant_operators() { register_op>(Variant::OP_EQUAL, Variant::PROJECTION, Variant::PROJECTION); register_op>(Variant::OP_EQUAL, Variant::COLOR, Variant::COLOR); - register_op>(Variant::OP_EQUAL, Variant::STRING_NAME, Variant::STRING); - register_op>(Variant::OP_EQUAL, Variant::STRING, Variant::STRING_NAME); - register_op>(Variant::OP_EQUAL, Variant::STRING_NAME, Variant::STRING_NAME); - register_op>(Variant::OP_EQUAL, Variant::NODE_PATH, Variant::NODE_PATH); register_op>(Variant::OP_EQUAL, Variant::RID, Variant::RID); @@ -621,7 +631,7 @@ void Variant::_register_variant_operators() { register_op>(Variant::OP_NOT_EQUAL, Variant::INT, Variant::FLOAT); register_op>(Variant::OP_NOT_EQUAL, Variant::FLOAT, Variant::INT); register_op>(Variant::OP_NOT_EQUAL, Variant::FLOAT, Variant::FLOAT); - register_op>(Variant::OP_NOT_EQUAL, Variant::STRING, Variant::STRING); + register_string_op(OperatorEvaluatorNotEqual, Variant::OP_NOT_EQUAL); register_op>(Variant::OP_NOT_EQUAL, Variant::VECTOR2, Variant::VECTOR2); register_op>(Variant::OP_NOT_EQUAL, Variant::VECTOR2I, Variant::VECTOR2I); register_op>(Variant::OP_NOT_EQUAL, Variant::RECT2, Variant::RECT2); @@ -639,10 +649,6 @@ void Variant::_register_variant_operators() { register_op>(Variant::OP_NOT_EQUAL, Variant::PROJECTION, Variant::PROJECTION); register_op>(Variant::OP_NOT_EQUAL, Variant::COLOR, Variant::COLOR); - register_op>(Variant::OP_NOT_EQUAL, Variant::STRING_NAME, Variant::STRING); - register_op>(Variant::OP_NOT_EQUAL, Variant::STRING, Variant::STRING_NAME); - register_op>(Variant::OP_NOT_EQUAL, Variant::STRING_NAME, Variant::STRING_NAME); - register_op>(Variant::OP_NOT_EQUAL, Variant::NODE_PATH, Variant::NODE_PATH); register_op>(Variant::OP_NOT_EQUAL, Variant::RID, Variant::RID); @@ -895,10 +901,7 @@ void Variant::_register_variant_operators() { register_op(Variant::OP_NOT, Variant::FLOAT, Variant::NIL); register_op(Variant::OP_NOT, Variant::OBJECT, Variant::NIL); - register_op>(Variant::OP_IN, Variant::STRING, Variant::STRING); - register_op>(Variant::OP_IN, Variant::STRING_NAME, Variant::STRING); - register_op>(Variant::OP_IN, Variant::STRING, Variant::STRING_NAME); - register_op>(Variant::OP_IN, Variant::STRING_NAME, Variant::STRING_NAME); + register_string_op(OperatorEvaluatorInStringFind, Variant::OP_IN); register_op(Variant::OP_IN, Variant::NIL, Variant::DICTIONARY); register_op>(Variant::OP_IN, Variant::BOOL, Variant::DICTIONARY); @@ -996,6 +999,7 @@ void Variant::_register_variant_operators() { register_op>(Variant::OP_IN, Variant::FLOAT, Variant::PACKED_FLOAT64_ARRAY); register_op>(Variant::OP_IN, Variant::STRING, Variant::PACKED_STRING_ARRAY); + register_op>(Variant::OP_IN, Variant::STRING_NAME, Variant::PACKED_STRING_ARRAY); register_op>(Variant::OP_IN, Variant::VECTOR2, Variant::PACKED_VECTOR2_ARRAY); register_op>(Variant::OP_IN, Variant::VECTOR3, Variant::PACKED_VECTOR3_ARRAY); @@ -1006,6 +1010,9 @@ void Variant::_register_variant_operators() { register_op(Variant::OP_IN, Variant::STRING_NAME, Variant::OBJECT); } +#undef register_string_op +#undef register_string_modulo_op + void Variant::_unregister_variant_operators() { } -- cgit v1.2.3