diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2023-05-08 12:20:33 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-05-08 12:20:33 +0200 |
commit | e85f6871ba9bf8993399136efbad5617dba11b0a (patch) | |
tree | 1ba7722a1cd5d1d2fbebffc72a2a77978ee519ec /core/io/packed_data_container.cpp | |
parent | 7e6f22b13dc71fdaf71978140968aaff1027bae4 (diff) | |
parent | c08e96ef0dd8f048699b1ba00e2ce7fee12edaa8 (diff) | |
download | redot-engine-e85f6871ba9bf8993399136efbad5617dba11b0a.tar.gz |
Merge pull request #76561 from KoBeWi/most_obscure_class_that_has_ever_existed
Improve and document PackedDataContainer
Diffstat (limited to 'core/io/packed_data_container.cpp')
-rw-r--r-- | core/io/packed_data_container.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/core/io/packed_data_container.cpp b/core/io/packed_data_container.cpp index 6c16401f17..ce4edb18fe 100644 --- a/core/io/packed_data_container.cpp +++ b/core/io/packed_data_container.cpp @@ -320,6 +320,8 @@ uint32_t PackedDataContainer::_pack(const Variant &p_data, Vector<uint8_t> &tmpd } Error PackedDataContainer::pack(const Variant &p_data) { + ERR_FAIL_COND_V_MSG(p_data.get_type() != Variant::ARRAY && p_data.get_type() != Variant::DICTIONARY, ERR_INVALID_DATA, "PackedDataContainer can pack only Array and Dictionary type."); + Vector<uint8_t> tmpdata; HashMap<String, uint32_t> string_cache; _pack(p_data, tmpdata, string_cache); @@ -361,7 +363,9 @@ void PackedDataContainer::_bind_methods() { ClassDB::bind_method(D_METHOD("pack", "value"), &PackedDataContainer::pack); ClassDB::bind_method(D_METHOD("size"), &PackedDataContainer::size); - ADD_PROPERTY(PropertyInfo(Variant::PACKED_BYTE_ARRAY, "__data__"), "_set_data", "_get_data"); + BIND_METHOD_ERR_RETURN_DOC("pack", ERR_INVALID_DATA); + + ADD_PROPERTY(PropertyInfo(Variant::PACKED_BYTE_ARRAY, "__data__", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_INTERNAL), "_set_data", "_get_data"); } ////////////////// @@ -378,16 +382,11 @@ Variant PackedDataContainerRef::_iter_get(const Variant &p_iter) { return from->_iter_get_ofs(p_iter, offset); } -bool PackedDataContainerRef::_is_dictionary() const { - return from->_type_at_ofs(offset) == PackedDataContainer::TYPE_DICT; -} - void PackedDataContainerRef::_bind_methods() { ClassDB::bind_method(D_METHOD("size"), &PackedDataContainerRef::size); ClassDB::bind_method(D_METHOD("_iter_init"), &PackedDataContainerRef::_iter_init); ClassDB::bind_method(D_METHOD("_iter_get"), &PackedDataContainerRef::_iter_get); ClassDB::bind_method(D_METHOD("_iter_next"), &PackedDataContainerRef::_iter_next); - ClassDB::bind_method(D_METHOD("_is_dictionary"), &PackedDataContainerRef::_is_dictionary); } Variant PackedDataContainerRef::getvar(const Variant &p_key, bool *r_valid) const { |