mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 22:52:11 +02:00
The following changes are made:
- xxIndexVisitor objects are reused - NamedEntry objects are reused where possible (not always). Result: overall memory consumption during indexation is decreased by 10% approximately.
This commit is contained in:
parent
2e43c1a04b
commit
632cfdc3d6
6 changed files with 137 additions and 68 deletions
|
@ -40,4 +40,12 @@ public class FunctionEntry extends NamedEntry implements IFunctionEntry {
|
|||
output.addIndexEntry(this);
|
||||
}
|
||||
|
||||
/* BugZilla ID#124618 */
|
||||
public void setFunctionEntry(int meta_kind, int entry_type, char[][] fullName, int modifiers, int fileNumber) {
|
||||
setNamedEntry(meta_kind, entry_type, fullName, modifiers, fileNumber);
|
||||
// since we reuse FunctionEntry instance,
|
||||
// the following vars should be cleared.
|
||||
this.signature = null;
|
||||
this.returnString = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,4 +39,11 @@ public class NamedEntry extends CIndexStorageEntry implements INamedEntry {
|
|||
output.addIndexEntry(this);
|
||||
}
|
||||
|
||||
/* BugZilla ID#124618 */
|
||||
public void setNamedEntry(int meta_kind, int entry_type, char[][] fullName, int modifiers, int fileNumber) {
|
||||
this.entry_type = entry_type;
|
||||
this.fileNumber = fileNumber;
|
||||
this.fullName = fullName;
|
||||
this.modifiers = modifiers;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -47,4 +47,16 @@ public class TypeEntry extends NamedEntry implements ITypeEntry {
|
|||
this.friends = friends;
|
||||
}
|
||||
|
||||
/* BugZilla ID#124618 */
|
||||
public void setTypeEntry(int type_kind, int entry_type, char[][] fullName, int modifiers, int fileNumber) {
|
||||
this.entry_type = entry_type;
|
||||
this.fileNumber = fileNumber;
|
||||
this.fullName = fullName;
|
||||
this.modifiers = modifiers;
|
||||
this.type_kind = type_kind;
|
||||
// since we reuse TypeEntry instance,
|
||||
// the following vars should be cleared.
|
||||
this.baseTypes = null;
|
||||
this.friends = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,12 @@ import org.eclipse.cdt.internal.core.index.TypeEntry;
|
|||
import org.eclipse.cdt.internal.core.model.Util;
|
||||
|
||||
public class CGenerateIndexVisitor extends CASTVisitor {
|
||||
private DOMSourceIndexerRunner indexer;
|
||||
private DOMSourceIndexerRunner indexer;
|
||||
|
||||
private FunctionEntry commonFunctionEntry;
|
||||
private TypeEntry commonTypeEntry;
|
||||
private NamedEntry commonNamedEntry;
|
||||
|
||||
{
|
||||
shouldVisitNames = true;
|
||||
shouldVisitDeclarations = true;
|
||||
|
@ -58,6 +63,16 @@ public class CGenerateIndexVisitor extends CASTVisitor {
|
|||
public CGenerateIndexVisitor(DOMSourceIndexerRunner indexer) {
|
||||
super();
|
||||
this.indexer = indexer;
|
||||
// reuse of XXXEntry object allows to reduce memory consumption
|
||||
char[][] dummy = new char[][] { null };
|
||||
commonFunctionEntry = new FunctionEntry(IIndex.FUNCTION, 0, dummy, 0, 0);
|
||||
commonTypeEntry = new TypeEntry (0, 0, dummy, 0, 0);
|
||||
commonNamedEntry = new NamedEntry(0, 0, dummy, 0, 0);
|
||||
}
|
||||
|
||||
/* BugZilla ID#124618 */
|
||||
public void setCGenerateIndexVisitor(DOMSourceIndexerRunner indexer) {
|
||||
this.indexer = indexer;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
@ -187,10 +202,10 @@ public class CGenerateIndexVisitor extends CASTVisitor {
|
|||
}
|
||||
// guard against cpp entities in c project
|
||||
if (iEntryType != 0) {
|
||||
TypeEntry indexEntry = new TypeEntry(iEntryType, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonTypeEntry.setTypeEntry(iEntryType, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
indexEntry.serialize(indexer.getOutput());
|
||||
commonTypeEntry.serialize(indexer.getOutput());
|
||||
}
|
||||
}
|
||||
else if (binding instanceof IEnumeration){
|
||||
|
@ -198,32 +213,32 @@ public class CGenerateIndexVisitor extends CASTVisitor {
|
|||
if (entryKind != IIndex.REFERENCE) {
|
||||
modifiers = IndexVisitorUtil.getModifiers(name, binding);
|
||||
}
|
||||
TypeEntry indexEntry = new TypeEntry(IIndex.TYPE_ENUM, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonTypeEntry.setTypeEntry(IIndex.TYPE_ENUM, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
indexEntry.serialize(indexer.getOutput());
|
||||
commonTypeEntry.serialize(indexer.getOutput());
|
||||
}
|
||||
else if (binding instanceof ITypedef) {
|
||||
TypeEntry indexEntry = new TypeEntry(IIndex.TYPE_TYPEDEF, entryKind, qualifiedName, 0, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonTypeEntry.setTypeEntry(IIndex.TYPE_TYPEDEF, entryKind, qualifiedName, 0, fileNumber);
|
||||
commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
indexEntry.serialize(indexer.getOutput());
|
||||
commonTypeEntry.serialize(indexer.getOutput());
|
||||
}
|
||||
else if (binding instanceof IEnumerator) {
|
||||
NamedEntry indexEntry = new NamedEntry(IIndex.ENUMTOR, entryKind, qualifiedName, 0, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonNamedEntry.setNamedEntry(IIndex.ENUMTOR, entryKind, qualifiedName, 0, fileNumber);
|
||||
commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
indexEntry.serialize(indexer.getOutput());
|
||||
commonNamedEntry.serialize(indexer.getOutput());
|
||||
}
|
||||
else if (binding instanceof IField) {
|
||||
int modifiers = 0;
|
||||
if (entryKind != IIndex.REFERENCE) {
|
||||
modifiers = IndexVisitorUtil.getModifiers(name, binding);
|
||||
}
|
||||
NamedEntry indexEntry = new NamedEntry(IIndex.FIELD, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonNamedEntry.setNamedEntry(IIndex.FIELD, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
indexEntry.serialize(indexer.getOutput());
|
||||
commonNamedEntry.serialize(indexer.getOutput());
|
||||
}
|
||||
else if (binding instanceof IVariable &&
|
||||
!(binding instanceof IParameter)) {
|
||||
|
@ -234,10 +249,10 @@ public class CGenerateIndexVisitor extends CASTVisitor {
|
|||
if (entryKind != IIndex.REFERENCE) {
|
||||
modifiers = IndexVisitorUtil.getModifiers(name, binding);
|
||||
}
|
||||
NamedEntry indexEntry = new NamedEntry(IIndex.VAR, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonNamedEntry.setNamedEntry(IIndex.VAR, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
indexEntry.serialize(indexer.getOutput());
|
||||
commonNamedEntry.serialize(indexer.getOutput());
|
||||
}
|
||||
}
|
||||
else if (binding instanceof IFunction) {
|
||||
|
@ -245,12 +260,12 @@ public class CGenerateIndexVisitor extends CASTVisitor {
|
|||
if (entryKind != IIndex.REFERENCE) {
|
||||
modifiers = IndexVisitorUtil.getModifiers(name, binding);
|
||||
}
|
||||
FunctionEntry indexEntry = new FunctionEntry(IIndex.FUNCTION, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
indexEntry.setSignature(IndexVisitorUtil.getParameters((IFunction) binding));
|
||||
indexEntry.setReturnType(IndexVisitorUtil.getReturnType((IFunction) binding));
|
||||
commonFunctionEntry.setFunctionEntry(IIndex.FUNCTION, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonFunctionEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonFunctionEntry.setSignature(IndexVisitorUtil.getParameters((IFunction) binding));
|
||||
commonFunctionEntry.setReturnType(IndexVisitorUtil.getReturnType((IFunction) binding));
|
||||
|
||||
indexEntry.serialize(indexer.getOutput());
|
||||
commonFunctionEntry.serialize(indexer.getOutput());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -59,6 +59,9 @@ import org.eclipse.cdt.internal.core.model.Util;
|
|||
public class CPPGenerateIndexVisitor extends CPPASTVisitor {
|
||||
private DOMSourceIndexerRunner indexer;
|
||||
|
||||
private FunctionEntry commonFunctionEntry;
|
||||
private TypeEntry commonTypeEntry;
|
||||
private NamedEntry commonNamedEntry;
|
||||
{
|
||||
shouldVisitNames = true;
|
||||
shouldVisitDeclarations = true;
|
||||
|
@ -81,8 +84,19 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
|
|||
public CPPGenerateIndexVisitor(DOMSourceIndexerRunner indexer) {
|
||||
super();
|
||||
this.indexer = indexer;
|
||||
// reuse of XXXEntry object allows to reduce memory consumption
|
||||
char[][] dummy = new char[0][0];
|
||||
commonFunctionEntry = new FunctionEntry(IIndex.FUNCTION, 0, dummy, 0, 0);
|
||||
commonTypeEntry = new TypeEntry (0, 0, dummy, 0, 0);
|
||||
commonNamedEntry = new NamedEntry(0, 0, dummy, 0, 0);
|
||||
}
|
||||
|
||||
/* BugZilla ID#124618 */
|
||||
public void setCPPGenerateIndexVisitor(DOMSourceIndexerRunner indexer) {
|
||||
this.indexer = indexer;
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor#visit(org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition)
|
||||
*/
|
||||
|
@ -228,52 +242,52 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
|
|||
if (entryKind != IIndex.REFERENCE) {
|
||||
modifiers = IndexVisitorUtil.getModifiers(name, binding);
|
||||
}
|
||||
TypeEntry indexEntry = new TypeEntry(iEntryType, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonTypeEntry.setTypeEntry(iEntryType, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
if (entryKind == IIndex.DEFINITION && binding instanceof ICPPClassType) {
|
||||
addDerivedDeclarations(name, (ICPPClassType)binding, indexEntry, fileNumber);
|
||||
addFriendDeclarations(name, (ICPPClassType)binding, indexEntry, fileNumber);
|
||||
addDerivedDeclarations(name, (ICPPClassType)binding, commonTypeEntry, fileNumber);
|
||||
addFriendDeclarations(name, (ICPPClassType)binding, commonTypeEntry, fileNumber);
|
||||
}
|
||||
|
||||
serialize(indexEntry);
|
||||
serialize(commonTypeEntry);
|
||||
}
|
||||
else if (binding instanceof IEnumeration) {
|
||||
int modifiers = 0;
|
||||
if (entryKind != IIndex.REFERENCE) {
|
||||
modifiers = IndexVisitorUtil.getModifiers(name, binding);
|
||||
}
|
||||
TypeEntry indexEntry = new TypeEntry(IIndex.TYPE_ENUM, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonTypeEntry.setTypeEntry(IIndex.TYPE_ENUM, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
serialize(indexEntry);
|
||||
serialize(commonTypeEntry);
|
||||
}
|
||||
else if (binding instanceof ITypedef) {
|
||||
TypeEntry indexEntry = new TypeEntry(IIndex.TYPE_TYPEDEF, entryKind, qualifiedName, 0, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonTypeEntry.setTypeEntry(IIndex.TYPE_TYPEDEF, entryKind, qualifiedName, 0, fileNumber);
|
||||
commonTypeEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
serialize(indexEntry);
|
||||
serialize(commonTypeEntry);
|
||||
}
|
||||
else if (binding instanceof ICPPNamespace) {
|
||||
NamedEntry indexEntry = new NamedEntry(IIndex.NAMESPACE, entryKind, qualifiedName, 0, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonNamedEntry.setNamedEntry(IIndex.NAMESPACE, entryKind, qualifiedName, 0, fileNumber);
|
||||
commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
serialize(indexEntry);
|
||||
serialize(commonNamedEntry);
|
||||
}
|
||||
else if (binding instanceof IEnumerator) {
|
||||
NamedEntry indexEntry = new NamedEntry(IIndex.ENUMTOR, entryKind, qualifiedName, 0, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonNamedEntry.setNamedEntry(IIndex.ENUMTOR, entryKind, qualifiedName, 0, fileNumber);
|
||||
commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
serialize(indexEntry);
|
||||
serialize(commonNamedEntry);
|
||||
}
|
||||
else if (binding instanceof IField) {
|
||||
int modifiers = 0;
|
||||
if (entryKind != IIndex.REFERENCE) {
|
||||
modifiers = IndexVisitorUtil.getModifiers(name, binding);
|
||||
}
|
||||
NamedEntry indexEntry = new NamedEntry(IIndex.FIELD, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonNamedEntry.setNamedEntry(IIndex.FIELD, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
serialize(indexEntry);
|
||||
serialize(commonNamedEntry);
|
||||
}
|
||||
else if (binding instanceof IVariable &&
|
||||
!(binding instanceof IParameter)) {
|
||||
|
@ -284,10 +298,10 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
|
|||
if (entryKind != IIndex.REFERENCE) {
|
||||
modifiers = IndexVisitorUtil.getModifiers(name, binding);
|
||||
}
|
||||
NamedEntry indexEntry = new NamedEntry(IIndex.VAR, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonNamedEntry.setNamedEntry(IIndex.VAR, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonNamedEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
|
||||
serialize(indexEntry);
|
||||
serialize(commonNamedEntry);
|
||||
}
|
||||
}
|
||||
else if (binding instanceof ICPPMethod) {
|
||||
|
@ -295,12 +309,12 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
|
|||
if (entryKind != IIndex.REFERENCE) {
|
||||
modifiers = IndexVisitorUtil.getModifiers(name, binding);
|
||||
}
|
||||
FunctionEntry indexEntry = new FunctionEntry(IIndex.METHOD, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
indexEntry.setSignature(IndexVisitorUtil.getParameters((ICPPMethod) binding));
|
||||
indexEntry.setReturnType(IndexVisitorUtil.getReturnType((ICPPMethod) binding));
|
||||
commonFunctionEntry.setFunctionEntry(IIndex.METHOD, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonFunctionEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonFunctionEntry.setSignature(IndexVisitorUtil.getParameters((ICPPMethod) binding));
|
||||
commonFunctionEntry.setReturnType(IndexVisitorUtil.getReturnType((ICPPMethod) binding));
|
||||
|
||||
serialize(indexEntry);
|
||||
serialize(commonFunctionEntry);
|
||||
// TODO In case we want to add friend method declarations to index
|
||||
// if (isFriendDeclaration(name, binding)) {
|
||||
// entryType = IndexerOutputWrapper.FRIEND;
|
||||
|
@ -311,12 +325,12 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
|
|||
if (entryKind != IIndex.REFERENCE) {
|
||||
modifiers = IndexVisitorUtil.getModifiers(name, binding);
|
||||
}
|
||||
FunctionEntry indexEntry = new FunctionEntry(IIndex.FUNCTION, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
indexEntry.setSignature(IndexVisitorUtil.getParameters((IFunction) binding));
|
||||
indexEntry.setReturnType(IndexVisitorUtil.getReturnType((IFunction) binding));
|
||||
commonFunctionEntry.setFunctionEntry(IIndex.FUNCTION, entryKind, qualifiedName, modifiers, fileNumber);
|
||||
commonFunctionEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET);
|
||||
commonFunctionEntry.setSignature(IndexVisitorUtil.getParameters((IFunction) binding));
|
||||
commonFunctionEntry.setReturnType(IndexVisitorUtil.getReturnType((IFunction) binding));
|
||||
|
||||
serialize(indexEntry);
|
||||
serialize(commonFunctionEntry);
|
||||
// TODO In case we want to add friend function declarations to index
|
||||
// if (isFriendDeclaration(name, binding)) {
|
||||
// entryType = IndexerOutputWrapper.FRIEND;
|
||||
|
|
|
@ -59,7 +59,11 @@ import org.eclipse.core.runtime.Path;
|
|||
public class DOMSourceIndexerRunner extends AbstractIndexerRunner {
|
||||
|
||||
private DOMSourceIndexer indexer;
|
||||
|
||||
// Bug 124618: reuse NamedEntry & Visitor instances to reduce memory consumption
|
||||
private NamedEntry commonNamedEntry;
|
||||
static CGenerateIndexVisitor visitorC = null;
|
||||
static CPPGenerateIndexVisitor visitorCPP = null;
|
||||
|
||||
// for running JUnit tests
|
||||
private static boolean skipScannerInfoTest=false;
|
||||
|
||||
|
@ -73,6 +77,7 @@ public class DOMSourceIndexerRunner extends AbstractIndexerRunner {
|
|||
public DOMSourceIndexerRunner(IFile resource, DOMSourceIndexer indexer) {
|
||||
this.resourceFile = resource;
|
||||
this.indexer = indexer;
|
||||
commonNamedEntry = new NamedEntry(0, 0, new char[][] { null }, 0, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -118,18 +123,26 @@ public class DOMSourceIndexerRunner extends AbstractIndexerRunner {
|
|||
|
||||
if (AbstractIndexerRunner.TIMING)
|
||||
parseTime = System.currentTimeMillis();
|
||||
|
||||
|
||||
// first clear all problem markers on non-external include files
|
||||
clearProblemMarkers(tu.getIncludeDirectives());
|
||||
|
||||
ASTVisitor visitor = null;
|
||||
//C or CPP?
|
||||
if (tu.getParserLanguage() == ParserLanguage.CPP) {
|
||||
visitor = new CPPGenerateIndexVisitor(this);
|
||||
if (visitorCPP == null)
|
||||
visitorCPP = new CPPGenerateIndexVisitor(this);
|
||||
else
|
||||
visitorCPP.setCPPGenerateIndexVisitor(this);
|
||||
visitor = visitorCPP;
|
||||
} else {
|
||||
visitor = new CGenerateIndexVisitor(this);
|
||||
if (visitorC == null)
|
||||
visitorC = new CGenerateIndexVisitor(this);
|
||||
else
|
||||
visitorC.setCGenerateIndexVisitor(this);
|
||||
visitor = visitorC;
|
||||
}
|
||||
|
||||
|
||||
tu.accept(visitor);
|
||||
|
||||
processMacroDefinitions(tu.getMacroDefinitions());
|
||||
|
@ -284,9 +297,9 @@ public class DOMSourceIndexerRunner extends AbstractIndexerRunner {
|
|||
getOutput().addRelatives(fileNumber, include,
|
||||
(parent != null) ? parent.getIncludeDirective().getPath() : null);
|
||||
|
||||
NamedEntry namedEntry = new NamedEntry(IIndex.INCLUDE, IIndex.REFERENCE, new char[][] {include.toCharArray()}, 0, fileNumber);
|
||||
namedEntry.setNameOffset(1, 1, IIndex.OFFSET);
|
||||
namedEntry.serialize(getOutput());
|
||||
commonNamedEntry.setNamedEntry(IIndex.INCLUDE, IIndex.REFERENCE, new char[][] {include.toCharArray()}, 0, fileNumber);
|
||||
commonNamedEntry.setNameOffset(1, 1, IIndex.OFFSET);
|
||||
commonNamedEntry.serialize(getOutput());
|
||||
|
||||
/* See if this file has been encountered before */
|
||||
indexer.haveEncounteredHeader(resourceFile.getProject().getFullPath(), new Path(include), true);
|
||||
|
@ -310,9 +323,9 @@ public class DOMSourceIndexerRunner extends AbstractIndexerRunner {
|
|||
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(macro);
|
||||
int fileNumber = IndexEncoderUtil.calculateIndexFlags(this, loc);
|
||||
|
||||
NamedEntry namedEntry = new NamedEntry(IIndex.MACRO, IIndex.DECLARATION, new char[][] {macro.toCharArray()}, 0, fileNumber);
|
||||
namedEntry.setNameOffset(loc.getNodeOffset(), loc.getNodeLength(), IIndex.OFFSET);
|
||||
namedEntry.serialize(getOutput());
|
||||
commonNamedEntry.setNamedEntry(IIndex.MACRO, IIndex.DECLARATION, new char[][] {macro.toCharArray()}, 0, fileNumber);
|
||||
commonNamedEntry.setNameOffset(loc.getNodeOffset(), loc.getNodeLength(), IIndex.OFFSET);
|
||||
commonNamedEntry.serialize(getOutput());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue