private int parseMetaData(Map<EntryMetaData,Object> metadata, int baseOffset) { assert hasMetaData(); for (EntryMetaData meta : metaDataSchema) { MetaDataSerializer s = getSerializer(meta); Object d = s.read(data,baseOffset); baseOffset+=s.getByteLength(d); metadata.put(meta,d); } return baseOffset; }
private static<D,K> int getMetaDataSize(EntryMetaData[] schema, D entry, StaticArrayEntry.GetColVal<D,K> metaGetter) { int dataSize = 0; if (schema.length>0) { assert schema.length==metaGetter.getMetaSchema(entry).length; for (EntryMetaData meta : schema) { Object data = metaGetter.getMetaData(entry,meta); assert data!=null; dataSize+=getSerializer(meta).getByteLength(data); } } return dataSize; }
private static<D,K> int writeMetaData(byte[] data, int startPos, EntryMetaData[] schema, D entry, StaticArrayEntry.GetColVal<D,K> metaGetter) { if (schema.length==0) return startPos; for (EntryMetaData meta : schema) { Object d = metaGetter.getMetaData(entry,meta); assert d!=null; MetaDataSerializer s = getSerializer(meta); s.write(data,startPos,d); startPos+=s.getByteLength(d); } return startPos; }