package com.jpexs.decompiler.flash.amf.amf3.types; import com.jpexs.decompiler.flash.amf.amf3.ListMap; import com.jpexs.decompiler.flash.amf.amf3.WithSubValues; import com.jpexs.decompiler.flash.exporters.amf.amf3.Amf3Exporter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class DictionaryType extends ListMap<Object, Object> implements WithSubValues, Amf3ValueType { private final boolean weakKeys; public DictionaryType(boolean weakKeys) { this(weakKeys, new HashMap<>()); } public DictionaryType(boolean weakKeys, Map<Object, Object> entries) { super(true /*IdentityMap*/, entries); this.weakKeys = weakKeys; //TODO? Really make the Map weak - something like WeakIdentityMap - but is it neccessary for serialization? } @Override public List<Object> getSubValues() { List<Object> ret = new ArrayList<>(); ret.addAll(keySet()); ret.addAll(values()); return ret; } @Override public String toString() { return Amf3Exporter.amfToString(this); } public boolean hasWeakKeys() { return weakKeys; } }