NumberList(int elSize) throws IOException { dataFile = File.createTempFile("NBProfiler", ".ref"); // NOI18N data = new RandomAccessFile(dataFile, "rw"); // NOI18N numberSize = elSize; blockCache = new BlockLRUCache<Long, byte[]>(); dirtyBlocks = new HashSet<Long>(100000); blockSize = (NUMBERS_IN_BLOCK + 1) * numberSize; dataFile.deleteOnExit(); addBlock(); // first block is unused, since it starts at offset 0 }
long addFirstNumber(long number1,long number2) throws IOException { long blockOffset = addBlock(); byte[] block = getBlock(blockOffset); writeNumber(blockOffset,block,0,number1); writeNumber(blockOffset,block,1,number2); return blockOffset; }
long addNumber(long startOffset,long number) throws IOException { int slot; byte[] block = getBlock(startOffset); for (slot=0;slot<NUMBERS_IN_BLOCK;slot++) { long el = readNumber(block,slot); if (el == 0L) { writeNumber(startOffset,block,slot,number); return startOffset; } if (el == number) { // number is already in the list return startOffset; // do nothing } } long nextBlock = addBlock(); // create next blok block = getBlock(nextBlock); writeNumber(nextBlock,block,slot,startOffset); // put next block in front of old block writeNumber(nextBlock,block,0,number); // write number to first position in the new block return nextBlock; }
NumberList(int elSize) throws IOException { dataFile = File.createTempFile("NBProfiler", ".ref"); // NOI18N data = new RandomAccessFile(dataFile, "rw"); // NOI18N numberSize = elSize; blockCache = new BlockLRUCache(); dirtyBlocks = new HashSet(100000); blockSize = (NUMBERS_IN_BLOCK + 1) * numberSize; dataFile.deleteOnExit(); addBlock(); // first block is unused, since it starts at offset 0 }
NumberList(int elSize) throws IOException { dataFile = File.createTempFile("NBProfiler", ".ref"); // NOI18N data = new RandomAccessFile(dataFile, "rw"); // NOI18N numberSize = elSize; blockCache = new BlockLRUCache<Long, byte[]>(); dirtyBlocks = new HashSet<Long>(100000); blockSize = (NUMBERS_IN_BLOCK + 1) * numberSize; dataFile.deleteOnExit(); addBlock(); // first block is unused, since it starts at offset 0 }
long addFirstNumber(long number1,long number2) throws IOException { long blockOffset = addBlock(); byte[] block = getBlock(blockOffset); writeNumber(blockOffset,block,0,number1); writeNumber(blockOffset,block,1,number2); return blockOffset; }
long addFirstNumber(long number1,long number2) throws IOException { long blockOffset = addBlock(); byte[] block = getBlock(blockOffset); writeNumber(blockOffset,block,0,number1); writeNumber(blockOffset,block,1,number2); return blockOffset; }
long addNumber(long startOffset,long number) throws IOException { int slot; byte[] block = getBlock(startOffset); for (slot=0;slot<NUMBERS_IN_BLOCK;slot++) { long el = readNumber(block,slot); if (el == 0L) { writeNumber(startOffset,block,slot,number); return startOffset; } if (el == number) { // number is already in the list return startOffset; // do nothing } } long nextBlock = addBlock(); // create next blok block = getBlock(nextBlock); writeNumber(nextBlock,block,slot,startOffset); // put next block in front of old block writeNumber(nextBlock,block,0,number); // write number to first position in the new block return nextBlock; }
long addNumber(long startOffset,long number) throws IOException { int slot; byte[] block = getBlock(startOffset); for (slot=0;slot<NUMBERS_IN_BLOCK;slot++) { long el = readNumber(block,slot); if (el == 0L) { writeNumber(startOffset,block,slot,number); return startOffset; } if (el == number) { // number is already in the list return startOffset; // do nothing } } long nextBlock = addBlock(); // create next blok block = getBlock(nextBlock); writeNumber(nextBlock,block,slot,startOffset); // put next block in front of old block writeNumber(nextBlock,block,0,number); // write number to first position in the new block return nextBlock; }