public Collection<ProjectBase> getDependentProjects() { List<ProjectBase> res = new ArrayList<>(); for (CsmProject prj : model.projects()) { if (prj instanceof ProjectBase) { if (prj.getLibraries().contains(this)) { res.add((ProjectBase) prj); } } } return res; }
private static boolean isProjectsLib(CsmProject project, CsmProject lib) { if (project.equals(lib)) { return false; } HashSet<CsmProject> visited = new HashSet<>(); visited.add(project); return isProjectInLibs(lib, project.getLibraries(), visited); }
private void collectLibs(CsmProject project, Collection<CsmProject> libs) { for( CsmProject lib : project.getLibraries()) { if (! libs.contains(lib)) { libs.add(lib); collectLibs(lib, libs); } } }
private static boolean isProjectInLibs(CsmProject project, Collection<CsmProject> libs, Collection<CsmProject> visited) { if (libs != null) { for (CsmProject lib : libs) { if (visited.contains(lib)) { continue; } visited.add(lib); if (project.equals(lib) || isProjectInLibs(project, lib.getLibraries(), visited)) { return true; } } } return false; }
private CsmNamespace resolveNamespaceBfs(Queue<CsmProject> queue, Set<CsmProject> seen, String namespace) { // breadth-first search in project dependency graph while (!queue.isEmpty()) { CsmProject project = queue.poll(); CsmNamespace ns = project.findNamespace(namespace); if (ns != null) { return ns; } seen.add(project); for (CsmProject lib : project.getLibraries()) { if (!seen.contains(lib)) { queue.offer(lib); } } } return null; }
private Set<CsmProject> getProjects(){ Set<CsmProject> projects = new HashSet<CsmProject>(); if (libOwnerProject == null) { for (CsmProject p : CsmModelAccessor.getModel().projects()) { projects.add(p); } } else { for(CsmProject lib : libOwnerProject.getLibraries()) { projects.add(lib); } } return projects; }
private static boolean areProjectAndLibsParsed(CsmProject project) { if (!project.isStable(null)) { return false; } HashSet<CsmProject> visited = new HashSet<>(); visited.add(project); return areProjectLibsParsed(project.getLibraries(), visited); }
private static boolean areProjectLibsParsed(Collection<CsmProject> libs, Collection<CsmProject> visited) { if (libs != null) { for (CsmProject lib : libs) { if (visited.contains(lib)) { continue; } visited.add(lib); if (!lib.isStable(null) || !areProjectLibsParsed(lib.getLibraries(), visited)) { return false; } } } return true; } }
private static void gatherLibIncludedMacros(CsmFile file, List<CsmMacro> res, boolean all, CharSequence strPrefix, boolean match, boolean caseSensitive) { CsmProject prj = file.getProject(); if (!all) { gatherIncludeMacros(file, prj, false, new HashSet<CsmFile>(), new HashSet<CharSequence>(), res, strPrefix, match, caseSensitive); } else { Set<CharSequence> alredyInList = new HashSet<CharSequence>(); for(Iterator p = prj.getLibraries().iterator(); p.hasNext();){ CsmProject lib = (CsmProject)p.next(); for(Iterator i = lib.getHeaderFiles().iterator(); i.hasNext();){ getFileLocalMacros((CsmFile)i.next(), res, alredyInList, strPrefix, match, caseSensitive); } } } }
private void processProjectLibs(CsmProject project, CsmSelect.CsmFilter filter, Set<CsmProject> processedLibs, NameMatcher matcher) { for (CsmProject lib : project.getLibraries()) { checkCancelled(); if (lib.isArtificial()) { if (!processedLibs.contains(lib)) { processedLibs.add(lib); processProject(lib, filter, matcher); } } } }
private Collection<CsmProject> getLibraries(CsmFile file, int contextOffset) { CsmProject project = file.getProject(); if (project == null) { return Collections.emptyList(); } if (project.isArtificial()) { Collection<CsmProject> out = new HashSet<>(2); for (CsmCompilationUnit cu : CsmFileInfoQuery.getDefault().getCompilationUnits(file, contextOffset)) { out.addAll(cu.getStartProject().getLibraries()); } return out; } else { return project.getLibraries(); } } }
public void projectLibsChanged(CsmProject owner) { if (owner == libOwnerProject) { synchronized(myProjectsLock) { if (myProjects == null) { myProjects = createProjectsMap(); } else { myProjects.clear(); } for (CsmProject p : owner.getLibraries()) { myProjects.put(p, getSortedName(p, true)); } } resetKeys(); } }
public static Collection<CsmProject> getSearchLibraries(CsmProject prj) { if (prj.isArtificial() && prj instanceof ProjectBase) { Set<CsmProject> libs = new HashSet<>(); for (ProjectBase projectBase : ((ProjectBase)prj).getDependentProjects()) { if (!projectBase.isArtificial()) { libs.addAll(projectBase.getLibraries()); } } return libs; } else { return prj.getLibraries(); } }
private boolean findGlobal(CsmProject project, String uname, Collection<CsmProject> processedProjects) { if (processedProjects.contains(project)) { return false; } processedProjects.add(project); final CsmDeclaration decl = project.findDeclaration(uname); if (decl != null && CsmIncludeResolver.getDefault().isObjectVisible(file, decl)) { return true; } for (CsmProject lib : project.getLibraries()) { if (findGlobal(lib, uname, processedProjects)) { return true; } } return false; }
private void dumpProjectFilesInfo(PrintWriter printOut) { Collection<CsmProject> projects = CsmModelAccessor.getModel().projects(); for (CsmProject project : projects) { dumpProjectFilesInfo(project, printOut, false); for (CsmProject lib : project.getLibraries()) { dumpProjectFilesInfo(lib, printOut, false); } } }
private boolean isVariableVisible(CsmFile currentFile, CsmProject project, CsmVariable var, HashSet<CsmProject> scannedProjects) { if (scannedProjects.contains(project)) { return false; } scannedProjects.add(project); if (isVariableDeclarationsVisible(currentFile, project.findDeclarations(var.getUniqueName() + " (EXTERN)"))) { // NOI18N return true; } if (isVariableDeclarationsVisible(currentFile, project.findDeclarations(var.getUniqueName()))) { return true; } for (CsmProject lib : project.getLibraries()) { if (isVariableVisible(currentFile, lib, var, scannedProjects)) { return true; } } return false; }
static NativeProject getNativeProject(CsmFile csmFile) { NativeProject nativeProject = null; if (csmFile != null) { CsmProject csmProject = csmFile.getProject(); if (csmProject.getPlatformProject() instanceof NativeProject) { nativeProject = (NativeProject) csmProject.getPlatformProject(); } else { loop: for (CsmProject project : CsmModelAccessor.getModel().projects()) { for (CsmProject lib : project.getLibraries()) { if (lib.equals(csmProject)) { if (project.getPlatformProject() instanceof NativeProject) { nativeProject = (NativeProject) project.getPlatformProject(); break loop; } } } } } } return nativeProject; }
protected CsmProjectContentResolver createContentResolver() { CsmFile contextFile = this.file; CsmProject filePrj = contextFile.getProject(); CsmProject startProject = filePrj; CsmFile startProjectFile = this.file; Collection<CsmProject> libs = new ArrayList<CsmProject>(); boolean replaceProject = startProject.isArtificial(); for (CsmCompilationUnit cu : CsmFileInfoQuery.getDefault().getCompilationUnits(file, contextOffset)) { CsmFile startFile = cu.getStartFile(); CsmProject prj = startFile == null ? null : startFile.getProject(); if (prj != null) { startProject = replaceProject ? prj : startProject; startProjectFile = startFile; break; } } // add libararies elements libs.addAll(startProject.getLibraries()); CsmProjectContentResolver resolver = new CsmProjectContentResolver(startProjectFile, filePrj, isCaseSensitive(), isSortNeeded(), isNaturalSort(), libs); return resolver; }
@Override public void fileAddedToParse(CsmFile file) { CsmProject project = file.getProject(); ParsingProgress handle = getHandle(project, false); if (handle != null) { handle.addedToParse(file); } else if (project.isArtificial()) { for (CsmProject p : CsmModelAccessor.getModel().projects()){ if (!p.isArtificial()) { if (p.getLibraries().contains(project)){ handle = getHandle(p, false); if (handle != null) { handle.addedToParse(file); } } } } } }
private Map<CsmFile,Set<CsmFile>> buildWhoIncludes(CsmFile file){ HashMap<CsmFile,Set<CsmFile>> aMap = new HashMap<CsmFile,Set<CsmFile>>(); for(CsmProject prj :CsmModelAccessor.getModel().projects()){ for(CsmFile f : prj.getSourceFiles()){ buildWhoIncludes(f, aMap); } for(CsmFile f : prj.getHeaderFiles()){ buildWhoIncludes(f, aMap); } for (CsmProject lib : prj.getLibraries()){ for(CsmFile f : lib.getSourceFiles()){ buildWhoIncludes(f, aMap); } for(CsmFile f : lib.getHeaderFiles()){ buildWhoIncludes(f, aMap); } } } return aMap; }