// Copyright (C) 2014 by Xiao Shaun Wang package com.oblivm.backend.oram; import com.oblivm.backend.util.Utils; public class PlainBlock { public long iden; public long pos; public boolean[] data; public boolean isDummy; public PlainBlock(long iden, long pos, boolean[] data, boolean isDummy) { this.iden = iden; this.pos = pos; this.data = data; this.isDummy = isDummy; } public boolean[] toBooleanArray(int lengthOfIden, int lengthOfPos) { boolean[] result = new boolean[lengthOfIden + lengthOfPos + data.length + 1]; System.arraycopy(Utils.fromLong(iden, lengthOfIden), 0, result, 0, lengthOfIden); System.arraycopy(Utils.fromLong(pos, lengthOfIden), 0, result, lengthOfIden, lengthOfPos); System.arraycopy(data, 0, result, lengthOfPos + lengthOfIden, data.length); result[result.length - 1] = isDummy; return result; } static public boolean[] toBooleanArray(PlainBlock[] blocks, int lengthOfIden, int lengthOfPos) { int blockSize = (lengthOfIden + lengthOfPos + blocks[0].data.length + 1); boolean[] result = new boolean[blockSize * blocks.length]; for (int i = 0; i < blocks.length; ++i) { boolean[] tmp = blocks[i].toBooleanArray(lengthOfIden, lengthOfPos); System.arraycopy(tmp, 0, result, i * blockSize, blockSize); } return result; } }