package it.cavallium.dbengine.database.collections; import it.cavallium.dbengine.buffers.Buf; import it.cavallium.dbengine.client.CompositeSnapshot; import it.cavallium.dbengine.database.LLDictionary; import it.cavallium.dbengine.database.collections.DatabaseEmpty.Nothing; import it.cavallium.dbengine.database.serialization.Serializer; import it.cavallium.dbengine.database.serialization.SerializerFixedBinaryLength; import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; import java.util.Set; import java.util.function.Function; import org.jetbrains.annotations.Nullable; @SuppressWarnings("unused") public class DatabaseSetDictionaryHashed extends DatabaseMapDictionaryHashed { protected DatabaseSetDictionaryHashed(LLDictionary dictionary, @Nullable Buf prefixKeySupplier, Serializer keySuffixSerializer, Function keySuffixHashFunction, SerializerFixedBinaryLength keySuffixHashSerializer) { super(dictionary, prefixKeySupplier, keySuffixSerializer, DatabaseEmpty.nothingSerializer(), keySuffixHashFunction, keySuffixHashSerializer ); } public static DatabaseSetDictionaryHashed simple(LLDictionary dictionary, Serializer keySerializer, Function keyHashFunction, SerializerFixedBinaryLength keyHashSerializer) { return new DatabaseSetDictionaryHashed<>(dictionary, null, keySerializer, keyHashFunction, keyHashSerializer ); } public static DatabaseSetDictionaryHashed tail(LLDictionary dictionary, @Nullable Buf prefixKeySupplier, Serializer keySuffixSerializer, Function keyHashFunction, SerializerFixedBinaryLength keyHashSerializer) { return new DatabaseSetDictionaryHashed<>(dictionary, prefixKeySupplier, keySuffixSerializer, keyHashFunction, keyHashSerializer ); } public Set getKeySet(@Nullable CompositeSnapshot snapshot) { var v = get(snapshot); return v != null ? v.keySet() : null; } public Set setAndGetPreviousKeySet(Set value) { var hm = new Object2ObjectLinkedOpenHashMap(); for (T t : value) { hm.put(t, DatabaseEmpty.NOTHING); } var v = setAndGetPrevious(hm); return v != null ? v.keySet() : null; } public Set clearAndGetPreviousKeySet() { var v = clearAndGetPrevious(); return v != null ? v.keySet() : null; } }