/* * It is assumed that the argument does hold a property block - all zeros is * a valid (not in use) block, so even if the Bits object has been exhausted a * result is returned, that has inUse() return false. Also, the argument is not * touched. */ private PropertyBlock getPropertyBlock(Buffer buffer) { long header = buffer.getLong(); PropertyType type = PropertyType.getPropertyType(header, true); if (type == null) { return null; } PropertyBlock toReturn = new PropertyBlock(); // toReturn.setInUse( true ); int numBlocks = type.calculateNumberOfBlocksUsed(header); long[] blockData = new long[numBlocks]; blockData[0] = header; // we already have that for (int i = 1; i < numBlocks; i++) { blockData[i] = buffer.getLong(); } toReturn.setValueBlocks(blockData); return toReturn; }