store method
Returns back a Builder builder
, and stores there 0 if Dictionary is empty, 1 and a reference otherwise
Throws 'Key/Value serializer is not defined' if correspondingly neither key
/value
nor internal _key/_value are defined and not null
Implementation
Builder store(
Builder builder, [
DictionaryKey<K>? key,
DictionaryValue<V>? value,
]) {
if (_map.isEmpty) {
builder.storeBit(0);
return builder;
}
var resolvedKey = key ?? _key;
var resolvedValue = value ?? _value;
if (resolvedKey == null) {
throw 'Key serializer is not defined';
}
if (resolvedValue == null) {
throw 'Value serializer is not defined';
}
var prepared = <BigInt, V>{};
for (final entry in _map.entries) {
var sk = resolvedKey.serialize(deserializeInternalKey(entry.key) as K);
prepared[sk] = entry.value;
}
builder.storeBit(1);
var dd = beginCell();
serializeDict(prepared, resolvedKey.bits, resolvedValue.serialize, dd);
builder.storeRef(dd.endCell());
return builder;
}