Skip to content

Commit

Permalink
Merge pull request #49287 from reduz/expose-variant-internal-binders
Browse files Browse the repository at this point in the history
Make some Variant internal functions public.
  • Loading branch information
akien-mga authored Jun 18, 2021
2 parents 9b0800c + b5f1e88 commit a9c53fa
Show file tree
Hide file tree
Showing 8 changed files with 2,233 additions and 2,150 deletions.
538 changes: 1 addition & 537 deletions core/variant/variant_construct.cpp

Large diffs are not rendered by default.

572 changes: 572 additions & 0 deletions core/variant/variant_construct.h

Large diffs are not rendered by default.

1,337 changes: 1 addition & 1,336 deletions core/variant/variant_op.cpp

Large diffs are not rendered by default.

1,316 changes: 1,316 additions & 0 deletions core/variant/variant_op.h

Large diffs are not rendered by default.

279 changes: 2 additions & 277 deletions core/variant/variant_setget.cpp

Large diffs are not rendered by default.

332 changes: 332 additions & 0 deletions core/variant/variant_setget.h

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions modules/gdscript/gdscript_analyzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3447,6 +3447,7 @@ GDScriptParser::DataType GDScriptAnalyzer::get_operation_type(Variant::Operator
}

r_valid = true;
result.type_source = GDScriptParser::DataType::ANNOTATED_INFERRED;

result.kind = GDScriptParser::DataType::BUILTIN;
result.builtin_type = Variant::get_operator_return_type(p_operation, a_type, b_type);
Expand Down
8 changes: 8 additions & 0 deletions modules/gdscript/gdscript_byte_codegen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -554,6 +554,14 @@ void GDScriptByteCodeGenerator::write_unary_operator(const Address &p_target, Va

void GDScriptByteCodeGenerator::write_binary_operator(const Address &p_target, Variant::Operator p_operator, const Address &p_left_operand, const Address &p_right_operand) {
if (HAS_BUILTIN_TYPE(p_left_operand) && HAS_BUILTIN_TYPE(p_right_operand)) {
if (p_target.mode == Address::TEMPORARY) {
Variant::Type result_type = Variant::get_operator_return_type(p_operator, p_left_operand.type.builtin_type, p_right_operand.type.builtin_type);
Variant::Type temp_type = temporaries[p_target.address].type;
if (result_type != temp_type) {
write_type_adjust(p_target, result_type);
}
}

// Gather specific operator.
Variant::ValidatedOperatorEvaluator op_func = Variant::get_validated_operator_evaluator(p_operator, p_left_operand.type.builtin_type, p_right_operand.type.builtin_type);

Expand Down

0 comments on commit a9c53fa

Please sign in to comment.