diff options
Diffstat (limited to 'core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/impl/FileListBlock.java')
-rw-r--r-- | core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/impl/FileListBlock.java | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/impl/FileListBlock.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/impl/FileListBlock.java deleted file mode 100644 index 29fa5969aa7..00000000000 --- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/impl/FileListBlock.java +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.cdt.internal.core.index.impl; - -import java.io.IOException; -import java.util.ArrayList; - -public class FileListBlock extends Block { - - protected int offset= 0; - protected String prevPath= null; - protected String[] paths= null; - - public FileListBlock(int blockSize) { - super(blockSize); - } - /** - * add the name of the indexedfile to the buffr of the field. - * The name is not the entire name of the indexedfile, but the - * difference between its name and the name of the previous indexedfile ... - */ - public boolean addFile(IndexedFile indexedFile) { - int offset= this.offset; - if (isEmpty()) { - field.putInt4(offset, indexedFile.getFileNumber()); - offset += 4; - } - String path= indexedFile.getPath(); - int prefixLen= prevPath == null ? 0 : Util.prefixLength(prevPath, path); - int sizeEstimate= 2 + 2 + (path.length() - prefixLen) * 3; - if (offset + sizeEstimate > blockSize - 2) - return false; - field.putInt2(offset, prefixLen); - offset += 2; - char[] chars= new char[path.length() - prefixLen]; - path.getChars(prefixLen, path.length(), chars, 0); - offset += field.putUTF(offset, chars); - this.offset= offset; - prevPath= path; - return true; - } - public void clear() { - reset(); - super.clear(); - } - public void flush() { - if (offset > 0) { - field.putInt2(offset, 0); - field.putInt2(offset + 2, 0); - offset= 0; - } - } - public IndexedFile getFile(int fileNum) throws IOException { - IndexedFile resp= null; - try { - String[] paths= getPaths(); - int i= fileNum - field.getInt4(0); - if(i >= paths.length) { //fileNum was too large - return null; - } - resp= new IndexedFile(paths[i], fileNum); - } catch (Exception e) { - //Cover ourselves in case something happens getting the indexed file - } - return resp; - } - /** - * Creates a vector of paths reading the buffer of the field. - */ - protected String[] getPaths() throws IOException { - if (paths == null) { - ArrayList v= new ArrayList(); - int offset= 4; - char[] prevPath= null; - for (;;) { - int prefixLen= field.getUInt2(offset); - offset += 2; - int utfLen= field.getUInt2(offset); - char[] path= field.getUTF(offset); - offset += 2 + utfLen; - if (prefixLen != 0) { - char[] temp= new char[prefixLen + path.length]; - System.arraycopy(prevPath, 0, temp, 0, prefixLen); - System.arraycopy(path, 0, temp, prefixLen, path.length); - path= temp; - } - if (path.length == 0) - break; - v.add(new String(path)); - prevPath= path; - } - paths= new String[v.size()]; - v.toArray(paths); - } - return paths; - } - public boolean isEmpty() { - return offset == 0; - } - public void reset() { - offset= 0; - prevPath= null; - } -} - |