package org.warp.jcwdb; import it.unimi.dsi.fastutil.longs.LongArrayList; public class DBLightArrayListParser extends DBTypeParserImpl> { private final JCWDatabase db; public DBLightArrayListParser(JCWDatabase db) { this.db = db; } public DBReader> getReader() { return (i, size) -> { LongArrayList internalList = new LongArrayList(); long max = size / Long.BYTES; for (int item = 0; item < max; item++) { long itm = i.readLong(); internalList.add(itm); } return new LightArrayList(db, internalList); }; } public DBDataOutput> getWriter(final LightArrayList value) { final int elementsCount = value.size(); return DBDataOutput.create((o) -> { LongArrayList list = value.internalList; for (int i = 0; i < elementsCount; i++) { o.writeLong(list.getLong(i)); } }, DBStandardTypes.LIGHT_LIST_ARRAY, elementsCount * Long.BYTES, calculateHash(value)); } @Override public long calculateHash(LightArrayList value) { return value.internalList.hashCode(); } @Override public String toString() { return "DBLightArrayListParser{" + "db=" + db + '}'; } }