1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Refactoring of SourceIndexer to use new IIndexerOutput

Refactoring of IndexerOutput
This commit is contained in:
Bogdan Gheorghe 2005-05-31 17:25:47 +00:00
parent 657c53d31e
commit cee31b91f4
4 changed files with 162 additions and 296 deletions

View file

@ -18,68 +18,14 @@ import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
*/
public interface IIndexerOutput {
public void addEnumtorDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addEnumtorRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addMacroDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addMacroRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addFieldDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addFieldRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addMethodDecl(int indexedFileNumber, char [][] name, /*char[][] parameterTypes,*/ int offset, int offsetLength, int offsetType);
public void addMethodDefn(int indexedFileNumber, char [][] name, /*char[][] parameterTypes,*/int offset, int offsetLength, int offsetType);
public void addMethodRef(int indexedFileNumber, char [][] name, /*char[][] parameterTypes,*/ int offset, int offsetLength, int offsetType);
public void addFunctionDecl(int indexedFileNumber, char [][] name, /*char[][] parameterTypes,*/int offset, int offsetLength, int offsetType);
public void addFunctionDefn(int indexedFileNumber, char [][] name, /*char[][] parameterTypes,*/int offset, int offsetLength, int offsetType);
public void addFunctionRef(int indexedFileNumber, char [][] name, /*char[][] parameterTypes,*/int offset, int offsetLength, int offsetType);
public void addNamespaceDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addNamespaceRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addIncludeRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addStructDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addStructRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addTypedefDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addTypedefRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addUnionDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addUnionRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addVariableDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addVariableRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addClassDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addClassRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addEnumDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addEnumRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addDerivedDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addDerivedRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addFriendDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addFriendRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addFwd_ClassDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addFwd_ClassRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addFwd_StructDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addFwd_StructRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addFwd_UnionDecl(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addFwd_UnionRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addIndexEntry(IIndexEntry indexEntry);
public IndexedFileEntry getIndexedFile(String path);
public IndexedFileEntry addIndexedFile(String path);
//For Dep Tree
// public void addIncludeRef(int indexedFileNumber, char[] word);
public void addIncludeRef(int indexedFileNumber, char [][] name, int offset, int offsetLength, int offsetType);
public void addIncludeRef(int indexedFileNumber, String word);
public void addRelatives(int indexedFileNumber, String inclusion, String parent);
}

View file

@ -89,154 +89,10 @@ public class IndexerOutput implements ICIndexStorageConstants, IIndexerOutput {
return index.addFile(path);
}
public void addEnumtorDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.ENUMTOR, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addEnumtorRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.ENUMTOR, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addMacroDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.MACRO, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addMacroRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.MACRO, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addFieldDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.FIELD, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addFieldRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.FIELD, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addMethodDecl(int indexedFileNumber, char[][] name, /*char[][] parameterTypes,*/ int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.METHOD, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addMethodDefn(int indexedFileNumber, char[][] name, /*char[][] parameterTypes,*/ int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.METHOD, IIndex.DEFINITION, offset,offsetLength, offsetType);
}
public void addMethodRef(int indexedFileNumber, char[][] name, /*char[][] parameterTypes,*/int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.METHOD, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addFunctionDecl(int indexedFileNumber, char[][] name,/*char[][] parameterTypes,*/ int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.FUNCTION, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addFunctionDefn(int indexedFileNumber, char[][] name, /*char[][] parameterTypes,*/ int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.FUNCTION, IIndex.DEFINITION, offset,offsetLength, offsetType);
}
public void addFunctionRef(int indexedFileNumber, char[][] name, /*char[][] parameterTypes,*/int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.FUNCTION, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addNamespaceDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.NAMESPACE, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addNamespaceRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.NAMESPACE, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addIncludeRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, IIndex.INCLUDE, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addStructDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, STRUCT_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addStructRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, STRUCT_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addTypedefDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, TYPEDEF_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addTypedefRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, TYPEDEF_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addUnionDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, UNION_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addUnionRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, UNION_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addVariableDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, VAR_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addVariableRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, VAR_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addClassDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, CLASS_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addClassRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, CLASS_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addEnumDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, ENUM_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addEnumRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, ENUM_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addDerivedDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, DERIVED_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addDerivedRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, DERIVED_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addFriendDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, FRIEND_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addFriendRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, FRIEND_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addFwd_ClassDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, FWD_CLASS_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addFwd_ClassRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, FWD_CLASS_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addFwd_StructDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, FWD_STRUCT_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addFwd_StructRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, FWD_STRUCT_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
public void addFwd_UnionDecl(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, FWD_UNION_SUFFIX, IIndex.DECLARATION, offset,offsetLength, offsetType);
}
public void addFwd_UnionRef(int indexedFileNumber, char[][] name, int offset, int offsetLength, int offsetType) {
addRef(indexedFileNumber, name, FWD_UNION_SUFFIX, IIndex.REFERENCE, offset,offsetLength, offsetType);
}
/**
* Type entries are encoded as follow: 'typeDecl/' ('C' | 'S' | 'U' | 'E' ) '/' TypeName ['/' Qualifier]*
*/
@ -381,49 +237,5 @@ public class IndexerOutput implements ICIndexStorageConstants, IIndexerOutput {
addRef(indexedFileNumber, name, meta_type, entryType, nameOffset,nameOffsetLength, nameOffsetType);
}
}
// public static final char[] encodeEntry(char[][] elementName, int entryType, int encodeType) {
// // Temporarily
// if (elementName == null) {
// return "NPE".toCharArray(); //$NON-NLS-1$
// }
// int pos, nameLength = 0;
// for (int i=0; i < elementName.length; i++){
// char[] namePart = elementName[i];
// nameLength += namePart.length;
// }
// char[][] encodedTypeNames = null;
// if (encodeType == IIndex.DECLARATION) {
// encodedTypeNames = IIndexEncodingConstants.encodedTypeNames_Decl;
// }
// else if (encodeType == IIndex.REFERENCE) {
// encodedTypeNames = IIndexEncodingConstants.encodedTypeNames_Ref;
// }
// char[] encodedTypeName = encodedTypeNames[entryType];
//
// //char[] has to be of size - [type length + length of the name (including qualifiers) +
// //separators (need one less than fully qualified name length)
// char[] result = new char[encodedTypeName.length + nameLength + elementName.length - 1];
// System.arraycopy(encodedTypeName, 0, result, 0, pos = encodedTypeName.length);
// if (elementName.length > 0) {
// //Extract the name first
// char [] tempName = elementName[elementName.length-1];
// System.arraycopy(tempName, 0, result, pos, tempName.length);
// pos += tempName.length;
// }
// //Extract the qualifiers
// for (int i=elementName.length - 2; i>=0; i--){
// result[pos++] = SEPARATOR;
// char [] tempName = elementName[i];
// System.arraycopy(tempName, 0, result, pos, tempName.length);
// pos+=tempName.length;
// }
//
// if (AbstractIndexer.VERBOSE)
// AbstractIndexer.verbose(new String(result));
//
// return result;
// }
}

View file

@ -162,7 +162,6 @@ class CTagEntry{
typeEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
typeEntry.serialize(output);
} else if (kind.equals(CTagsConsoleParser.MEMBER)){
output.addFieldDecl(fileNum, fullName, lineNumber, 1, IIndex.LINE);
NamedEntry namedEntry = new NamedEntry(IIndex.FIELD, IIndex.DECLARATION,fullName,getModifiers(),fileNum);
namedEntry.setNameOffset(lineNumber, 1, IIndex.LINE);
namedEntry.serialize(output);

View file

@ -64,7 +64,10 @@ import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
import org.eclipse.cdt.core.parser.ast.IASTVariable;
import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
import org.eclipse.cdt.internal.core.index.FunctionEntry;
import org.eclipse.cdt.internal.core.index.IIndex;
import org.eclipse.cdt.internal.core.index.NamedEntry;
import org.eclipse.cdt.internal.core.index.TypeEntry;
import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
import org.eclipse.cdt.internal.core.index.impl.IndexDelta;
import org.eclipse.core.resources.IFile;
@ -266,7 +269,10 @@ public class SourceIndexerRunner extends AbstractIndexer {
char[][] baseFullyQualifiedName = baseClassSpec.getFullyQualifiedNameCharArrays();
int offset = baseClassSpec.getNameOffset();
int offsetLength = baseClassSpec.getNameEndOffset() - offset;
output.addDerivedDecl(fileNumber, baseFullyQualifiedName, offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_DERIVED ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
} catch (ASTNotImplementedException e) {}
}
@ -280,14 +286,20 @@ public class SourceIndexerRunner extends AbstractIndexer {
char[][] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedNameCharArrays();
int offset = friendClassSpec.getNameOffset();
int offsetLength = friendClassSpec.getNameEndOffset() - offset;
output.addFriendDecl(fileNumber, baseFullyQualifiedName,offset, offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FRIEND ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset,offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
else if (decl instanceof IASTElaboratedTypeSpecifier){
IASTElaboratedTypeSpecifier friendClassSpec = (IASTElaboratedTypeSpecifier) decl;
char[][] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedNameCharArrays();
int offset = friendClassSpec.getNameOffset();
int offsetLength = friendClassSpec.getNameEndOffset() - offset;
output.addFriendDecl(fileNumber, baseFullyQualifiedName, offset, offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FRIEND ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset,offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
else if (decl instanceof IASTFunction){
@ -300,7 +312,11 @@ public class SourceIndexerRunner extends AbstractIndexer {
int offset = classSpecification.getNameOffset();
int offsetLength = classSpecification.getNameEndOffset() - offset;
output.addClassDecl(fileNumber, classSpecification.getFullyQualifiedNameCharArrays(), offset, offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_CLASS,IIndex.DECLARATION, classSpecification.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
//typeEntry.setBaseTypes(getInherits());
typeEntry.serialize(output);
}
else if (classSpecification.getClassKind().equals(ASTClassKind.STRUCT))
{
@ -315,7 +331,10 @@ public class SourceIndexerRunner extends AbstractIndexer {
char[][] baseFullyQualifiedName = baseClassSpec.getFullyQualifiedNameCharArrays();
int offset = baseClassSpec.getNameOffset();
int offsetLength = baseClassSpec.getNameEndOffset() - offset;
output.addDerivedDecl(fileNumber, baseFullyQualifiedName, offset, offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_DERIVED ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
} catch (ASTNotImplementedException e) {}
}
@ -329,14 +348,20 @@ public class SourceIndexerRunner extends AbstractIndexer {
char[][] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedNameCharArrays();
int offset = friendClassSpec.getNameOffset();
int offsetLength = friendClassSpec.getNameEndOffset() - offset;
output.addFriendDecl(fileNumber, baseFullyQualifiedName, offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FRIEND ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset,offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
else if (decl instanceof IASTElaboratedTypeSpecifier){
IASTElaboratedTypeSpecifier friendClassSpec = (IASTElaboratedTypeSpecifier) decl;
char[][] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedNameCharArrays();
int offset = friendClassSpec.getNameOffset();
int offsetLength = friendClassSpec.getNameEndOffset() - offset;
output.addFriendDecl(fileNumber, baseFullyQualifiedName, offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FRIEND ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset,offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
else if (decl instanceof IASTFunction){
@ -348,13 +373,21 @@ public class SourceIndexerRunner extends AbstractIndexer {
int offset = classSpecification.getNameOffset();
int offsetLength = classSpecification.getNameEndOffset() - offset;
output.addStructDecl(fileNumber, classSpecification.getFullyQualifiedNameCharArrays(), offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_STRUCT,IIndex.DECLARATION, classSpecification.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
//typeEntry.setBaseTypes(getInherits());
typeEntry.serialize(output);
}
else if (classSpecification.getClassKind().equals(ASTClassKind.UNION))
{
int offset = classSpecification.getNameOffset();
int offsetLength = classSpecification.getNameEndOffset() - offset;
output.addUnionDecl(fileNumber, classSpecification.getFullyQualifiedNameCharArrays(), offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_UNION,IIndex.DECLARATION, classSpecification.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset,offsetLength, IIndex.OFFSET);
//typeEntry.setBaseTypes(getInherits());
typeEntry.serialize(output);
}
}
@ -362,8 +395,11 @@ public class SourceIndexerRunner extends AbstractIndexer {
int offset = enumeration.getNameOffset();
int offsetLength = enumeration.getNameEndOffset() - offset;
output.addEnumDecl(fileNumber, enumeration.getFullyQualifiedNameCharArrays(), offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_ENUM ,IIndex.DECLARATION, enumeration.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
Iterator i = enumeration.getEnumerators();
while (i.hasNext())
{
@ -373,8 +409,10 @@ public class SourceIndexerRunner extends AbstractIndexer {
offset = en.getNameOffset();
offsetLength = en.getNameEndOffset() - offset;
output.addEnumtorDecl(fileNumber, enumeratorFullName, offset, offsetLength, IIndex.OFFSET);
NamedEntry namedEntry = new NamedEntry(IIndex.ENUMTOR, IIndex.DECLARATION, enumeratorFullName, 0 /*getModifiers()*/, fileNumber);
namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
namedEntry.serialize(output);
}
}
@ -395,66 +433,98 @@ public class SourceIndexerRunner extends AbstractIndexer {
IASTEnumerator enumerator = (IASTEnumerator)reference.getReferencedElement();
int offset = reference.getOffset();
int offsetLength = enumerator.getNameEndOffset() - enumerator.getNameOffset();
output.addEnumtorRef(fileNumber, createEnumeratorFullyQualifiedName(enumerator),offset,offsetLength, IIndex.OFFSET);
NamedEntry namedEntry = new NamedEntry(IIndex.ENUMTOR, IIndex.REFERENCE, createEnumeratorFullyQualifiedName(enumerator), 0 /*getModifiers()*/, fileNumber);
namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
namedEntry.serialize(output);
}
public void addMacro(IASTMacro macro, int fileNumber) {
char[][] macroName = new char[][] { macro.getNameCharArray() };
int offset = macro.getNameOffset();
int offsetLength = macro.getNameEndOffset() - offset;
output.addMacroDecl(fileNumber, macroName, offset,offsetLength, IIndex.OFFSET);
NamedEntry namedEntry = new NamedEntry(IIndex.MACRO, IIndex.DECLARATION, macroName, 0 /*getModifiers()*/, fileNumber);
namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
namedEntry.serialize(output);
}
public void addEnumerationReference(IASTEnumerationReference reference, int fileNumber) {
IASTEnumerationSpecifier enumeration = (IASTEnumerationSpecifier) reference.getReferencedElement();
int offset = reference.getOffset();
int offsetLength = enumeration.getNameEndOffset() - enumeration.getNameOffset();
output.addEnumRef(fileNumber, enumeration.getFullyQualifiedNameCharArrays(), offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_ENUM ,IIndex.REFERENCE, enumeration.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
public void addVariable(IASTVariable variable, int fileNumber) {
int offset = variable.getNameOffset();
int offsetLength = variable.getNameEndOffset() - offset;
output.addVariableDecl(fileNumber, variable.getFullyQualifiedNameCharArrays(), offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.DECLARATION, variable.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
public void addVariableReference(IASTVariableReference reference, int fileNumber) {
IASTVariable variable = (IASTVariable)reference.getReferencedElement();
int offset = reference.getOffset();
int offsetLength = variable.getNameEndOffset() - variable.getNameOffset();
output.addVariableRef(fileNumber, variable.getFullyQualifiedNameCharArrays(), offset, offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.REFERENCE, variable.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
public void addParameterReference( IASTParameterReference reference, int fileNumber ){
IASTParameterDeclaration parameter = (IASTParameterDeclaration) reference.getReferencedElement();
int offset = reference.getOffset();
int offsetLength = parameter.getNameEndOffset() - parameter.getNameOffset();
output.addVariableRef(fileNumber, new char[][] { parameter.getNameCharArray() }, offset, offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.REFERENCE, new char[][]{parameter.getNameCharArray()}, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
public void addTypedefDeclaration(IASTTypedefDeclaration typedef, int fileNumber) {
int offset = typedef.getNameOffset();
int offsetLength = typedef.getNameEndOffset() - offset;
output.addTypedefDecl(fileNumber,typedef.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_TYPEDEF, IIndex.DECLARATION, typedef.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
public void addFieldDeclaration(IASTField field, int fileNumber) {
int offset = field.getNameOffset();
int offsetLength = field.getNameEndOffset() - offset;
output.addFieldDecl(fileNumber, field.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
NamedEntry namedEntry = new NamedEntry(IIndex.FIELD, IIndex.DECLARATION, field.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
namedEntry.serialize(output);
}
public void addFieldReference(IASTFieldReference reference, int fileNumber) {
IASTField field=(IASTField) reference.getReferencedElement();
int offset = reference.getOffset();
int offsetLength = field.getNameEndOffset() - field.getNameOffset();
output.addFieldRef(fileNumber, field.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
NamedEntry namedEntry = new NamedEntry(IIndex.FIELD, IIndex.REFERENCE, field.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
namedEntry.serialize(output);
}
public void addMethodDeclaration(IASTMethod method, int fileNumber) {
int offset = method.getNameOffset();
int offsetLength = method.getNameEndOffset() - offset;
output.addMethodDecl(fileNumber, method.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
FunctionEntry functionEntry = new FunctionEntry(IIndex.METHOD, IIndex.DECLARATION, method.getFullyQualifiedNameCharArrays(),0 /*getModifiers()*/, fileNumber);
//funEntry.setSignature(getFunctionSignature());
functionEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
functionEntry.serialize(output);
Iterator i=method.getParameters();
while (i.hasNext()){
Object parm = i.next();
@ -462,7 +532,10 @@ public class SourceIndexerRunner extends AbstractIndexer {
IASTParameterDeclaration parmDecl = (IASTParameterDeclaration) parm;
offset = parmDecl.getNameOffset();
offsetLength = parmDecl.getNameEndOffset() - offset;
output.addVariableDecl(fileNumber, new char[][]{parmDecl.getNameCharArray()},offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.DECLARATION, new char[][]{parmDecl.getNameCharArray()}, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
}
}
@ -471,7 +544,11 @@ public class SourceIndexerRunner extends AbstractIndexer {
IASTMethod method = (IASTMethod) reference.getReferencedElement();
int offset = reference.getOffset();
int offsetLength = method.getNameEndOffset() - method.getNameOffset();
output.addMethodRef(fileNumber, method.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
FunctionEntry functionEntry = new FunctionEntry(IIndex.METHOD, IIndex.REFERENCE, method.getFullyQualifiedNameCharArrays(),0 /*getModifiers()*/, fileNumber);
//funEntry.setSignature(getFunctionSignature());
functionEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
functionEntry.serialize(output);
}
public void addElaboratedForwardDeclaration(IASTElaboratedTypeSpecifier elaboratedType, int fileNumber) {
@ -480,15 +557,21 @@ public class SourceIndexerRunner extends AbstractIndexer {
if (elaboratedType.getClassKind().equals(ASTClassKind.CLASS))
{
output.addFwd_ClassDecl(fileNumber,elaboratedType.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FWD_CLASS ,IIndex.DECLARATION, elaboratedType.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
else if (elaboratedType.getClassKind().equals(ASTClassKind.STRUCT))
{
output.addFwd_StructDecl(fileNumber,elaboratedType.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FWD_STRUCT ,IIndex.DECLARATION, elaboratedType.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
else if (elaboratedType.getClassKind().equals(ASTClassKind.UNION))
{
output.addFwd_UnionDecl(fileNumber,elaboratedType.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FWD_UNION,IIndex.DECLARATION, elaboratedType.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
}
@ -510,8 +593,11 @@ public class SourceIndexerRunner extends AbstractIndexer {
int offset = function.getNameOffset();
int offsetLength = function.getNameEndOffset() - offset;
output.addFunctionDecl(fileNumber, function.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
FunctionEntry functionEntry = new FunctionEntry(IIndex.FUNCTION, IIndex.DECLARATION, function.getFullyQualifiedNameCharArrays(),0 /*getModifiers()*/, fileNumber);
//funEntry.setSignature(getFunctionSignature());
functionEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
functionEntry.serialize(output);
Iterator i=function.getParameters();
while (i.hasNext()){
Object parm = i.next();
@ -519,7 +605,10 @@ public class SourceIndexerRunner extends AbstractIndexer {
IASTParameterDeclaration parmDecl = (IASTParameterDeclaration) parm;
offset = parmDecl.getNameOffset();
offsetLength = parmDecl.getNameEndOffset() - offset;
output.addVariableDecl(fileNumber, new char[][]{parmDecl.getNameCharArray()},offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.DECLARATION, new char[][]{parmDecl.getNameCharArray()}, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
}
}
@ -528,7 +617,11 @@ public class SourceIndexerRunner extends AbstractIndexer {
IASTFunction function=(IASTFunction) reference.getReferencedElement();
int offset = reference.getOffset();
int offsetLength = function.getNameEndOffset() - function.getNameOffset();
output.addFunctionRef(fileNumber, function.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
FunctionEntry functionEntry = new FunctionEntry(IIndex.FUNCTION, IIndex.REFERENCE, function.getFullyQualifiedNameCharArrays(),0 /*getModifiers()*/, fileNumber);
//funEntry.setSignature(getFunctionSignature());
functionEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
functionEntry.serialize(output);
}
public void addNameReference(){
@ -538,31 +631,32 @@ public class SourceIndexerRunner extends AbstractIndexer {
public void addNamespaceDefinition(IASTNamespaceDefinition namespace, int fileNumber){
int offset = namespace.getNameOffset();
int offsetLength = namespace.getNameEndOffset() - offset;
output.addNamespaceDecl(fileNumber, namespace.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
NamedEntry namedEntry = new NamedEntry(IIndex.NAMESPACE, IIndex.DECLARATION, namespace.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
namedEntry.serialize(output);
}
public void addNamespaceReference(IASTNamespaceReference reference, int fileNumber) {
IASTNamespaceDefinition namespace = (IASTNamespaceDefinition)reference.getReferencedElement();
int offset = reference.getOffset();
int offsetLength = namespace.getNameEndOffset() - namespace.getNameOffset();
output.addNamespaceRef(fileNumber, namespace.getFullyQualifiedNameCharArrays(),offset,offsetLength, IIndex.OFFSET);
NamedEntry namedEntry = new NamedEntry(IIndex.NAMESPACE, IIndex.REFERENCE, namespace.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
namedEntry.serialize(output);
}
public void addTypedefReference( IASTTypedefReference reference, int fileNumber ){
IASTTypedefDeclaration typedef = (IASTTypedefDeclaration) reference.getReferencedElement();
int offset = reference.getOffset();
int offsetLength = typedef.getNameEndOffset() - typedef.getNameOffset();
output.addTypedefRef(fileNumber, typedef.getFullyQualifiedNameCharArrays(), offset, offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_TYPEDEF, IIndex.REFERENCE, typedef.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
private void addSuperTypeReference(int modifiers, char[] packageName, char[] typeName, char[][] enclosingTypeNames, char classOrInterface, char[] superTypeName, char superClassOrInterface){
}
public void addTypeReference(char[] typeName){
//output.addRef(CharOperation.concat(TYPE_REF, CharOperation.lastSegment(typeName, '.')));
}
public void addClassReference(IASTClassReference reference, int fileNumber){
char[][] fullyQualifiedName = null;
ASTClassKind classKind = null;
@ -586,15 +680,24 @@ public class SourceIndexerRunner extends AbstractIndexer {
if (classKind.equals(ASTClassKind.CLASS))
{
output.addClassRef(fileNumber, fullyQualifiedName,offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_CLASS,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
//typeEntry.setBaseTypes(getInherits());
typeEntry.serialize(output);
}
else if (classKind.equals(ASTClassKind.STRUCT))
{
output.addStructRef(fileNumber, fullyQualifiedName,offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_STRUCT,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
//typeEntry.setBaseTypes(getInherits());
typeEntry.serialize(output);
}
else if (classKind.equals(ASTClassKind.UNION))
{
output.addUnionRef(fileNumber, fullyQualifiedName,offset,offsetLength, IIndex.OFFSET);
{
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_UNION,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
//typeEntry.setBaseTypes(getInherits());
typeEntry.serialize(output);
}
}
@ -617,15 +720,21 @@ public class SourceIndexerRunner extends AbstractIndexer {
if (classKind.equals(ASTClassKind.CLASS))
{
output.addFwd_ClassRef(fileNumber, fullyQualifiedName, offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FWD_CLASS ,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
else if (classKind.equals(ASTClassKind.STRUCT))
{
output.addFwd_StructRef(fileNumber, fullyQualifiedName, offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FWD_STRUCT ,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
else if (classKind.equals(ASTClassKind.UNION))
{
output.addFwd_UnionRef(fileNumber, fullyQualifiedName, offset,offsetLength, IIndex.OFFSET);
TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FWD_UNION ,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
typeEntry.serialize(output);
}
}