blob: 26af53cdc5b43332f8f84bba7497f2357cdb0e14 [file] [log] [blame]
package org.eclipse.jdt.internal.core.nd.db;
public class LargeBlock {
public static final int SIZE_OFFSET = 0;
public static final int SIZE_OF_SIZE_FIELD = Database.INT_SIZE;
/**
* Size of the header for a large block. The header consists of a int which holds the number of chunks in the block.
* It is negative for an allocated block and positive for an unallocated block. The header is located at the start
* of the large block.
*/
public static final int HEADER_SIZE = Math.max(Database.INT_SIZE, Database.BLOCK_SIZE_DELTA);
public static final int ENTRIES_IN_CHILD_TABLE = SIZE_OF_SIZE_FIELD * 8;
public static final int CHILD_TABLE_OFFSET = HEADER_SIZE;
public static final int PARENT_OFFSET = CHILD_TABLE_OFFSET + (Database.INT_SIZE * ENTRIES_IN_CHILD_TABLE);
public static final int PREV_BLOCK_OFFSET = PARENT_OFFSET + Database.INT_SIZE;
public static final int NEXT_BLOCK_OFFSET = PREV_BLOCK_OFFSET + Database.INT_SIZE;
public static final int UNALLOCATED_HEADER_SIZE = NEXT_BLOCK_OFFSET + Database.INT_SIZE;
/**
* The large block footer is located at the end of the last chunk in the large block. It is an exact copy of the
* header.
*/
public static final int FOOTER_SIZE = HEADER_SIZE;
}