@Override public String getIncludeDirective(CsmFile currentFile, CsmObject item) { if (CsmKindUtilities.isOffsetable(item)) { CsmFile file = ((CsmOffsetable) item).getContainingFile(); if (file != null) { if (file.equals(currentFile) || file.isHeaderFile()) { return getIncludeDirectiveByFile(currentFile, item).replace('\\', '/'); // NOI18N; } else if (file.isSourceFile() && CsmKindUtilities.isGlobalVariable(item)) { Collection<CsmOffsetableDeclaration> decls = file.getProject().findDeclarations(((CsmVariable) item).getUniqueName() + " (EXTERN)"); // NOI18N if (!decls.isEmpty()) { return getIncludeDirectiveByFile(currentFile, decls.iterator().next()).replace('\\', '/'); // NOI18N; } } } else { System.err.println("can not find for item " + item); // NOI18N; } } else if (!CsmKindUtilities.isNamespace(item)) { System.err.println("not yet handled object " + item); // NOI18N; } return ""; // NOI18N }
private static CsmFile getTarget(DataObject dobj) { CsmFile f = CsmUtilities.getCsmFile(dobj, false, false); CsmFile target = null; if (f != null) { if (f.isHeaderFile()) { target = findSource(f); } else if (f.isSourceFile()) { target = findHeader(f); } } return target; }
@Override public String getLocalIncludeDerectiveByFilePath(FSPath path, CsmObject item) { if (CsmKindUtilities.isOffsetable(item)) { CsmFile incFile = ((CsmOffsetable) item).getContainingFile(); if (incFile != null) { if (incFile.isHeaderFile()) { return getLocalIncludeDerectiveByHeaderFilePath(path, item).replace('\\', '/'); // NOI18N; } else if (incFile.isSourceFile() && CsmKindUtilities.isGlobalVariable(item)) { Collection<CsmOffsetableDeclaration> decls = incFile.getProject().findDeclarations(((CsmVariable) item).getUniqueName() + " (EXTERN)"); // NOI18N if (!decls.isEmpty()) { return getLocalIncludeDerectiveByHeaderFilePath(path, decls.iterator().next()).replace('\\', '/'); // NOI18N; } } else if (incFile.isSourceFile() && CsmKindUtilities.isFunctionDefinition(item)) { return getLocalIncludeDerectiveByHeaderFilePath(path, ((CsmFunction) item).getDeclaration()).replace('\\', '/'); // NOI18N; } } else { System.err.println("can not find for item " + item); // NOI18N; } } else if (!CsmKindUtilities.isNamespace(item)) { System.err.println("not yet handled object " + item); // NOI18N; } return ""; // NOI18N }
} else if (file.isSourceFile() && CsmKindUtilities.isGlobalVariable(item)) { HashSet<CsmProject> scannedprojects = new HashSet<>(); if (isVariableVisible(currentFile, file.getProject(), (CsmVariable) item, scannedprojects)) {