diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2017-09-24 15:59:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-24 15:59:59 +0200 |
commit | ebaf2d89e9d3548dec3408ebc943f98a1f4466ad (patch) | |
tree | 4f355fe2582d083231a1a40b616d3c835ebe63d0 | |
parent | 4ac7f5acf98ad08fb826979a0baa3d5e731a73a3 (diff) | |
parent | 7b492e6a23322cfd8630521e30804a6f26709f08 (diff) |
Merge pull request #11473 from hpvb/fix-11466
Implement operator != on Pool*Array types
-rw-r--r-- | core/variant_op.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/core/variant_op.cpp b/core/variant_op.cpp index 8755897eed..feaddb3a3c 100644 --- a/core/variant_op.cpp +++ b/core/variant_op.cpp @@ -334,6 +334,13 @@ bool Variant::booleanize() const { DEFAULT_OP_ARRAY_OP_BODY(m_prefix, m_op_name, m_name, m_type, !=, !=, true, false, false) \ } +#define DEFAULT_OP_ARRAY_NEQ(m_prefix, m_op_name, m_name, m_type) \ + CASE_TYPE(m_prefix, m_op_name, m_name) { \ + if (p_b.type == NIL) \ + _RETURN(true) \ + DEFAULT_OP_ARRAY_OP_BODY(m_prefix, m_op_name, m_name, m_type, !=, ==, true, true, false) \ + } + #define DEFAULT_OP_ARRAY_LT(m_prefix, m_op_name, m_name, m_type) \ DEFAULT_OP_ARRAY_OP(m_prefix, m_op_name, m_name, m_type, <, !=, false, a_len < array_b.size(), true) @@ -555,14 +562,13 @@ void Variant::evaluate(const Operator &p_op, const Variant &p_a, DEFAULT_OP_STR_NULL(math, OP_NOT_EQUAL, NODE_PATH, !=, NodePath); DEFAULT_OP_LOCALMEM_NULL(math, OP_NOT_EQUAL, _RID, !=, RID); - CASE_TYPE(math, OP_NOT_EQUAL, POOL_BYTE_ARRAY); - CASE_TYPE(math, OP_NOT_EQUAL, POOL_INT_ARRAY); - CASE_TYPE(math, OP_NOT_EQUAL, POOL_REAL_ARRAY); - CASE_TYPE(math, OP_NOT_EQUAL, POOL_STRING_ARRAY); - CASE_TYPE(math, OP_NOT_EQUAL, POOL_VECTOR2_ARRAY); - CASE_TYPE(math, OP_NOT_EQUAL, POOL_VECTOR3_ARRAY); - CASE_TYPE(math, OP_NOT_EQUAL, POOL_COLOR_ARRAY); - _RETURN_FAIL; + DEFAULT_OP_ARRAY_NEQ(math, OP_NOT_EQUAL, POOL_BYTE_ARRAY, uint8_t); + DEFAULT_OP_ARRAY_NEQ(math, OP_NOT_EQUAL, POOL_INT_ARRAY, int); + DEFAULT_OP_ARRAY_NEQ(math, OP_NOT_EQUAL, POOL_REAL_ARRAY, real_t); + DEFAULT_OP_ARRAY_NEQ(math, OP_NOT_EQUAL, POOL_STRING_ARRAY, String); + DEFAULT_OP_ARRAY_NEQ(math, OP_NOT_EQUAL, POOL_VECTOR2_ARRAY, Vector2); + DEFAULT_OP_ARRAY_NEQ(math, OP_NOT_EQUAL, POOL_VECTOR3_ARRAY, Vector3); + DEFAULT_OP_ARRAY_NEQ(math, OP_NOT_EQUAL, POOL_COLOR_ARRAY, Color); } SWITCH_OP(math, OP_LESS, p_a.type) { |