bool ProjectManager::AddProjectDependency(cbProject* base, cbProject* dependsOn) { if (!base || !dependsOn) return false; // avoid circular dependencies if ( CausesCircularDependency(base, dependsOn) ) return false; ProjectsArray* arr = nullptr; DepsMap::iterator it = m_ProjectDeps.find(base); if (it == m_ProjectDeps.end()) { // create a ProjectsArray* to hold the dependencies for base arr = new ProjectsArray; m_ProjectDeps[base] = arr; } else arr = it->second; // add dependency only if not already there if (arr && arr->Index(dependsOn) == wxNOT_FOUND) { arr->Add(dependsOn); if (m_pWorkspace) m_pWorkspace->SetModified(true); Manager::Get()->GetLogManager()->DebugLog(F(_T("%s now depends on %s (%lu deps)"), base->GetTitle().wx_str(), dependsOn->GetTitle().wx_str(), static_cast<unsigned long>(arr->GetCount()))); } return true; }