MCPcopy Create free account
hub / github.com/Redot-Engine/redot-engine / reference

Method reference

core/variant/variant.cpp:716–779  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

714};
715
716void Variant::reference(const Variant &p_variant) {
717 using PackedArrayCreate = PackedArrayRefBase *(*)();
718
719 static const std::array<
720 PackedArrayCreate,
721 Variant::VARIANT_MAX - Variant::PACKED_BYTE_ARRAY>
722 PACKED_ARRAY_CREATE_TBL = {
723 packedArrayCreate<uint8_t>,
724 packedArrayCreate<int32_t>,
725 packedArrayCreate<int64_t>,
726 packedArrayCreate<float>,
727 packedArrayCreate<double>,
728 packedArrayCreate<String>,
729 packedArrayCreate<Vector2>,
730 packedArrayCreate<Vector3>,
731 packedArrayCreate<Color>,
732 packedArrayCreate<Vector4>,
733 };
734 void *dst;
735 void *src;
736 if (type == OBJECT && p_variant.type == OBJECT) {
737 _get_obj().ref(p_variant._get_obj(), is_weak_ref, p_variant.is_weak_ref);
738 return;
739 }
740 clear();
741 type = p_variant.type;
742 switch (p_variant.type) {
743 case TRANSFORM2D:
744 case AABB:
745 case BASIS:
746 case TRANSFORM3D:
747 case PROJECTION:
748 _data._ptr = BUCKET_ALLOC_FN_TBL[p_variant.type](BUCKET_TBL[p_variant.type]);
749 dst = _data._ptr;
750 src = p_variant._data._ptr;
751 break;
752 case OBJECT:
753 memnew_placement(_data._mem, ObjData);
754 _get_obj().ref(p_variant._get_obj(), is_weak_ref, p_variant.is_weak_ref);
755 [[fallthrough]];
756 case NIL:
757 return;
758 case PACKED_BYTE_ARRAY:
759 case PACKED_INT32_ARRAY:
760 case PACKED_INT64_ARRAY:
761 case PACKED_FLOAT32_ARRAY:
762 case PACKED_FLOAT64_ARRAY:
763 case PACKED_STRING_ARRAY:
764 case PACKED_VECTOR2_ARRAY:
765 case PACKED_VECTOR3_ARRAY:
766 case PACKED_COLOR_ARRAY:
767 case PACKED_VECTOR4_ARRAY:
768 _data.packed_array = (p_variant._data.packed_array)->reference();
769 if (!_data.packed_array) {
770 _data.packed_array = PACKED_ARRAY_CREATE_TBL[p_variant.type - PACKED_BYTE_ARRAY]();
771 }
772 return;
773 default:

Calls 2

clearFunction · 0.85
refMethod · 0.45

Tested by

no test coverage detected