From bd09cc4feb9f63fc657db45fec1f65d3cc60d67c Mon Sep 17 00:00:00 2001 From: Eberhard Graether Date: Thu, 29 Aug 2019 12:49:24 +0200 Subject: [PATCH] src: Refactored SourceGroupSettings into components as bases architecture --- src/lib/CMakeLists.txt | 109 ++++++++++-------- src/lib/settings/ProjectSettings.cpp | 6 +- .../source_group/SourceGroupSettings.cpp | 35 +++--- .../source_group/SourceGroupSettings.h | 13 ++- .../SourceGroupSettingsCEmpty.cpp | 60 ---------- .../source_group/SourceGroupSettingsCEmpty.h | 35 ------ .../SourceGroupSettingsCppEmpty.cpp | 64 ---------- .../SourceGroupSettingsCppEmpty.h | 35 ------ .../SourceGroupSettingsCustomCommand.cpp | 85 -------------- .../SourceGroupSettingsCustomCommand.h | 38 ------ .../source_group/SourceGroupSettingsCxx.cpp | 88 -------------- .../SourceGroupSettingsCxxCdb.cpp | 71 ------------ .../source_group/SourceGroupSettingsCxxCdb.h | 34 ------ .../SourceGroupSettingsCxxCdbVs.cpp | 11 -- .../SourceGroupSettingsCxxCodeblocks.cpp | 86 -------------- .../SourceGroupSettingsCxxCodeblocks.h | 39 ------- .../SourceGroupSettingsCxxSonargraph.cpp | 46 -------- .../SourceGroupSettingsCxxSonargraph.h | 26 ----- .../source_group/SourceGroupSettingsJava.cpp | 46 -------- .../source_group/SourceGroupSettingsJava.h | 30 ----- .../SourceGroupSettingsJavaEmpty.cpp | 43 ------- .../SourceGroupSettingsJavaEmpty.h | 24 ---- .../SourceGroupSettingsJavaGradle.cpp | 79 ------------- .../SourceGroupSettingsJavaGradle.h | 34 ------ .../SourceGroupSettingsJavaMaven.cpp | 79 ------------- .../SourceGroupSettingsJavaMaven.h | 34 ------ .../SourceGroupSettingsJavaSonargraph.cpp | 46 -------- .../SourceGroupSettingsPythonEmpty.cpp | 77 ------------- .../SourceGroupSettingsPythonEmpty.h | 36 ------ .../SourceGroupSettingsWithComponents.h | 72 ++++++++++++ .../component/SourceGroupSettingsComponent.h | 23 ++++ .../SourceGroupSettingsWithCustomCommand.cpp | 46 ++++++++ .../SourceGroupSettingsWithCustomCommand.h | 29 +++++ .../SourceGroupSettingsWithExcludeFilters.cpp | 47 ++++---- .../SourceGroupSettingsWithExcludeFilters.h | 16 +-- ...GroupSettingsWithSonargraphProjectPath.cpp | 43 ++++--- ...ceGroupSettingsWithSonargraphProjectPath.h | 18 +-- ...ourceGroupSettingsWithSourceExtensions.cpp | 41 +++---- .../SourceGroupSettingsWithSourceExtensions.h | 18 +-- ...ceGroupSettingsWithSourceExtensionsEmpty.h | 16 +++ .../SourceGroupSettingsWithSourcePaths.cpp | 40 +++---- .../SourceGroupSettingsWithSourcePaths.h | 19 ++- .../cxx}/SourceGroupSettingsWithCStandard.cpp | 38 +++--- .../cxx}/SourceGroupSettingsWithCStandard.h | 17 +-- .../SourceGroupSettingsWithCppStandard.cpp | 38 +++--- .../cxx}/SourceGroupSettingsWithCppStandard.h | 17 +-- .../cxx/SourceGroupSettingsWithCxxCdbPath.cpp | 41 +++++++ .../cxx/SourceGroupSettingsWithCxxCdbPath.h | 27 +++++ ...urceGroupSettingsWithCxxCodeblocksPath.cpp | 40 +++++++ ...SourceGroupSettingsWithCxxCodeblocksPath.h | 27 +++++ ...SettingsWithCxxCrossCompilationOptions.cpp | 64 +++++----- ...upSettingsWithCxxCrossCompilationOptions.h | 19 ++- ...ourceGroupSettingsWithCxxPathsAndFlags.cpp | 71 ++++++++++++ ...SourceGroupSettingsWithCxxPathsAndFlags.h} | 26 +++-- .../SourceGroupSettingsWithCxxPchOptions.cpp | 51 ++++---- .../SourceGroupSettingsWithCxxPchOptions.h | 18 +-- ...rceGroupSettingsWithIndexedHeaderPaths.cpp | 43 ++++--- ...ourceGroupSettingsWithIndexedHeaderPaths.h | 16 +-- ...SourceGroupSettingsWithSourceExtensionsC.h | 16 +++ ...urceGroupSettingsWithSourceExtensionsCpp.h | 20 ++++ ...urceGroupSettingsWithSourceExtensionsCxx.h | 21 ++++ .../SourceGroupSettingsWithClasspath.cpp | 49 ++++---- .../java}/SourceGroupSettingsWithClasspath.h | 19 ++- .../SourceGroupSettingsWithJavaGradle.cpp | 58 ++++++++++ .../java/SourceGroupSettingsWithJavaGradle.h | 33 ++++++ .../java/SourceGroupSettingsWithJavaMaven.cpp | 58 ++++++++++ .../java/SourceGroupSettingsWithJavaMaven.h | 33 ++++++ .../SourceGroupSettingsWithJavaStandard.cpp | 38 +++--- .../SourceGroupSettingsWithJavaStandard.h | 17 +-- ...rceGroupSettingsWithSourceExtensionsJava.h | 16 +++ ...GroupSettingsWithPythonEnvironmentPath.cpp | 40 +++++++ ...ceGroupSettingsWithPythonEnvironmentPath.h | 27 +++++ ...eGroupSettingsWithSourceExtensionsPython.h | 16 +++ .../type/SourceGroupSettingsCEmpty.h | 35 ++++++ .../type/SourceGroupSettingsCppEmpty.h | 35 ++++++ .../type/SourceGroupSettingsCustomCommand.h | 29 +++++ .../type/SourceGroupSettingsCxxCdb.h | 31 +++++ .../{ => type}/SourceGroupSettingsCxxCdbVs.h | 6 +- .../type/SourceGroupSettingsCxxCodeblocks.h | 35 ++++++ .../type/SourceGroupSettingsCxxSonargraph.h | 29 +++++ .../type/SourceGroupSettingsJavaEmpty.h | 31 +++++ .../type/SourceGroupSettingsJavaGradle.h | 29 +++++ .../type/SourceGroupSettingsJavaMaven.h | 29 +++++ .../SourceGroupSettingsJavaSonargraph.h | 25 ++-- .../type/SourceGroupSettingsPythonEmpty.h | 29 +++++ src/lib_cxx/project/SourceGroupCxxEmpty.cpp | 35 ++++-- src/lib_cxx/project/SourceGroupCxxEmpty.h | 7 +- src/lib_cxx/project/utilitySourceGroupCxx.cpp | 49 ++++---- src/lib_cxx/project/utilitySourceGroupCxx.h | 11 +- .../qt/project_wizard/QtProjectWizard.cpp | 2 +- .../content/QtProjectWizardContentFlags.cpp | 8 +- .../content/QtProjectWizardContentFlags.h | 10 +- ...ojectWizardContentPathsFrameworkSearch.cpp | 9 +- ...tProjectWizardContentPathsHeaderSearch.cpp | 17 +-- .../QtProjectWizardContentPathsSource.cpp | 6 +- src/lib_java/project/SourceGroupJava.cpp | 22 ++-- src/lib_java/project/SourceGroupJava.h | 9 +- src/lib_java/project/SourceGroupJavaEmpty.cpp | 7 +- src/lib_java/project/SourceGroupJavaEmpty.h | 7 +- .../project/SourceGroupJavaGradle.cpp | 4 +- src/lib_java/project/SourceGroupJavaGradle.h | 7 +- src/lib_java/project/SourceGroupJavaMaven.cpp | 4 +- src/lib_java/project/SourceGroupJavaMaven.h | 4 +- src/test/RefreshInfoGeneratorTestSuite.h | 17 ++- src/test/SettingsTestSuite.h | 8 +- 105 files changed, 1610 insertions(+), 1827 deletions(-) delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCEmpty.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCEmpty.h delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCppEmpty.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCppEmpty.h delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCustomCommand.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCustomCommand.h delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCxx.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCxxCdb.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCxxCdb.h delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCxxCdbVs.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCxxCodeblocks.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCxxCodeblocks.h delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCxxSonargraph.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsCxxSonargraph.h delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsJava.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsJava.h delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsJavaEmpty.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsJavaEmpty.h delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsJavaGradle.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsJavaGradle.h delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsJavaMaven.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsJavaMaven.h delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsJavaSonargraph.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsPythonEmpty.cpp delete mode 100644 src/lib/settings/source_group/SourceGroupSettingsPythonEmpty.h create mode 100644 src/lib/settings/source_group/SourceGroupSettingsWithComponents.h create mode 100644 src/lib/settings/source_group/component/SourceGroupSettingsComponent.h create mode 100644 src/lib/settings/source_group/component/SourceGroupSettingsWithCustomCommand.cpp create mode 100644 src/lib/settings/source_group/component/SourceGroupSettingsWithCustomCommand.h rename src/lib/settings/source_group/{ => component}/SourceGroupSettingsWithExcludeFilters.cpp (80%) rename src/lib/settings/source_group/{ => component}/SourceGroupSettingsWithExcludeFilters.h (63%) rename src/lib/settings/source_group/{ => component}/SourceGroupSettingsWithSonargraphProjectPath.cpp (61%) rename src/lib/settings/source_group/{ => component}/SourceGroupSettingsWithSonargraphProjectPath.h (57%) rename src/lib/settings/source_group/{ => component}/SourceGroupSettingsWithSourceExtensions.cpp (54%) rename src/lib/settings/source_group/{ => component}/SourceGroupSettingsWithSourceExtensions.h (57%) create mode 100644 src/lib/settings/source_group/component/SourceGroupSettingsWithSourceExtensionsEmpty.h rename src/lib/settings/source_group/{ => component}/SourceGroupSettingsWithSourcePaths.cpp (57%) rename src/lib/settings/source_group/{ => component}/SourceGroupSettingsWithSourcePaths.h (55%) rename src/lib/settings/source_group/{ => component/cxx}/SourceGroupSettingsWithCStandard.cpp (69%) rename src/lib/settings/source_group/{ => component/cxx}/SourceGroupSettingsWithCStandard.h (57%) rename src/lib/settings/source_group/{ => component/cxx}/SourceGroupSettingsWithCppStandard.cpp (69%) rename src/lib/settings/source_group/{ => component/cxx}/SourceGroupSettingsWithCppStandard.h (58%) create mode 100644 src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCdbPath.cpp create mode 100644 src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCdbPath.h create mode 100644 src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCodeblocksPath.cpp create mode 100644 src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCodeblocksPath.h rename src/lib/settings/source_group/{ => component/cxx}/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp (87%) rename src/lib/settings/source_group/{ => component/cxx}/SourceGroupSettingsWithCxxCrossCompilationOptions.h (72%) create mode 100644 src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPathsAndFlags.cpp rename src/lib/settings/source_group/{SourceGroupSettingsCxx.h => component/cxx/SourceGroupSettingsWithCxxPathsAndFlags.h} (54%) rename src/lib/settings/source_group/{ => component/cxx}/SourceGroupSettingsWithCxxPchOptions.cpp (74%) rename src/lib/settings/source_group/{ => component/cxx}/SourceGroupSettingsWithCxxPchOptions.h (66%) rename src/lib/settings/source_group/{ => component/cxx}/SourceGroupSettingsWithIndexedHeaderPaths.cpp (59%) rename src/lib/settings/source_group/{ => component/cxx}/SourceGroupSettingsWithIndexedHeaderPaths.h (59%) create mode 100644 src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsC.h create mode 100644 src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsCpp.h create mode 100644 src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsCxx.h rename src/lib/settings/source_group/{ => component/java}/SourceGroupSettingsWithClasspath.cpp (65%) rename src/lib/settings/source_group/{ => component/java}/SourceGroupSettingsWithClasspath.h (58%) create mode 100644 src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaGradle.cpp create mode 100644 src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaGradle.h create mode 100644 src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaMaven.cpp create mode 100644 src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaMaven.h rename src/lib/settings/source_group/{ => component/java}/SourceGroupSettingsWithJavaStandard.cpp (67%) rename src/lib/settings/source_group/{ => component/java}/SourceGroupSettingsWithJavaStandard.h (58%) create mode 100644 src/lib/settings/source_group/component/java/SourceGroupSettingsWithSourceExtensionsJava.h create mode 100644 src/lib/settings/source_group/component/python/SourceGroupSettingsWithPythonEnvironmentPath.cpp create mode 100644 src/lib/settings/source_group/component/python/SourceGroupSettingsWithPythonEnvironmentPath.h create mode 100644 src/lib/settings/source_group/component/python/SourceGroupSettingsWithSourceExtensionsPython.h create mode 100644 src/lib/settings/source_group/type/SourceGroupSettingsCEmpty.h create mode 100644 src/lib/settings/source_group/type/SourceGroupSettingsCppEmpty.h create mode 100644 src/lib/settings/source_group/type/SourceGroupSettingsCustomCommand.h create mode 100644 src/lib/settings/source_group/type/SourceGroupSettingsCxxCdb.h rename src/lib/settings/source_group/{ => type}/SourceGroupSettingsCxxCdbVs.h (56%) create mode 100644 src/lib/settings/source_group/type/SourceGroupSettingsCxxCodeblocks.h create mode 100644 src/lib/settings/source_group/type/SourceGroupSettingsCxxSonargraph.h create mode 100644 src/lib/settings/source_group/type/SourceGroupSettingsJavaEmpty.h create mode 100644 src/lib/settings/source_group/type/SourceGroupSettingsJavaGradle.h create mode 100644 src/lib/settings/source_group/type/SourceGroupSettingsJavaMaven.h rename src/lib/settings/source_group/{ => type}/SourceGroupSettingsJavaSonargraph.h (52%) create mode 100644 src/lib/settings/source_group/type/SourceGroupSettingsPythonEmpty.h diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 55fcc0c2..cd5762be 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -341,59 +341,68 @@ add_files( settings/migration/SettingsMigrationMoveKey.h settings/migration/SettingsMigrator.h + settings/source_group/component/java/SourceGroupSettingsWithClasspath.cpp + settings/source_group/component/java/SourceGroupSettingsWithClasspath.h + settings/source_group/component/java/SourceGroupSettingsWithJavaGradle.cpp + settings/source_group/component/java/SourceGroupSettingsWithJavaGradle.h + settings/source_group/component/java/SourceGroupSettingsWithJavaMaven.cpp + settings/source_group/component/java/SourceGroupSettingsWithJavaMaven.h + settings/source_group/component/java/SourceGroupSettingsWithJavaStandard.cpp + settings/source_group/component/java/SourceGroupSettingsWithJavaStandard.h + settings/source_group/component/java/SourceGroupSettingsWithSourceExtensionsJava.h + + settings/source_group/component/cxx/SourceGroupSettingsWithCppStandard.cpp + settings/source_group/component/cxx/SourceGroupSettingsWithCppStandard.h + settings/source_group/component/cxx/SourceGroupSettingsWithCStandard.cpp + settings/source_group/component/cxx/SourceGroupSettingsWithCStandard.h + settings/source_group/component/cxx/SourceGroupSettingsWithCxxCdbPath.cpp + settings/source_group/component/cxx/SourceGroupSettingsWithCxxCdbPath.h + settings/source_group/component/cxx/SourceGroupSettingsWithCxxCodeblocksPath.cpp + settings/source_group/component/cxx/SourceGroupSettingsWithCxxCodeblocksPath.h + settings/source_group/component/cxx/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp + settings/source_group/component/cxx/SourceGroupSettingsWithCxxCrossCompilationOptions.h + settings/source_group/component/cxx/SourceGroupSettingsWithCxxPathsAndFlags.cpp + settings/source_group/component/cxx/SourceGroupSettingsWithCxxPathsAndFlags.h + settings/source_group/component/cxx/SourceGroupSettingsWithCxxPchOptions.cpp + settings/source_group/component/cxx/SourceGroupSettingsWithCxxPchOptions.h + settings/source_group/component/cxx/SourceGroupSettingsWithIndexedHeaderPaths.cpp + settings/source_group/component/cxx/SourceGroupSettingsWithIndexedHeaderPaths.h + settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsC.h + settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsCpp.h + + settings/source_group/component/python/SourceGroupSettingsWithPythonEnvironmentPath.cpp + settings/source_group/component/python/SourceGroupSettingsWithPythonEnvironmentPath.h + settings/source_group/component/python/SourceGroupSettingsWithSourceExtensionsPython.h + + settings/source_group/component/SourceGroupSettingsWithCustomCommand.cpp + settings/source_group/component/SourceGroupSettingsWithCustomCommand.h + settings/source_group/component/SourceGroupSettingsWithExcludeFilters.cpp + settings/source_group/component/SourceGroupSettingsWithExcludeFilters.h + settings/source_group/component/SourceGroupSettingsWithSonargraphProjectPath.cpp + settings/source_group/component/SourceGroupSettingsWithSonargraphProjectPath.h + settings/source_group/component/SourceGroupSettingsWithSourceExtensions.cpp + settings/source_group/component/SourceGroupSettingsWithSourceExtensions.h + settings/source_group/component/SourceGroupSettingsWithSourceExtensionsEmpty.h + settings/source_group/component/SourceGroupSettingsWithSourcePaths.cpp + settings/source_group/component/SourceGroupSettingsWithSourcePaths.h + + settings/source_group/type/SourceGroupSettingsCEmpty.h + settings/source_group/type/SourceGroupSettingsCppEmpty.h + settings/source_group/type/SourceGroupSettingsCustomCommand.h + settings/source_group/type/SourceGroupSettingsCxxCdb.h + settings/source_group/type/SourceGroupSettingsCxxCdbVs.h + settings/source_group/type/SourceGroupSettingsCxxCodeblocks.h + settings/source_group/type/SourceGroupSettingsCxxSonargraph.h + settings/source_group/type/SourceGroupSettingsJavaEmpty.h + settings/source_group/type/SourceGroupSettingsJavaGradle.h + settings/source_group/type/SourceGroupSettingsJavaMaven.h + settings/source_group/type/SourceGroupSettingsJavaSonargraph.h + settings/source_group/type/SourceGroupSettingsPythonEmpty.h + settings/source_group/SourceGroupSettings.cpp settings/source_group/SourceGroupSettings.h settings/source_group/SourceGroupSettingsBase.h - settings/source_group/SourceGroupSettingsCxx.cpp - settings/source_group/SourceGroupSettingsCxx.h - settings/source_group/SourceGroupSettingsCEmpty.cpp - settings/source_group/SourceGroupSettingsCEmpty.h - settings/source_group/SourceGroupSettingsCppEmpty.cpp - settings/source_group/SourceGroupSettingsCppEmpty.h - settings/source_group/SourceGroupSettingsCustomCommand.cpp - settings/source_group/SourceGroupSettingsCustomCommand.h - settings/source_group/SourceGroupSettingsCxxCdb.cpp - settings/source_group/SourceGroupSettingsCxxCdb.h - settings/source_group/SourceGroupSettingsCxxCdbVs.cpp - settings/source_group/SourceGroupSettingsCxxCdbVs.h - settings/source_group/SourceGroupSettingsCxxCodeblocks.cpp - settings/source_group/SourceGroupSettingsCxxCodeblocks.h - settings/source_group/SourceGroupSettingsCxxSonargraph.cpp - settings/source_group/SourceGroupSettingsCxxSonargraph.h - settings/source_group/SourceGroupSettingsJava.cpp - settings/source_group/SourceGroupSettingsJava.h - settings/source_group/SourceGroupSettingsJavaEmpty.cpp - settings/source_group/SourceGroupSettingsJavaEmpty.h - settings/source_group/SourceGroupSettingsJavaGradle.cpp - settings/source_group/SourceGroupSettingsJavaGradle.h - settings/source_group/SourceGroupSettingsJavaMaven.cpp - settings/source_group/SourceGroupSettingsJavaMaven.h - settings/source_group/SourceGroupSettingsJavaSonargraph.cpp - settings/source_group/SourceGroupSettingsJavaSonargraph.h - settings/source_group/SourceGroupSettingsPythonEmpty.cpp - settings/source_group/SourceGroupSettingsPythonEmpty.h - settings/source_group/SourceGroupSettingsWithClasspath.cpp - settings/source_group/SourceGroupSettingsWithClasspath.h - settings/source_group/SourceGroupSettingsWithCppStandard.cpp - settings/source_group/SourceGroupSettingsWithCppStandard.h - settings/source_group/SourceGroupSettingsWithCStandard.cpp - settings/source_group/SourceGroupSettingsWithCStandard.h - settings/source_group/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp - settings/source_group/SourceGroupSettingsWithCxxCrossCompilationOptions.h - settings/source_group/SourceGroupSettingsWithExcludeFilters.cpp - settings/source_group/SourceGroupSettingsWithExcludeFilters.h - settings/source_group/SourceGroupSettingsWithIndexedHeaderPaths.cpp - settings/source_group/SourceGroupSettingsWithIndexedHeaderPaths.h - settings/source_group/SourceGroupSettingsWithJavaStandard.cpp - settings/source_group/SourceGroupSettingsWithJavaStandard.h - settings/source_group/SourceGroupSettingsWithCxxPchOptions.cpp - settings/source_group/SourceGroupSettingsWithCxxPchOptions.h - settings/source_group/SourceGroupSettingsWithSonargraphProjectPath.cpp - settings/source_group/SourceGroupSettingsWithSonargraphProjectPath.h - settings/source_group/SourceGroupSettingsWithSourceExtensions.cpp - settings/source_group/SourceGroupSettingsWithSourceExtensions.h - settings/source_group/SourceGroupSettingsWithSourcePaths.cpp - settings/source_group/SourceGroupSettingsWithSourcePaths.h + settings/source_group/SourceGroupSettingsWithComponents.h settings/source_group/SourceGroupStatusType.cpp settings/source_group/SourceGroupStatusType.h settings/source_group/SourceGroupType.cpp diff --git a/src/lib/settings/ProjectSettings.cpp b/src/lib/settings/ProjectSettings.cpp index d54d4978..56157ecd 100644 --- a/src/lib/settings/ProjectSettings.cpp +++ b/src/lib/settings/ProjectSettings.cpp @@ -78,7 +78,7 @@ bool ProjectSettings::equalsExceptNameAndLocation(const ProjectSettings& other) bool matched = false; for (const std::shared_ptr& otherSourceGroup : allOtherSettings) { - if (mySourceGroup->equals(otherSourceGroup)) + if (mySourceGroup->equalsSettings(otherSourceGroup.get())) { matched = true; break; @@ -215,7 +215,7 @@ std::vector> ProjectSettings::getAllSourceG if (settings) { - settings->load(m_config); + settings->loadSettings(m_config.get()); allSettings.push_back(settings); } else @@ -240,7 +240,7 @@ void ProjectSettings::setAllSourceGroupSettings(const std::vectorgetType(); setValue(key + "/type", sourceGroupTypeToString(type)); - settings->save(m_config); + settings->saveSettings(m_config.get()); } } diff --git a/src/lib/settings/source_group/SourceGroupSettings.cpp b/src/lib/settings/source_group/SourceGroupSettings.cpp index 441e6525..ba42b4b8 100644 --- a/src/lib/settings/source_group/SourceGroupSettings.cpp +++ b/src/lib/settings/source_group/SourceGroupSettings.cpp @@ -8,47 +8,46 @@ const size_t SourceGroupSettings::s_version = 1; const std::string SourceGroupSettings::s_keyPrefix = "source_groups/source_group_"; SourceGroupSettings::SourceGroupSettings( - const std::string& id, SourceGroupType type, const ProjectSettings* projectSettings + SourceGroupType type, const std::string& id, const ProjectSettings* projectSettings ) : m_projectSettings(projectSettings) + , m_type(type) , m_id(id) , m_name(sourceGroupTypeToString(type)) - , m_type(type) , m_status(SOURCE_GROUP_STATUS_ENABLED) { } -void SourceGroupSettings::load(std::shared_ptr config) +bool SourceGroupSettings::equals(const SourceGroupSettingsBase* other) const { - const std::string key = s_keyPrefix + getId(); + const SourceGroupSettings* otherPtr = dynamic_cast(other); + return ( + m_id == otherPtr->m_id && + // m_name == otherPtr->m_name && // Ignore name, since not significant regarding index state + m_type == otherPtr->m_type && + m_status == otherPtr->m_status + ); +} + +void SourceGroupSettings::load(const ConfigManager* config, const std::string& key) +{ const std::string name = config->getValueOrDefault(key + "/name", ""); if (!name.empty()) { setName(name); } - setStatus(stringToSourceGroupStatusType(config->getValueOrDefault(key + "/status", sourceGroupStatusTypeToString(SOURCE_GROUP_STATUS_ENABLED)))); + setStatus(stringToSourceGroupStatusType( + config->getValueOrDefault(key + "/status", sourceGroupStatusTypeToString(SOURCE_GROUP_STATUS_ENABLED)))); } -void SourceGroupSettings::save(std::shared_ptr config) +void SourceGroupSettings::save(ConfigManager* config, const std::string& key) { - const std::string key = s_keyPrefix + getId(); - config->setValue(key + "/status", sourceGroupStatusTypeToString(getStatus())); config->setValue(key + "/name", getName()); } -bool SourceGroupSettings::equals(std::shared_ptr other) const -{ - return ( - m_id == other->m_id && - // m_name == other->m_name && // Ignore name, since not significant regarding index state - m_type == other->m_type && - m_status == other->m_status - ); -} - std::string SourceGroupSettings::getId() const { return m_id; diff --git a/src/lib/settings/source_group/SourceGroupSettings.h b/src/lib/settings/source_group/SourceGroupSettings.h index cebf5fdc..2eaaa895 100644 --- a/src/lib/settings/source_group/SourceGroupSettings.h +++ b/src/lib/settings/source_group/SourceGroupSettings.h @@ -19,15 +19,18 @@ public: static const size_t s_version; static const std::string s_keyPrefix; - SourceGroupSettings(const std::string& id, SourceGroupType type, const ProjectSettings* projectSettings); + SourceGroupSettings(SourceGroupType type, const std::string& id, const ProjectSettings* projectSettings); virtual ~SourceGroupSettings() = default; virtual std::shared_ptr createCopy() const = 0; - virtual void load(std::shared_ptr config); - virtual void save(std::shared_ptr config); + virtual void loadSettings(const ConfigManager* config) = 0; + virtual void saveSettings(ConfigManager* config) = 0; + virtual bool equalsSettings(const SourceGroupSettingsBase* other) = 0; - virtual bool equals(std::shared_ptr other) const; + bool equals(const SourceGroupSettingsBase* other) const; + void load(const ConfigManager* config, const std::string& key); + void save(ConfigManager* config, const std::string& key); std::string getId() const; void setId(const std::string& id); @@ -51,9 +54,9 @@ protected: const ProjectSettings* m_projectSettings; private: + const SourceGroupType m_type; std::string m_id; std::string m_name; - const SourceGroupType m_type; SourceGroupStatusType m_status; }; diff --git a/src/lib/settings/source_group/SourceGroupSettingsCEmpty.cpp b/src/lib/settings/source_group/SourceGroupSettingsCEmpty.cpp deleted file mode 100644 index a44f5910..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCEmpty.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "SourceGroupSettingsCEmpty.h" - -SourceGroupSettingsCEmpty::SourceGroupSettingsCEmpty(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettingsCxx(id, SOURCE_GROUP_C_EMPTY, projectSettings) -{ -} - -std::shared_ptr SourceGroupSettingsCEmpty::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsCEmpty::load(std::shared_ptr config) -{ - SourceGroupSettingsCxx::load(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithCStandard::load(config, key); - SourceGroupSettingsWithCxxCrossCompilationOptions::load(config, key); - SourceGroupSettingsWithSourceExtensions::load(config, key); - SourceGroupSettingsWithCxxPchOptions::load(config, key); - SourceGroupSettingsWithSourcePaths::load(config, key); - SourceGroupSettingsWithExcludeFilters::load(config, key); -} - -void SourceGroupSettingsCEmpty::save(std::shared_ptr config) -{ - SourceGroupSettingsCxx::save(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithCStandard::save(config, key); - SourceGroupSettingsWithCxxCrossCompilationOptions::save(config, key); - SourceGroupSettingsWithSourceExtensions::save(config, key); - SourceGroupSettingsWithCxxPchOptions::save(config, key); - SourceGroupSettingsWithSourcePaths::save(config, key); - SourceGroupSettingsWithExcludeFilters::save(config, key); -} - -bool SourceGroupSettingsCEmpty::equals(std::shared_ptr other) const -{ - std::shared_ptr otherCxxEmpty = std::dynamic_pointer_cast(other); - - return ( - otherCxxEmpty && - SourceGroupSettingsCxx::equals(other) && - SourceGroupSettingsWithCStandard::equals(otherCxxEmpty) && - SourceGroupSettingsWithCxxCrossCompilationOptions::equals(otherCxxEmpty) && - SourceGroupSettingsWithSourceExtensions::equals(otherCxxEmpty) && - SourceGroupSettingsWithCxxPchOptions::equals(otherCxxEmpty) && - SourceGroupSettingsWithSourcePaths::equals(otherCxxEmpty) && - SourceGroupSettingsWithExcludeFilters::equals(otherCxxEmpty) - ); -} - -std::vector SourceGroupSettingsCEmpty::getDefaultSourceExtensions() const -{ - return { L".c" }; -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsCEmpty.h b/src/lib/settings/source_group/SourceGroupSettingsCEmpty.h deleted file mode 100644 index fc14d6d0..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCEmpty.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_C_EMPTY_H -#define SOURCE_GROUP_SETTINGS_C_EMPTY_H - -#include "SourceGroupSettingsCxx.h" -#include "SourceGroupSettingsWithCStandard.h" -#include "SourceGroupSettingsWithCxxCrossCompilationOptions.h" -#include "SourceGroupSettingsWithExcludeFilters.h" -#include "SourceGroupSettingsWithCxxPchOptions.h" -#include "SourceGroupSettingsWithSourceExtensions.h" -#include "SourceGroupSettingsWithSourcePaths.h" - -class SourceGroupSettingsCEmpty - : public SourceGroupSettingsCxx - , public SourceGroupSettingsWithCStandard - , public SourceGroupSettingsWithCxxCrossCompilationOptions - , public SourceGroupSettingsWithExcludeFilters - , public SourceGroupSettingsWithCxxPchOptions - , public SourceGroupSettingsWithSourceExtensions - , public SourceGroupSettingsWithSourcePaths -{ -public: - SourceGroupSettingsCEmpty(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; - -private: - std::vector getDefaultSourceExtensions() const override; -}; - -#endif // SOURCE_GROUP_SETTINGS_C_EMPTY_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsCppEmpty.cpp b/src/lib/settings/source_group/SourceGroupSettingsCppEmpty.cpp deleted file mode 100644 index 8243befe..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCppEmpty.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "SourceGroupSettingsCppEmpty.h" - -SourceGroupSettingsCppEmpty::SourceGroupSettingsCppEmpty(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettingsCxx(id, SOURCE_GROUP_CPP_EMPTY, projectSettings) -{ -} - -std::shared_ptr SourceGroupSettingsCppEmpty::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsCppEmpty::load(std::shared_ptr config) -{ - SourceGroupSettingsCxx::load(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithCppStandard::load(config, key); - SourceGroupSettingsWithCxxCrossCompilationOptions::load(config, key); - SourceGroupSettingsWithSourceExtensions::load(config, key); - SourceGroupSettingsWithCxxPchOptions::load(config, key); - SourceGroupSettingsWithSourcePaths::load(config, key); - SourceGroupSettingsWithExcludeFilters::load(config, key); -} - -void SourceGroupSettingsCppEmpty::save(std::shared_ptr config) -{ - SourceGroupSettingsCxx::save(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithCppStandard::save(config, key); - SourceGroupSettingsWithCxxCrossCompilationOptions::save(config, key); - SourceGroupSettingsWithSourceExtensions::save(config, key); - SourceGroupSettingsWithCxxPchOptions::save(config, key); - SourceGroupSettingsWithSourcePaths::save(config, key); - SourceGroupSettingsWithExcludeFilters::save(config, key); -} - -bool SourceGroupSettingsCppEmpty::equals(std::shared_ptr other) const -{ - std::shared_ptr otherCxxEmpty = std::dynamic_pointer_cast(other); - - return ( - otherCxxEmpty && - SourceGroupSettingsCxx::equals(other) && - SourceGroupSettingsWithCppStandard::equals(otherCxxEmpty) && - SourceGroupSettingsWithCxxCrossCompilationOptions::equals(otherCxxEmpty) && - SourceGroupSettingsWithSourceExtensions::equals(otherCxxEmpty) && - SourceGroupSettingsWithCxxPchOptions::equals(otherCxxEmpty) && - SourceGroupSettingsWithSourcePaths::equals(otherCxxEmpty) && - SourceGroupSettingsWithExcludeFilters::equals(otherCxxEmpty) - ); -} - -std::vector SourceGroupSettingsCppEmpty::getDefaultSourceExtensions() const -{ - return { - L".cpp", - L".cxx", - L".cc" - }; -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsCppEmpty.h b/src/lib/settings/source_group/SourceGroupSettingsCppEmpty.h deleted file mode 100644 index cca290ac..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCppEmpty.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_CPP_EMPTY_H -#define SOURCE_GROUP_SETTINGS_CPP_EMPTY_H - -#include "SourceGroupSettingsCxx.h" -#include "SourceGroupSettingsWithCppStandard.h" -#include "SourceGroupSettingsWithCxxCrossCompilationOptions.h" -#include "SourceGroupSettingsWithExcludeFilters.h" -#include "SourceGroupSettingsWithCxxPchOptions.h" -#include "SourceGroupSettingsWithSourceExtensions.h" -#include "SourceGroupSettingsWithSourcePaths.h" - -class SourceGroupSettingsCppEmpty - : public SourceGroupSettingsCxx - , public SourceGroupSettingsWithCppStandard - , public SourceGroupSettingsWithCxxCrossCompilationOptions - , public SourceGroupSettingsWithExcludeFilters - , public SourceGroupSettingsWithCxxPchOptions - , public SourceGroupSettingsWithSourceExtensions - , public SourceGroupSettingsWithSourcePaths -{ -public: - SourceGroupSettingsCppEmpty(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; - -private: - std::vector getDefaultSourceExtensions() const override; -}; - -#endif // SOURCE_GROUP_SETTINGS_CPP_EMPTY_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsCustomCommand.cpp b/src/lib/settings/source_group/SourceGroupSettingsCustomCommand.cpp deleted file mode 100644 index 04fe12bc..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCustomCommand.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "SourceGroupSettingsCustomCommand.h" - -#include "ConfigManager.h" -#include "FilePath.h" - -SourceGroupSettingsCustomCommand::SourceGroupSettingsCustomCommand( - const std::string& id, const ProjectSettings* projectSettings -) - : SourceGroupSettings(id, SOURCE_GROUP_CUSTOM_COMMAND, projectSettings) - , m_runInParallel(false) -{ -} - -std::shared_ptr SourceGroupSettingsCustomCommand::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsCustomCommand::load(std::shared_ptr config) -{ - SourceGroupSettings::load(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithSourceExtensions::load(config, key); - SourceGroupSettingsWithSourcePaths::load(config, key); - SourceGroupSettingsWithExcludeFilters::load(config, key); - - setCustomCommand(config->getValueOrDefault(key + "/custom_command", std::wstring())); - setRunInParallel(config->getValueOrDefault(key + "/run_in_parallel", false)); -} - -void SourceGroupSettingsCustomCommand::save(std::shared_ptr config) -{ - SourceGroupSettings::save(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithSourceExtensions::save(config, key); - SourceGroupSettingsWithSourcePaths::save(config, key); - SourceGroupSettingsWithExcludeFilters::save(config, key); - - config->setValue(key + "/custom_command", getCustomCommand()); - config->setValue(key + "/run_in_parallel", getRunInParallel()); -} - -bool SourceGroupSettingsCustomCommand::equals(std::shared_ptr other) const -{ - std::shared_ptr otherCustom = - std::dynamic_pointer_cast(other); - - return ( - otherCustom && - SourceGroupSettings::equals(other) && - SourceGroupSettingsWithSourceExtensions::equals(otherCustom) && - SourceGroupSettingsWithSourcePaths::equals(otherCustom) && - SourceGroupSettingsWithExcludeFilters::equals(otherCustom) && - m_customCommand == otherCustom->m_customCommand - ); -} - -const std::wstring& SourceGroupSettingsCustomCommand::getCustomCommand() const -{ - return m_customCommand; -} - -void SourceGroupSettingsCustomCommand::setCustomCommand(const std::wstring& customCommand) -{ - m_customCommand = customCommand; -} - -bool SourceGroupSettingsCustomCommand::getRunInParallel() const -{ - return m_runInParallel; -} - -void SourceGroupSettingsCustomCommand::setRunInParallel(bool runInParallel) -{ - m_runInParallel = runInParallel; -} - -std::vector SourceGroupSettingsCustomCommand::getDefaultSourceExtensions() const -{ - return {}; -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsCustomCommand.h b/src/lib/settings/source_group/SourceGroupSettingsCustomCommand.h deleted file mode 100644 index 7de17b0a..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCustomCommand.h +++ /dev/null @@ -1,38 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_CUSTOM_COMMAND_H -#define SOURCE_GROUP_SETTINGS_CUSTOM_COMMAND_H - -#include "SourceGroupSettings.h" -#include "SourceGroupSettingsWithExcludeFilters.h" -#include "SourceGroupSettingsWithSourceExtensions.h" -#include "SourceGroupSettingsWithSourcePaths.h" - -class SourceGroupSettingsCustomCommand - : public SourceGroupSettings - , public SourceGroupSettingsWithExcludeFilters - , public SourceGroupSettingsWithSourceExtensions - , public SourceGroupSettingsWithSourcePaths -{ -public: - SourceGroupSettingsCustomCommand(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; - - const std::wstring& getCustomCommand() const; - void setCustomCommand(const std::wstring& customCommand); - - bool getRunInParallel() const; - void setRunInParallel(bool runInParallel); - -private: - std::vector getDefaultSourceExtensions() const override; - - std::wstring m_customCommand; - bool m_runInParallel; -}; - -#endif // SOURCE_GROUP_SETTINGS_CUSTOM_COMMAND_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsCxx.cpp b/src/lib/settings/source_group/SourceGroupSettingsCxx.cpp deleted file mode 100644 index 49ce9444..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCxx.cpp +++ /dev/null @@ -1,88 +0,0 @@ -#include "SourceGroupSettingsCxx.h" - -#include "ProjectSettings.h" -#include "ConfigManager.h" -#include "utility.h" - -SourceGroupSettingsCxx::SourceGroupSettingsCxx(const std::string& id, SourceGroupType type, const ProjectSettings* projectSettings) - : SourceGroupSettings(id, type, projectSettings) - , m_headerSearchPaths(std::vector()) - , m_frameworkSearchPaths(std::vector()) - , m_compilerFlags(std::vector()) -{ -} - -void SourceGroupSettingsCxx::load(std::shared_ptr config) -{ - SourceGroupSettings::load(config); - - const std::string key = s_keyPrefix + getId(); - - setHeaderSearchPaths(config->getValuesOrDefaults(key + "/header_search_paths/header_search_path", std::vector())); - setFrameworkSearchPaths(config->getValuesOrDefaults(key + "/framework_search_paths/framework_search_path", std::vector())); - setCompilerFlags(config->getValuesOrDefaults(key + "/compiler_flags/compiler_flag", std::vector())); -} - -void SourceGroupSettingsCxx::save(std::shared_ptr config) -{ - SourceGroupSettings::save(config); - - const std::string key = s_keyPrefix + getId(); - - config->setValues(key + "/header_search_paths/header_search_path", getHeaderSearchPaths()); - config->setValues(key + "/framework_search_paths/framework_search_path", getFrameworkSearchPaths()); - config->setValues(key + "/compiler_flags/compiler_flag", getCompilerFlags()); -} - -bool SourceGroupSettingsCxx::equals(std::shared_ptr other) const -{ - std::shared_ptr otherCxx = std::dynamic_pointer_cast(other); - - return ( - otherCxx && - SourceGroupSettings::equals(other) && - utility::isPermutation(m_headerSearchPaths, otherCxx->m_headerSearchPaths) && - utility::isPermutation(m_frameworkSearchPaths, otherCxx->m_frameworkSearchPaths) && - utility::isPermutation(m_compilerFlags, otherCxx->m_compilerFlags) - ); -} - -std::vector SourceGroupSettingsCxx::getHeaderSearchPaths() const -{ - return m_headerSearchPaths; -} - -std::vector SourceGroupSettingsCxx::getHeaderSearchPathsExpandedAndAbsolute() const -{ - return m_projectSettings->makePathsExpandedAndAbsolute(getHeaderSearchPaths()); -} - -void SourceGroupSettingsCxx::setHeaderSearchPaths(const std::vector& headerSearchPaths) -{ - m_headerSearchPaths = headerSearchPaths; -} - -std::vector SourceGroupSettingsCxx::getFrameworkSearchPaths() const -{ - return m_frameworkSearchPaths; -} - -std::vector SourceGroupSettingsCxx::getFrameworkSearchPathsExpandedAndAbsolute() const -{ - return m_projectSettings->makePathsExpandedAndAbsolute(getFrameworkSearchPaths()); -} - -void SourceGroupSettingsCxx::setFrameworkSearchPaths(const std::vector& frameworkSearchPaths) -{ - m_frameworkSearchPaths = frameworkSearchPaths; -} - -std::vector SourceGroupSettingsCxx::getCompilerFlags() const -{ - return m_compilerFlags; -} - -void SourceGroupSettingsCxx::setCompilerFlags(const std::vector& compilerFlags) -{ - m_compilerFlags = compilerFlags; -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsCxxCdb.cpp b/src/lib/settings/source_group/SourceGroupSettingsCxxCdb.cpp deleted file mode 100644 index e43e2f6b..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCxxCdb.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "SourceGroupSettingsCxxCdb.h" - -#include "ConfigManager.h" -#include "ProjectSettings.h" -#include "utilityFile.h" - -SourceGroupSettingsCxxCdb::SourceGroupSettingsCxxCdb(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettingsCxx(id, SOURCE_GROUP_CXX_CDB, projectSettings) - , m_compilationDatabasePath(FilePath()) -{ -} - -std::shared_ptr SourceGroupSettingsCxxCdb::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsCxxCdb::load(std::shared_ptr config) -{ - SourceGroupSettingsCxx::load(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithCxxPchOptions::load(config, key); - SourceGroupSettingsWithExcludeFilters::load(config, key); - SourceGroupSettingsWithIndexedHeaderPaths::load(config, key); - - setCompilationDatabasePath(config->getValueOrDefault(key + "/build_file_path/compilation_db_path", FilePath(L""))); -} - -void SourceGroupSettingsCxxCdb::save(std::shared_ptr config) -{ - SourceGroupSettingsCxx::save(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithCxxPchOptions::save(config, key); - SourceGroupSettingsWithExcludeFilters::save(config, key); - SourceGroupSettingsWithIndexedHeaderPaths::save(config, key); - - config->setValue(key + "/build_file_path/compilation_db_path", getCompilationDatabasePath().wstr()); -} - -bool SourceGroupSettingsCxxCdb::equals(std::shared_ptr other) const -{ - std::shared_ptr otherCxxCdb = std::dynamic_pointer_cast(other); - - return ( - otherCxxCdb && - SourceGroupSettingsCxx::equals(other) && - SourceGroupSettingsWithCxxPchOptions::equals(otherCxxCdb) && - SourceGroupSettingsWithExcludeFilters::equals(otherCxxCdb) && - SourceGroupSettingsWithIndexedHeaderPaths::equals(otherCxxCdb) && - m_compilationDatabasePath == otherCxxCdb->m_compilationDatabasePath - ); -} - -FilePath SourceGroupSettingsCxxCdb::getCompilationDatabasePath() const -{ - return m_compilationDatabasePath; -} - -FilePath SourceGroupSettingsCxxCdb::getCompilationDatabasePathExpandedAndAbsolute() const -{ - return utility::getExpandedAndAbsolutePath(getCompilationDatabasePath(), m_projectSettings->getProjectDirectoryPath()); -} - -void SourceGroupSettingsCxxCdb::setCompilationDatabasePath(const FilePath& compilationDatabasePath) -{ - m_compilationDatabasePath = compilationDatabasePath; -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsCxxCdb.h b/src/lib/settings/source_group/SourceGroupSettingsCxxCdb.h deleted file mode 100644 index d02b0949..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCxxCdb.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_CXX_CDB_H -#define SOURCE_GROUP_SETTINGS_CXX_CDB_H - -#include "SourceGroupSettingsCxx.h" -#include "SourceGroupSettingsWithCxxPchOptions.h" -#include "SourceGroupSettingsWithExcludeFilters.h" -#include "SourceGroupSettingsWithIndexedHeaderPaths.h" -#include "FilePath.h" - -class SourceGroupSettingsCxxCdb - : public SourceGroupSettingsCxx - , public SourceGroupSettingsWithCxxPchOptions - , public SourceGroupSettingsWithExcludeFilters - , public SourceGroupSettingsWithIndexedHeaderPaths -{ -public: - SourceGroupSettingsCxxCdb(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; - - FilePath getCompilationDatabasePath() const; - FilePath getCompilationDatabasePathExpandedAndAbsolute() const; - void setCompilationDatabasePath(const FilePath& compilationDatabasePath); - -private: - FilePath m_compilationDatabasePath; -}; - -#endif // SOURCE_GROUP_SETTINGS_CXX_CDB_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsCxxCdbVs.cpp b/src/lib/settings/source_group/SourceGroupSettingsCxxCdbVs.cpp deleted file mode 100644 index b6f69948..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCxxCdbVs.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include "SourceGroupSettingsCxxCdbVs.h" - -SourceGroupSettingsCxxCdbVs::SourceGroupSettingsCxxCdbVs(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettingsCxxCdb(id, projectSettings) -{ -} - -std::shared_ptr SourceGroupSettingsCxxCdbVs::createCopy() const -{ - return std::make_shared(*this); -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsCxxCodeblocks.cpp b/src/lib/settings/source_group/SourceGroupSettingsCxxCodeblocks.cpp deleted file mode 100644 index 26d8024c..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCxxCodeblocks.cpp +++ /dev/null @@ -1,86 +0,0 @@ -#include "SourceGroupSettingsCxxCodeblocks.h" - -#include "ConfigManager.h" -#include "ProjectSettings.h" -#include "utilityFile.h" - -SourceGroupSettingsCxxCodeblocks::SourceGroupSettingsCxxCodeblocks(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettingsCxx(id, SOURCE_GROUP_CXX_CODEBLOCKS, projectSettings) -{ -} - -std::shared_ptr SourceGroupSettingsCxxCodeblocks::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsCxxCodeblocks::load(std::shared_ptr config) -{ - SourceGroupSettingsCxx::load(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithCppStandard::load(config, key); - SourceGroupSettingsWithCStandard::load(config, key); - SourceGroupSettingsWithExcludeFilters::load(config, key); - SourceGroupSettingsWithIndexedHeaderPaths::load(config, key); - SourceGroupSettingsWithSourceExtensions::load(config, key); - - setCodeblocksProjectPath(config->getValueOrDefault(key + "/codeblocks_project_path", FilePath(L""))); -} - -void SourceGroupSettingsCxxCodeblocks::save(std::shared_ptr config) -{ - SourceGroupSettingsCxx::save(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithCppStandard::save(config, key); - SourceGroupSettingsWithCStandard::save(config, key); - SourceGroupSettingsWithExcludeFilters::save(config, key); - SourceGroupSettingsWithIndexedHeaderPaths::save(config, key); - SourceGroupSettingsWithSourceExtensions::save(config, key); - - config->setValue(key + "/codeblocks_project_path", getCodeblocksProjectPath().wstr()); -} - -bool SourceGroupSettingsCxxCodeblocks::equals(std::shared_ptr other) const -{ - std::shared_ptr otherCxxCodeblocks = std::dynamic_pointer_cast(other); - - return ( - otherCxxCodeblocks && - SourceGroupSettingsCxx::equals(other) && - SourceGroupSettingsWithCppStandard::equals(otherCxxCodeblocks) && - SourceGroupSettingsWithCStandard::equals(otherCxxCodeblocks) && - SourceGroupSettingsWithExcludeFilters::equals(otherCxxCodeblocks) && - SourceGroupSettingsWithIndexedHeaderPaths::equals(otherCxxCodeblocks) && - SourceGroupSettingsWithSourceExtensions::equals(otherCxxCodeblocks) && - m_codeblocksProjectPath == otherCxxCodeblocks->m_codeblocksProjectPath - ); -} - -FilePath SourceGroupSettingsCxxCodeblocks::getCodeblocksProjectPath() const -{ - return m_codeblocksProjectPath; -} - -FilePath SourceGroupSettingsCxxCodeblocks::getCodeblocksProjectPathExpandedAndAbsolute() const -{ - return utility::getExpandedAndAbsolutePath(getCodeblocksProjectPath(), m_projectSettings->getProjectDirectoryPath()); -} - -void SourceGroupSettingsCxxCodeblocks::setCodeblocksProjectPath(const FilePath& compilationDatabasePath) -{ - m_codeblocksProjectPath = compilationDatabasePath; -} - -std::vector SourceGroupSettingsCxxCodeblocks::getDefaultSourceExtensions() const -{ - return { - L".c", - L".cpp", - L".cxx", - L".cc" - }; -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsCxxCodeblocks.h b/src/lib/settings/source_group/SourceGroupSettingsCxxCodeblocks.h deleted file mode 100644 index 076f9155..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCxxCodeblocks.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_CXX_CODEBLOCKS_H -#define SOURCE_GROUP_SETTINGS_CXX_CODEBLOCKS_H - -#include "SourceGroupSettingsCxx.h" -#include "SourceGroupSettingsWithCppStandard.h" -#include "SourceGroupSettingsWithCStandard.h" -#include "SourceGroupSettingsWithExcludeFilters.h" -#include "SourceGroupSettingsWithIndexedHeaderPaths.h" -#include "SourceGroupSettingsWithSourceExtensions.h" - -class SourceGroupSettingsCxxCodeblocks - : public SourceGroupSettingsCxx - , public SourceGroupSettingsWithCppStandard - , public SourceGroupSettingsWithCStandard - , public SourceGroupSettingsWithExcludeFilters - , public SourceGroupSettingsWithIndexedHeaderPaths - , public SourceGroupSettingsWithSourceExtensions -{ -public: - SourceGroupSettingsCxxCodeblocks(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; - - FilePath getCodeblocksProjectPath() const; - FilePath getCodeblocksProjectPathExpandedAndAbsolute() const; - void setCodeblocksProjectPath(const FilePath& compilationDatabasePath); - -private: - std::vector getDefaultSourceExtensions() const override; - - FilePath m_codeblocksProjectPath; -}; - -#endif // SOURCE_GROUP_SETTINGS_CXX_CODEBLOCKS_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsCxxSonargraph.cpp b/src/lib/settings/source_group/SourceGroupSettingsCxxSonargraph.cpp deleted file mode 100644 index 5c6f35f1..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCxxSonargraph.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "SourceGroupSettingsCxxSonargraph.h" - -SourceGroupSettingsCxxSonargraph::SourceGroupSettingsCxxSonargraph(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettingsCxx(id, SOURCE_GROUP_CXX_SONARGRAPH, projectSettings) -{ -} - -std::shared_ptr SourceGroupSettingsCxxSonargraph::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsCxxSonargraph::load(std::shared_ptr config) -{ - SourceGroupSettingsCxx::load(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithCppStandard::load(config, key); - SourceGroupSettingsWithIndexedHeaderPaths::load(config, key); - SourceGroupSettingsWithSonargraphProjectPath::load(config, key); -} - -void SourceGroupSettingsCxxSonargraph::save(std::shared_ptr config) -{ - SourceGroupSettingsCxx::save(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithCppStandard::save(config, key); - SourceGroupSettingsWithIndexedHeaderPaths::save(config, key); - SourceGroupSettingsWithSonargraphProjectPath::save(config, key); -} - -bool SourceGroupSettingsCxxSonargraph::equals(std::shared_ptr other) const -{ - std::shared_ptr otherCxxSonargraph = std::dynamic_pointer_cast(other); - - return ( - otherCxxSonargraph && - SourceGroupSettingsCxx::equals(other) && - SourceGroupSettingsWithCppStandard::equals(otherCxxSonargraph) && - SourceGroupSettingsWithIndexedHeaderPaths::equals(otherCxxSonargraph) && - SourceGroupSettingsWithSonargraphProjectPath::equals(otherCxxSonargraph) - ); -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsCxxSonargraph.h b/src/lib/settings/source_group/SourceGroupSettingsCxxSonargraph.h deleted file mode 100644 index cade65e4..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsCxxSonargraph.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_CXX_SONARGRAPH_H -#define SOURCE_GROUP_SETTINGS_CXX_SONARGRAPH_H - -#include "SourceGroupSettingsCxx.h" -#include "SourceGroupSettingsWithCppStandard.h" -#include "SourceGroupSettingsWithIndexedHeaderPaths.h" -#include "SourceGroupSettingsWithSonargraphProjectPath.h" - -class SourceGroupSettingsCxxSonargraph - : public SourceGroupSettingsCxx - , public SourceGroupSettingsWithCppStandard - , public SourceGroupSettingsWithIndexedHeaderPaths - , public SourceGroupSettingsWithSonargraphProjectPath -{ -public: - SourceGroupSettingsCxxSonargraph(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; -}; - -#endif // SOURCE_GROUP_SETTINGS_CXX_SONARGRAPH_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsJava.cpp b/src/lib/settings/source_group/SourceGroupSettingsJava.cpp deleted file mode 100644 index 72844658..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsJava.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "SourceGroupSettingsJava.h" - -SourceGroupSettingsJava::SourceGroupSettingsJava(const std::string& id, SourceGroupType type, const ProjectSettings* projectSettings) - : SourceGroupSettings(id, type, projectSettings) -{ -} - -void SourceGroupSettingsJava::load(std::shared_ptr config) -{ - SourceGroupSettings::load(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithSourceExtensions::load(config, key); - SourceGroupSettingsWithExcludeFilters::load(config, key); - SourceGroupSettingsWithJavaStandard::load(config, key); -} - -void SourceGroupSettingsJava::save(std::shared_ptr config) -{ - SourceGroupSettings::save(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithSourceExtensions::save(config, key); - SourceGroupSettingsWithExcludeFilters::save(config, key); - SourceGroupSettingsWithJavaStandard::save(config, key); -} - -bool SourceGroupSettingsJava::equals(std::shared_ptr other) const -{ - std::shared_ptr otherJava = std::dynamic_pointer_cast(other); - - return ( - otherJava && - SourceGroupSettings::equals(other) && - SourceGroupSettingsWithSourceExtensions::equals(otherJava) && - SourceGroupSettingsWithExcludeFilters::equals(otherJava) && - SourceGroupSettingsWithJavaStandard::equals(otherJava) - ); -} - -std::vector SourceGroupSettingsJava::getDefaultSourceExtensions() const -{ - return { L".java" }; -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsJava.h b/src/lib/settings/source_group/SourceGroupSettingsJava.h deleted file mode 100644 index 6a96e2d8..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsJava.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_JAVA_H -#define SOURCE_GROUP_SETTINGS_JAVA_H - -#include -#include - -#include "SourceGroupSettings.h" -#include "SourceGroupSettingsWithExcludeFilters.h" -#include "SourceGroupSettingsWithJavaStandard.h" -#include "SourceGroupSettingsWithSourceExtensions.h" - -class SourceGroupSettingsJava - : public SourceGroupSettings - , public SourceGroupSettingsWithSourceExtensions - , public SourceGroupSettingsWithExcludeFilters - , public SourceGroupSettingsWithJavaStandard -{ -public: - SourceGroupSettingsJava(const std::string& id, SourceGroupType type, const ProjectSettings* projectSettings); - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; - -private: - std::vector getDefaultSourceExtensions() const override; -}; - -#endif // SOURCE_GROUP_SETTINGS_JAVA_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsJavaEmpty.cpp b/src/lib/settings/source_group/SourceGroupSettingsJavaEmpty.cpp deleted file mode 100644 index a4471557..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsJavaEmpty.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include "SourceGroupSettingsJavaEmpty.h" - -SourceGroupSettingsJavaEmpty::SourceGroupSettingsJavaEmpty(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettingsJava(id, SOURCE_GROUP_JAVA_EMPTY, projectSettings) -{ -} - -std::shared_ptr SourceGroupSettingsJavaEmpty::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsJavaEmpty::load(std::shared_ptr config) -{ - SourceGroupSettingsJava::load(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithSourcePaths::load(config, key); - SourceGroupSettingsWithClasspath::load(config, key); -} - -void SourceGroupSettingsJavaEmpty::save(std::shared_ptr config) -{ - SourceGroupSettingsJava::save(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithSourcePaths::save(config, key); - SourceGroupSettingsWithClasspath::save(config, key); -} - -bool SourceGroupSettingsJavaEmpty::equals(std::shared_ptr other) const -{ - std::shared_ptr otherJava = std::dynamic_pointer_cast(other); - - return ( - otherJava && - SourceGroupSettingsJava::equals(other) && - SourceGroupSettingsWithSourcePaths::equals(otherJava) && - SourceGroupSettingsWithClasspath::equals(otherJava) - ); -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsJavaEmpty.h b/src/lib/settings/source_group/SourceGroupSettingsJavaEmpty.h deleted file mode 100644 index 933dc916..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsJavaEmpty.h +++ /dev/null @@ -1,24 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_JAVA_EMPTY_H -#define SOURCE_GROUP_SETTINGS_JAVA_EMPTY_H - -#include "SourceGroupSettingsJava.h" -#include "SourceGroupSettingsWithClasspath.h" -#include "SourceGroupSettingsWithSourcePaths.h" - -class SourceGroupSettingsJavaEmpty - : public SourceGroupSettingsJava - , public SourceGroupSettingsWithSourcePaths - , public SourceGroupSettingsWithClasspath -{ -public: - SourceGroupSettingsJavaEmpty(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; -}; - -#endif // SOURCE_GROUP_SETTINGS_JAVA_EMPTY_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsJavaGradle.cpp b/src/lib/settings/source_group/SourceGroupSettingsJavaGradle.cpp deleted file mode 100644 index 99b1f4bd..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsJavaGradle.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include "SourceGroupSettingsJavaGradle.h" - -#include "ConfigManager.h" -#include "ProjectSettings.h" -#include "utilityFile.h" - -SourceGroupSettingsJavaGradle::SourceGroupSettingsJavaGradle(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettingsJava(id, SOURCE_GROUP_JAVA_GRADLE, projectSettings) - , m_gradleProjectFilePath(FilePath()) - , m_shouldIndexGradleTests(false) -{ -} - -std::shared_ptr SourceGroupSettingsJavaGradle::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsJavaGradle::load(std::shared_ptr config) -{ - SourceGroupSettingsJava::load(config); - - const std::string key = s_keyPrefix + getId(); - - setGradleProjectFilePath(config->getValueOrDefault(key + "/gradle/project_file_path", FilePath(L""))); - setShouldIndexGradleTests(config->getValueOrDefault(key + "/gradle/should_index_tests", false)); -} - -void SourceGroupSettingsJavaGradle::save(std::shared_ptr config) -{ - SourceGroupSettingsJava::save(config); - - const std::string key = s_keyPrefix + getId(); - - config->setValue(key + "/gradle/project_file_path", getGradleProjectFilePath().wstr()); - config->setValue(key + "/gradle/should_index_tests", getShouldIndexGradleTests()); -} - -bool SourceGroupSettingsJavaGradle::equals(std::shared_ptr other) const -{ - std::shared_ptr otherJavaGradle = std::dynamic_pointer_cast(other); - - return ( - otherJavaGradle && - SourceGroupSettingsJava::equals(other) && - m_gradleProjectFilePath == otherJavaGradle->m_gradleProjectFilePath && - m_shouldIndexGradleTests == otherJavaGradle->m_shouldIndexGradleTests - ); -} - -FilePath SourceGroupSettingsJavaGradle::getGradleDependenciesDirectoryPath() const -{ - return getSourceGroupDependenciesDirectoryPath().concatenate(L"gradle"); -} - -FilePath SourceGroupSettingsJavaGradle::getGradleProjectFilePath() const -{ - return m_gradleProjectFilePath; -} - -FilePath SourceGroupSettingsJavaGradle::getGradleProjectFilePathExpandedAndAbsolute() const -{ - return utility::getExpandedAndAbsolutePath(getGradleProjectFilePath(), getProjectSettings()->getProjectDirectoryPath()); -} - -void SourceGroupSettingsJavaGradle::setGradleProjectFilePath(const FilePath& path) -{ - m_gradleProjectFilePath = path; -} - -bool SourceGroupSettingsJavaGradle::getShouldIndexGradleTests() const -{ - return m_shouldIndexGradleTests; -} - -void SourceGroupSettingsJavaGradle::setShouldIndexGradleTests(bool value) -{ - m_shouldIndexGradleTests = value; -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsJavaGradle.h b/src/lib/settings/source_group/SourceGroupSettingsJavaGradle.h deleted file mode 100644 index a0f7199f..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsJavaGradle.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_JAVA_GRADLE_H -#define SOURCE_GROUP_SETTINGS_JAVA_GRADLE_H - -#include "SourceGroupSettingsJava.h" -#include "FilePath.h" - -class SourceGroupSettingsJavaGradle - : public SourceGroupSettingsJava -{ -public: - SourceGroupSettingsJavaGradle(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; - - FilePath getGradleDependenciesDirectoryPath() const; - - FilePath getGradleProjectFilePath() const; - FilePath getGradleProjectFilePathExpandedAndAbsolute() const; - void setGradleProjectFilePath(const FilePath& path); - - bool getShouldIndexGradleTests() const; - void setShouldIndexGradleTests(bool value); - -private: - FilePath m_gradleProjectFilePath; - bool m_shouldIndexGradleTests; -}; - -#endif // SOURCE_GROUP_SETTINGS_JAVA_GRADLE_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsJavaMaven.cpp b/src/lib/settings/source_group/SourceGroupSettingsJavaMaven.cpp deleted file mode 100644 index a3089af6..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsJavaMaven.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include "SourceGroupSettingsJavaMaven.h" - -#include "ConfigManager.h" -#include "ProjectSettings.h" -#include "utilityFile.h" - -SourceGroupSettingsJavaMaven::SourceGroupSettingsJavaMaven(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettingsJava(id, SOURCE_GROUP_JAVA_MAVEN, projectSettings) - , m_mavenProjectFilePath(FilePath()) - , m_shouldIndexMavenTests(false) -{ -} - -std::shared_ptr SourceGroupSettingsJavaMaven::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsJavaMaven::load(std::shared_ptr config) -{ - SourceGroupSettingsJava::load(config); - - const std::string key = s_keyPrefix + getId(); - - setMavenProjectFilePath(config->getValueOrDefault(key + "/maven/project_file_path", FilePath(L""))); - setShouldIndexMavenTests(config->getValueOrDefault(key + "/maven/should_index_tests", false)); -} - -void SourceGroupSettingsJavaMaven::save(std::shared_ptr config) -{ - SourceGroupSettingsJava::save(config); - - const std::string key = s_keyPrefix + getId(); - - config->setValue(key + "/maven/project_file_path", getMavenProjectFilePath().wstr()); - config->setValue(key + "/maven/should_index_tests", getShouldIndexMavenTests()); -} - -bool SourceGroupSettingsJavaMaven::equals(std::shared_ptr other) const -{ - std::shared_ptr otherJavaMaven = std::dynamic_pointer_cast(other); - - return ( - otherJavaMaven && - SourceGroupSettingsJava::equals(other) && - m_mavenProjectFilePath == otherJavaMaven->m_mavenProjectFilePath && - m_shouldIndexMavenTests == otherJavaMaven->m_shouldIndexMavenTests - ); -} - -FilePath SourceGroupSettingsJavaMaven::getMavenDependenciesDirectoryPath() const -{ - return getSourceGroupDependenciesDirectoryPath().concatenate(L"maven"); -} - -FilePath SourceGroupSettingsJavaMaven::getMavenProjectFilePath() const -{ - return m_mavenProjectFilePath; -} - -FilePath SourceGroupSettingsJavaMaven::getMavenProjectFilePathExpandedAndAbsolute() const -{ - return utility::getExpandedAndAbsolutePath(getMavenProjectFilePath(), getProjectSettings()->getProjectDirectoryPath()); -} - -void SourceGroupSettingsJavaMaven::setMavenProjectFilePath(const FilePath& path) -{ - m_mavenProjectFilePath = path; -} - -bool SourceGroupSettingsJavaMaven::getShouldIndexMavenTests() const -{ - return m_shouldIndexMavenTests; -} - -void SourceGroupSettingsJavaMaven::setShouldIndexMavenTests(bool value) -{ - m_shouldIndexMavenTests = value; -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsJavaMaven.h b/src/lib/settings/source_group/SourceGroupSettingsJavaMaven.h deleted file mode 100644 index 556339db..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsJavaMaven.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_JAVA_MAVEN_H -#define SOURCE_GROUP_SETTINGS_JAVA_MAVEN_H - -#include "SourceGroupSettingsJava.h" -#include "FilePath.h" - -class SourceGroupSettingsJavaMaven - : public SourceGroupSettingsJava -{ -public: - SourceGroupSettingsJavaMaven(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; - - FilePath getMavenDependenciesDirectoryPath() const; - - FilePath getMavenProjectFilePath() const; - FilePath getMavenProjectFilePathExpandedAndAbsolute() const; - void setMavenProjectFilePath(const FilePath& path); - - bool getShouldIndexMavenTests() const; - void setShouldIndexMavenTests(bool value); - -private: - FilePath m_mavenProjectFilePath; - bool m_shouldIndexMavenTests; -}; - -#endif // SOURCE_GROUP_SETTINGS_JAVA_MAVEN_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsJavaSonargraph.cpp b/src/lib/settings/source_group/SourceGroupSettingsJavaSonargraph.cpp deleted file mode 100644 index 1e5acd86..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsJavaSonargraph.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "SourceGroupSettingsJavaSonargraph.h" - -SourceGroupSettingsJavaSonargraph::SourceGroupSettingsJavaSonargraph(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettings(id, SOURCE_GROUP_JAVA_SONARGRAPH, projectSettings) -{ -} - -std::shared_ptr SourceGroupSettingsJavaSonargraph::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsJavaSonargraph::load(std::shared_ptr config) -{ - SourceGroupSettings::load(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithClasspath::load(config, key); - SourceGroupSettingsWithJavaStandard::load(config, key); - SourceGroupSettingsWithSonargraphProjectPath::load(config, key); -} - -void SourceGroupSettingsJavaSonargraph::save(std::shared_ptr config) -{ - SourceGroupSettings::save(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithClasspath::save(config, key); - SourceGroupSettingsWithJavaStandard::save(config, key); - SourceGroupSettingsWithSonargraphProjectPath::save(config, key); -} - -bool SourceGroupSettingsJavaSonargraph::equals(std::shared_ptr other) const -{ - std::shared_ptr otherJavaSonargraph = std::dynamic_pointer_cast(other); - - return ( - otherJavaSonargraph && - SourceGroupSettings::equals(other) && - SourceGroupSettingsWithClasspath::equals(otherJavaSonargraph) && - SourceGroupSettingsWithJavaStandard::equals(otherJavaSonargraph) && - SourceGroupSettingsWithSonargraphProjectPath::equals(otherJavaSonargraph) - ); -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsPythonEmpty.cpp b/src/lib/settings/source_group/SourceGroupSettingsPythonEmpty.cpp deleted file mode 100644 index 58868466..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsPythonEmpty.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include "SourceGroupSettingsPythonEmpty.h" - -#include "FilePath.h" -#include "ProjectSettings.h" -#include "utilityFile.h" - -SourceGroupSettingsPythonEmpty::SourceGroupSettingsPythonEmpty(const std::string& id, const ProjectSettings* projectSettings) - : SourceGroupSettings(id, SOURCE_GROUP_PYTHON_EMPTY, projectSettings) -{ -} - -std::shared_ptr SourceGroupSettingsPythonEmpty::createCopy() const -{ - return std::make_shared(*this); -} - -void SourceGroupSettingsPythonEmpty::load(std::shared_ptr config) -{ - SourceGroupSettings::load(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithExcludeFilters::load(config, key); - SourceGroupSettingsWithSourcePaths::load(config, key); - SourceGroupSettingsWithSourceExtensions::load(config, key); - - setEnvironmentPath(config->getValueOrDefault(key + "/python_environment_path", FilePath(L""))); -} - -void SourceGroupSettingsPythonEmpty::save(std::shared_ptr config) -{ - SourceGroupSettings::save(config); - - const std::string key = s_keyPrefix + getId(); - - SourceGroupSettingsWithExcludeFilters::save(config, key); - SourceGroupSettingsWithSourcePaths::save(config, key); - SourceGroupSettingsWithSourceExtensions::save(config, key); - - config->setValue(key + "/python_environment_path", getEnvironmentPath().wstr()); -} - -bool SourceGroupSettingsPythonEmpty::equals(std::shared_ptr other) const -{ - std::shared_ptr otherPython = std::dynamic_pointer_cast(other); - - return ( - otherPython && - SourceGroupSettings::equals(other) && - SourceGroupSettingsWithExcludeFilters::equals(otherPython) && - SourceGroupSettingsWithSourcePaths::equals(otherPython) && - SourceGroupSettingsWithSourceExtensions::equals(otherPython) && - m_environmentPath == otherPython->m_environmentPath - ); -} - -FilePath SourceGroupSettingsPythonEmpty::getEnvironmentPath() const -{ - return m_environmentPath; -} - -FilePath SourceGroupSettingsPythonEmpty::getEnvironmentPathExpandedAndAbsolute() const -{ - return utility::getExpandedAndAbsolutePath(getEnvironmentPath(), m_projectSettings->getProjectDirectoryPath()); -} - -void SourceGroupSettingsPythonEmpty::setEnvironmentPath(const FilePath& environmentPath) -{ - m_environmentPath = environmentPath; -} - -std::vector SourceGroupSettingsPythonEmpty::getDefaultSourceExtensions() const -{ - return { - L".py" - }; -} diff --git a/src/lib/settings/source_group/SourceGroupSettingsPythonEmpty.h b/src/lib/settings/source_group/SourceGroupSettingsPythonEmpty.h deleted file mode 100644 index fac240eb..00000000 --- a/src/lib/settings/source_group/SourceGroupSettingsPythonEmpty.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef SOURCE_GROUP_SETTINGS_PYTHON_EMPTY_H -#define SOURCE_GROUP_SETTINGS_PYTHON_EMPTY_H - -#include "FilePath.h" -#include "SourceGroupSettings.h" -#include "SourceGroupSettingsWithExcludeFilters.h" -#include "SourceGroupSettingsWithSourceExtensions.h" -#include "SourceGroupSettingsWithSourcePaths.h" - -class SourceGroupSettingsPythonEmpty - : public SourceGroupSettings - , public SourceGroupSettingsWithExcludeFilters - , public SourceGroupSettingsWithSourceExtensions - , public SourceGroupSettingsWithSourcePaths -{ -public: - SourceGroupSettingsPythonEmpty(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; - - FilePath getEnvironmentPath() const; - FilePath getEnvironmentPathExpandedAndAbsolute() const; - void setEnvironmentPath(const FilePath& environmentPath); - -private: - std::vector getDefaultSourceExtensions() const override; - - FilePath m_environmentPath; -}; - -#endif // SOURCE_GROUP_SETTINGS_PYTHON_EMPTY_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithComponents.h b/src/lib/settings/source_group/SourceGroupSettingsWithComponents.h new file mode 100644 index 00000000..bb8e5b76 --- /dev/null +++ b/src/lib/settings/source_group/SourceGroupSettingsWithComponents.h @@ -0,0 +1,72 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_COMPONENTS_H +#define SOURCE_GROUP_SETTINGS_WITH_COMPONENTS_H + +#include "SourceGroupSettings.h" + +template +class SourceGroupSettingsWithComponents + : public SourceGroupSettings + , public ComponentTypes... +{ +public: + SourceGroupSettingsWithComponents(SourceGroupType type, const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettings(type, id, projectSettings) + { + } + + virtual ~SourceGroupSettingsWithComponents() = default; + + void loadSettings(const ConfigManager* config) override + { + const std::string key = s_keyPrefix + getId(); + + SourceGroupSettings::load(config, key); + + using expand_type = int[]; + expand_type a{ 0, ((ComponentTypes::load(config, key)), void(), 0)... }; + } + + void saveSettings(ConfigManager* config) override + { + const std::string key = s_keyPrefix + getId(); + + SourceGroupSettings::save(config, key); + + using expand_type = int[]; + expand_type a{ 0, ((ComponentTypes::save(config, key)), void(), 0)... }; + } + + bool equalsSettings(const SourceGroupSettingsBase* other) override + { + if (!SourceGroupSettings::equals(other)) + { + return false; + } + + const SourceGroupSettingsWithComponents* otherPtr = + dynamic_cast*>(other); + if (getComponentCount() != otherPtr->getComponentCount()) + { + return false; + } + + using expand_type = int[]; + expand_type a{ false, ComponentTypes::equals(other)... }; + + bool r = true; + for (size_t i = 1; i <= getComponentCount(); ++i) + { + r &= a[i]; + } + + return r; + } + +private: + size_t getComponentCount() const + { + return sizeof...(ComponentTypes); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_COMPONENTS_H diff --git a/src/lib/settings/source_group/component/SourceGroupSettingsComponent.h b/src/lib/settings/source_group/component/SourceGroupSettingsComponent.h new file mode 100644 index 00000000..90897e1b --- /dev/null +++ b/src/lib/settings/source_group/component/SourceGroupSettingsComponent.h @@ -0,0 +1,23 @@ +#ifndef SOURCE_GROUP_SETTINGS_COMPONENT_H +#define SOURCE_GROUP_SETTINGS_COMPONENT_H + +#include + +#include "SourceGroupSettingsBase.h" + +class ConfigManager; + +class SourceGroupSettingsComponent + : virtual public SourceGroupSettingsBase +{ +public: + virtual ~SourceGroupSettingsComponent() = default; + +protected: + virtual void load(const ConfigManager* config, const std::string& key) = 0; + virtual void save(ConfigManager* config, const std::string& key) = 0; + + virtual bool equals(const SourceGroupSettingsBase* other) const = 0; +}; + +#endif // SOURCE_GROUP_SETTINGS_COMPONENT_H diff --git a/src/lib/settings/source_group/component/SourceGroupSettingsWithCustomCommand.cpp b/src/lib/settings/source_group/component/SourceGroupSettingsWithCustomCommand.cpp new file mode 100644 index 00000000..bf033b80 --- /dev/null +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithCustomCommand.cpp @@ -0,0 +1,46 @@ +#include "SourceGroupSettingsWithCustomCommand.h" + +#include "ConfigManager.h" + +const std::wstring& SourceGroupSettingsWithCustomCommand::getCustomCommand() const +{ + return m_customCommand; +} + +void SourceGroupSettingsWithCustomCommand::setCustomCommand(const std::wstring& customCommand) +{ + m_customCommand = customCommand; +} + +bool SourceGroupSettingsWithCustomCommand::getRunInParallel() const +{ + return m_runInParallel; +} + +void SourceGroupSettingsWithCustomCommand::setRunInParallel(bool runInParallel) +{ + m_runInParallel = runInParallel; +} + +bool SourceGroupSettingsWithCustomCommand::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithCustomCommand* otherPtr = + dynamic_cast(other); + + return ( + otherPtr && + m_customCommand == otherPtr->m_customCommand + ); +} + +void SourceGroupSettingsWithCustomCommand::load(const ConfigManager* config, const std::string& key) +{ + setCustomCommand(config->getValueOrDefault(key + "/custom_command", std::wstring())); + setRunInParallel(config->getValueOrDefault(key + "/run_in_parallel", false)); +} + +void SourceGroupSettingsWithCustomCommand::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/custom_command", getCustomCommand()); + config->setValue(key + "/run_in_parallel", getRunInParallel()); +} diff --git a/src/lib/settings/source_group/component/SourceGroupSettingsWithCustomCommand.h b/src/lib/settings/source_group/component/SourceGroupSettingsWithCustomCommand.h new file mode 100644 index 00000000..919e1c93 --- /dev/null +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithCustomCommand.h @@ -0,0 +1,29 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_CUSTOM_COMMAND_H +#define SOURCE_GROUP_SETTINGS_WITH_CUSTOM_COMMAND_H + +#include "SourceGroupSettingsComponent.h" + +class SourceGroupSettingsWithCustomCommand + : public SourceGroupSettingsComponent +{ +public: + virtual ~SourceGroupSettingsWithCustomCommand() = default; + + const std::wstring& getCustomCommand() const; + void setCustomCommand(const std::wstring& customCommand); + + bool getRunInParallel() const; + void setRunInParallel(bool runInParallel); + +protected: + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; + +private: + std::wstring m_customCommand; + bool m_runInParallel = false; +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_CUSTOM_COMMAND_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithExcludeFilters.cpp b/src/lib/settings/source_group/component/SourceGroupSettingsWithExcludeFilters.cpp similarity index 80% rename from src/lib/settings/source_group/SourceGroupSettingsWithExcludeFilters.cpp rename to src/lib/settings/source_group/component/SourceGroupSettingsWithExcludeFilters.cpp index 1ca67d08..07365cdc 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithExcludeFilters.cpp +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithExcludeFilters.cpp @@ -6,29 +6,6 @@ #include "utility.h" #include "utilityFile.h" -SourceGroupSettingsWithExcludeFilters::SourceGroupSettingsWithExcludeFilters() - : m_excludeFilters(std::vector()) -{ -} - -bool SourceGroupSettingsWithExcludeFilters::equals(std::shared_ptr other) const -{ - return ( - utility::isPermutation(m_excludeFilters, other->m_excludeFilters) - ); -} - -void SourceGroupSettingsWithExcludeFilters::load(std::shared_ptr config, const std::string& key) -{ - setExcludeFilterStrings(config->getValuesOrDefaults(key + "/exclude_filters/exclude_filter", std::vector())); -} - -void SourceGroupSettingsWithExcludeFilters::save(std::shared_ptr config, const std::string& key) -{ - config->setValues(key + "/exclude_filters/exclude_filter", getExcludeFilterStrings()); -} - - std::vector SourceGroupSettingsWithExcludeFilters::getExcludeFilterStrings() const { return m_excludeFilters; @@ -44,7 +21,29 @@ void SourceGroupSettingsWithExcludeFilters::setExcludeFilterStrings(const std::v m_excludeFilters = excludeFilters; } -std::vector SourceGroupSettingsWithExcludeFilters::getFiltersExpandedAndAbsolute(const std::vector& filterStrings) const +bool SourceGroupSettingsWithExcludeFilters::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithExcludeFilters* otherPtr = + dynamic_cast(other); + + return ( + otherPtr && + utility::isPermutation(m_excludeFilters, otherPtr->m_excludeFilters) + ); +} + +void SourceGroupSettingsWithExcludeFilters::load(const ConfigManager* config, const std::string& key) +{ + setExcludeFilterStrings(config->getValuesOrDefaults(key + "/exclude_filters/exclude_filter", std::vector())); +} + +void SourceGroupSettingsWithExcludeFilters::save(ConfigManager* config, const std::string& key) +{ + config->setValues(key + "/exclude_filters/exclude_filter", getExcludeFilterStrings()); +} + +std::vector SourceGroupSettingsWithExcludeFilters::getFiltersExpandedAndAbsolute( + const std::vector& filterStrings) const { const FilePath projectDirectoryPath = getProjectSettings()->getProjectDirectoryPath(); diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithExcludeFilters.h b/src/lib/settings/source_group/component/SourceGroupSettingsWithExcludeFilters.h similarity index 63% rename from src/lib/settings/source_group/SourceGroupSettingsWithExcludeFilters.h rename to src/lib/settings/source_group/component/SourceGroupSettingsWithExcludeFilters.h index fe46dbdc..e2646869 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithExcludeFilters.h +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithExcludeFilters.h @@ -1,31 +1,27 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_EXCLUDE_FILTERS_H #define SOURCE_GROUP_SETTINGS_WITH_EXCLUDE_FILTERS_H -#include -#include #include -#include "SourceGroupSettingsBase.h" +#include "SourceGroupSettingsComponent.h" -class ConfigManager; class FilePathFilter; class SourceGroupSettingsWithExcludeFilters - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: - SourceGroupSettingsWithExcludeFilters(); virtual ~SourceGroupSettingsWithExcludeFilters() = default; - bool equals(std::shared_ptr other) const; - std::vector getExcludeFilterStrings() const; std::vector getExcludeFiltersExpandedAndAbsolute() const; void setExcludeFilterStrings(const std::vector& excludeFilters); protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: std::vector getFiltersExpandedAndAbsolute(const std::vector& filterStrings) const; diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithSonargraphProjectPath.cpp b/src/lib/settings/source_group/component/SourceGroupSettingsWithSonargraphProjectPath.cpp similarity index 61% rename from src/lib/settings/source_group/SourceGroupSettingsWithSonargraphProjectPath.cpp rename to src/lib/settings/source_group/component/SourceGroupSettingsWithSonargraphProjectPath.cpp index ee2ddd02..473ea193 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithSonargraphProjectPath.cpp +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithSonargraphProjectPath.cpp @@ -3,28 +3,6 @@ #include "ProjectSettings.h" #include "utilityFile.h" -SourceGroupSettingsWithSonargraphProjectPath::SourceGroupSettingsWithSonargraphProjectPath() -{ -} - -bool SourceGroupSettingsWithSonargraphProjectPath::equals(std::shared_ptr other) const -{ - return ( - other && - m_sonargraphProjectPath == other->m_sonargraphProjectPath - ); -} - -void SourceGroupSettingsWithSonargraphProjectPath::load(std::shared_ptr config, const std::string& key) -{ - setSonargraphProjectPath(config->getValueOrDefault(key + "/sonargraph_project_path", FilePath(L""))); -} - -void SourceGroupSettingsWithSonargraphProjectPath::save(std::shared_ptr config, const std::string& key) -{ - config->setValue(key + "/sonargraph_project_path", getSonargraphProjectPath().wstr()); -} - FilePath SourceGroupSettingsWithSonargraphProjectPath::getSonargraphProjectPath() const { return m_sonargraphProjectPath; @@ -39,3 +17,24 @@ void SourceGroupSettingsWithSonargraphProjectPath::setSonargraphProjectPath(cons { m_sonargraphProjectPath = sonargraphProjectPath; } + +bool SourceGroupSettingsWithSonargraphProjectPath::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithSonargraphProjectPath* otherPtr = + dynamic_cast(other); + + return ( + otherPtr && + m_sonargraphProjectPath == otherPtr->m_sonargraphProjectPath + ); +} + +void SourceGroupSettingsWithSonargraphProjectPath::load(const ConfigManager* config, const std::string& key) +{ + setSonargraphProjectPath(config->getValueOrDefault(key + "/sonargraph_project_path", FilePath(L""))); +} + +void SourceGroupSettingsWithSonargraphProjectPath::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/sonargraph_project_path", getSonargraphProjectPath().wstr()); +} diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithSonargraphProjectPath.h b/src/lib/settings/source_group/component/SourceGroupSettingsWithSonargraphProjectPath.h similarity index 57% rename from src/lib/settings/source_group/SourceGroupSettingsWithSonargraphProjectPath.h rename to src/lib/settings/source_group/component/SourceGroupSettingsWithSonargraphProjectPath.h index 5b09f5dc..5ff83ea4 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithSonargraphProjectPath.h +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithSonargraphProjectPath.h @@ -1,30 +1,24 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_SONARGRAPH_PROJECT_PATH_H #define SOURCE_GROUP_SETTINGS_WITH_SONARGRAPH_PROJECT_PATH_H -#include -#include - -#include "SourceGroupSettingsBase.h" #include "FilePath.h" - -class ConfigManager; +#include "SourceGroupSettingsComponent.h" class SourceGroupSettingsWithSonargraphProjectPath - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: - SourceGroupSettingsWithSonargraphProjectPath(); virtual ~SourceGroupSettingsWithSonargraphProjectPath() = default; - bool equals(std::shared_ptr other) const; - FilePath getSonargraphProjectPath() const; FilePath getSonargraphProjectPathExpandedAndAbsolute() const; void setSonargraphProjectPath(const FilePath& sonargraphProjectPath); protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: FilePath m_sonargraphProjectPath; diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithSourceExtensions.cpp b/src/lib/settings/source_group/component/SourceGroupSettingsWithSourceExtensions.cpp similarity index 54% rename from src/lib/settings/source_group/SourceGroupSettingsWithSourceExtensions.cpp rename to src/lib/settings/source_group/component/SourceGroupSettingsWithSourceExtensions.cpp index 184f7ef1..53b8c939 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithSourceExtensions.cpp +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithSourceExtensions.cpp @@ -3,26 +3,6 @@ #include "ProjectSettings.h" #include "utility.h" -SourceGroupSettingsWithSourceExtensions::SourceGroupSettingsWithSourceExtensions() - : m_sourceExtensions(std::vector()) -{ -} - -bool SourceGroupSettingsWithSourceExtensions::equals(std::shared_ptr other) const -{ - return utility::isPermutation(m_sourceExtensions, other->m_sourceExtensions); -} - -void SourceGroupSettingsWithSourceExtensions::load(std::shared_ptr config, const std::string& key) -{ - setSourceExtensions(config->getValuesOrDefaults(key + "/source_extensions/source_extension", std::vector())); -} - -void SourceGroupSettingsWithSourceExtensions::save(std::shared_ptr config, const std::string& key) -{ - config->setValues(key + "/source_extensions/source_extension", getSourceExtensions()); -} - std::vector SourceGroupSettingsWithSourceExtensions::getSourceExtensions() const { if (m_sourceExtensions.empty()) @@ -36,3 +16,24 @@ void SourceGroupSettingsWithSourceExtensions::setSourceExtensions(const std::vec { m_sourceExtensions = sourceExtensions; } + +bool SourceGroupSettingsWithSourceExtensions::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithSourceExtensions* otherPtr = + dynamic_cast(other); + + return ( + otherPtr && + utility::isPermutation(m_sourceExtensions, otherPtr->m_sourceExtensions) + ); +} + +void SourceGroupSettingsWithSourceExtensions::load(const ConfigManager* config, const std::string& key) +{ + setSourceExtensions(config->getValuesOrDefaults(key + "/source_extensions/source_extension", std::vector())); +} + +void SourceGroupSettingsWithSourceExtensions::save(ConfigManager* config, const std::string& key) +{ + config->setValues(key + "/source_extensions/source_extension", getSourceExtensions()); +} diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithSourceExtensions.h b/src/lib/settings/source_group/component/SourceGroupSettingsWithSourceExtensions.h similarity index 57% rename from src/lib/settings/source_group/SourceGroupSettingsWithSourceExtensions.h rename to src/lib/settings/source_group/component/SourceGroupSettingsWithSourceExtensions.h index fd79dddb..8766c009 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithSourceExtensions.h +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithSourceExtensions.h @@ -1,30 +1,24 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_H #define SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_H -#include -#include #include -#include "SourceGroupSettingsBase.h" - -class ConfigManager; -class FilePath; +#include "SourceGroupSettingsComponent.h" class SourceGroupSettingsWithSourceExtensions - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: - SourceGroupSettingsWithSourceExtensions(); virtual ~SourceGroupSettingsWithSourceExtensions() = default; - bool equals(std::shared_ptr other) const; - std::vector getSourceExtensions() const; void setSourceExtensions(const std::vector& sourceExtensions); protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: virtual std::vector getDefaultSourceExtensions() const = 0; diff --git a/src/lib/settings/source_group/component/SourceGroupSettingsWithSourceExtensionsEmpty.h b/src/lib/settings/source_group/component/SourceGroupSettingsWithSourceExtensionsEmpty.h new file mode 100644 index 00000000..650b754b --- /dev/null +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithSourceExtensionsEmpty.h @@ -0,0 +1,16 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_EMPTY_H +#define SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_EMPTY_H + +#include "SourceGroupSettingsWithSourceExtensions.h" + +class SourceGroupSettingsWithSourceExtensionsEmpty + : public SourceGroupSettingsWithSourceExtensions +{ +private: + std::vector getDefaultSourceExtensions() const override + { + return {}; + } +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_EMPTY_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithSourcePaths.cpp b/src/lib/settings/source_group/component/SourceGroupSettingsWithSourcePaths.cpp similarity index 57% rename from src/lib/settings/source_group/SourceGroupSettingsWithSourcePaths.cpp rename to src/lib/settings/source_group/component/SourceGroupSettingsWithSourcePaths.cpp index ebf5705c..c28e99d8 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithSourcePaths.cpp +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithSourcePaths.cpp @@ -3,26 +3,6 @@ #include "ProjectSettings.h" #include "utility.h" -SourceGroupSettingsWithSourcePaths::SourceGroupSettingsWithSourcePaths() - : m_sourcePaths(std::vector()) -{ -} - -bool SourceGroupSettingsWithSourcePaths::equals(std::shared_ptr other) const -{ - return utility::isPermutation(m_sourcePaths, other->m_sourcePaths); -} - -void SourceGroupSettingsWithSourcePaths::load(std::shared_ptr config, const std::string& key) -{ - setSourcePaths(config->getValuesOrDefaults(key + "/source_paths/source_path", std::vector())); -} - -void SourceGroupSettingsWithSourcePaths::save(std::shared_ptr config, const std::string& key) -{ - config->setValues(key + "/source_paths/source_path", getSourcePaths()); -} - std::vector SourceGroupSettingsWithSourcePaths::getSourcePaths() const { return m_sourcePaths; @@ -37,3 +17,23 @@ void SourceGroupSettingsWithSourcePaths::setSourcePaths(const std::vector(other); + + return ( + otherPtr && + utility::isPermutation(m_sourcePaths, otherPtr->m_sourcePaths) + ); +} + +void SourceGroupSettingsWithSourcePaths::load(const ConfigManager* config, const std::string& key) +{ + setSourcePaths(config->getValuesOrDefaults(key + "/source_paths/source_path", std::vector())); +} + +void SourceGroupSettingsWithSourcePaths::save(ConfigManager* config, const std::string& key) +{ + config->setValues(key + "/source_paths/source_path", getSourcePaths()); +} diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithSourcePaths.h b/src/lib/settings/source_group/component/SourceGroupSettingsWithSourcePaths.h similarity index 55% rename from src/lib/settings/source_group/SourceGroupSettingsWithSourcePaths.h rename to src/lib/settings/source_group/component/SourceGroupSettingsWithSourcePaths.h index 1db680dd..da54eb82 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithSourcePaths.h +++ b/src/lib/settings/source_group/component/SourceGroupSettingsWithSourcePaths.h @@ -1,31 +1,26 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_SOURCE_PATHS_H #define SOURCE_GROUP_SETTINGS_WITH_SOURCE_PATHS_H -#include -#include #include -#include "SourceGroupSettingsBase.h" - -class ConfigManager; -class FilePath; +#include "FilePath.h" +#include "SourceGroupSettingsComponent.h" class SourceGroupSettingsWithSourcePaths - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: - SourceGroupSettingsWithSourcePaths(); virtual ~SourceGroupSettingsWithSourcePaths() = default; - bool equals(std::shared_ptr other) const; - std::vector getSourcePaths() const; std::vector getSourcePathsExpandedAndAbsolute() const; void setSourcePaths(const std::vector& sourcePaths); protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: std::vector m_sourcePaths; diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithCStandard.cpp b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCStandard.cpp similarity index 69% rename from src/lib/settings/source_group/SourceGroupSettingsWithCStandard.cpp rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCStandard.cpp index 5bcb6b9a..2168fd7a 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithCStandard.cpp +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCStandard.cpp @@ -7,24 +7,6 @@ std::wstring SourceGroupSettingsWithCStandard::getDefaultCStandardStatic() return L"c11"; } -bool SourceGroupSettingsWithCStandard::equals(std::shared_ptr other) const -{ - return ( - other && - m_cStandard == other->m_cStandard - ); -} - -void SourceGroupSettingsWithCStandard::load(std::shared_ptr config, const std::string& key) -{ - setCStandard(config->getValueOrDefault(key + "/c_standard", L"")); -} - -void SourceGroupSettingsWithCStandard::save(std::shared_ptr config, const std::string& key) -{ - config->setValue(key + "/c_standard", getCStandard()); -} - std::wstring SourceGroupSettingsWithCStandard::getCStandard() const { if (m_cStandard.empty()) @@ -57,6 +39,26 @@ std::vector SourceGroupSettingsWithCStandard::getAvailableCStandar }; } +bool SourceGroupSettingsWithCStandard::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithCStandard* otherPtr = dynamic_cast(other); + + return ( + otherPtr && + m_cStandard == otherPtr->m_cStandard + ); +} + +void SourceGroupSettingsWithCStandard::load(const ConfigManager* config, const std::string& key) +{ + setCStandard(config->getValueOrDefault(key + "/c_standard", L"")); +} + +void SourceGroupSettingsWithCStandard::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/c_standard", getCStandard()); +} + std::wstring SourceGroupSettingsWithCStandard::getDefaultCStandard() const { return getDefaultCStandardStatic(); diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithCStandard.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCStandard.h similarity index 57% rename from src/lib/settings/source_group/SourceGroupSettingsWithCStandard.h rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCStandard.h index d33176e5..8ba21da0 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithCStandard.h +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCStandard.h @@ -1,33 +1,28 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_C_STANDARD_H #define SOURCE_GROUP_SETTINGS_WITH_C_STANDARD_H -#include -#include #include -#include "SourceGroupSettingsBase.h" - -class ConfigManager; +#include "SourceGroupSettingsComponent.h" class SourceGroupSettingsWithCStandard - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: static std::wstring getDefaultCStandardStatic(); - SourceGroupSettingsWithCStandard() = default; virtual ~SourceGroupSettingsWithCStandard() = default; - bool equals(std::shared_ptr other) const; - std::wstring getCStandard() const; void setCStandard(const std::wstring& standard); std::vector getAvailableCStandards() const; protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: std::wstring getDefaultCStandard() const; diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithCppStandard.cpp b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCppStandard.cpp similarity index 69% rename from src/lib/settings/source_group/SourceGroupSettingsWithCppStandard.cpp rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCppStandard.cpp index be1c0ae9..d71f7162 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithCppStandard.cpp +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCppStandard.cpp @@ -7,24 +7,6 @@ std::wstring SourceGroupSettingsWithCppStandard::getDefaultCppStandardStatic() return L"c++17"; } -bool SourceGroupSettingsWithCppStandard::equals(std::shared_ptr other) const -{ - return ( - other && - m_cppStandard == other->m_cppStandard - ); -} - -void SourceGroupSettingsWithCppStandard::load(std::shared_ptr config, const std::string& key) -{ - setCppStandard(config->getValueOrDefault(key + "/cpp_standard", L"")); -} - -void SourceGroupSettingsWithCppStandard::save(std::shared_ptr config, const std::string& key) -{ - config->setValue(key + "/cpp_standard", getCppStandard()); -} - std::wstring SourceGroupSettingsWithCppStandard::getCppStandard() const { if (m_cppStandard.empty()) @@ -57,6 +39,26 @@ std::vector SourceGroupSettingsWithCppStandard::getAvailableCppSta }; } +bool SourceGroupSettingsWithCppStandard::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithCppStandard* otherPtr = dynamic_cast(other); + + return ( + otherPtr && + m_cppStandard == otherPtr->m_cppStandard + ); +} + +void SourceGroupSettingsWithCppStandard::load(const ConfigManager* config, const std::string& key) +{ + setCppStandard(config->getValueOrDefault(key + "/cpp_standard", L"")); +} + +void SourceGroupSettingsWithCppStandard::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/cpp_standard", getCppStandard()); +} + std::wstring SourceGroupSettingsWithCppStandard::getDefaultCppStandard() const { return getDefaultCppStandardStatic(); diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithCppStandard.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCppStandard.h similarity index 58% rename from src/lib/settings/source_group/SourceGroupSettingsWithCppStandard.h rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCppStandard.h index a06d8cf7..32815434 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithCppStandard.h +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCppStandard.h @@ -1,33 +1,28 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_CPP_STANDARD_H #define SOURCE_GROUP_SETTINGS_WITH_CPP_STANDARD_H -#include -#include #include -#include "SourceGroupSettingsBase.h" - -class ConfigManager; +#include "SourceGroupSettingsComponent.h" class SourceGroupSettingsWithCppStandard - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: static std::wstring getDefaultCppStandardStatic(); - SourceGroupSettingsWithCppStandard() = default; virtual ~SourceGroupSettingsWithCppStandard() = default; - bool equals(std::shared_ptr other) const; - std::wstring getCppStandard() const; void setCppStandard(const std::wstring& standard); std::vector getAvailableCppStandards() const; protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: std::wstring getDefaultCppStandard() const; diff --git a/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCdbPath.cpp b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCdbPath.cpp new file mode 100644 index 00000000..37682c85 --- /dev/null +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCdbPath.cpp @@ -0,0 +1,41 @@ +#include "SourceGroupSettingsWithCxxCdbPath.h" + +#include "ProjectSettings.h" +#include "utilityFile.h" + +FilePath SourceGroupSettingsWithCxxCdbPath::getCompilationDatabasePath() const +{ + return m_compilationDatabasePath; +} + +FilePath SourceGroupSettingsWithCxxCdbPath::getCompilationDatabasePathExpandedAndAbsolute() const +{ + return utility::getExpandedAndAbsolutePath( + getCompilationDatabasePath(), getProjectSettings()->getProjectDirectoryPath()); +} + +void SourceGroupSettingsWithCxxCdbPath::setCompilationDatabasePath(const FilePath& compilationDatabasePath) +{ + m_compilationDatabasePath = compilationDatabasePath; +} + +bool SourceGroupSettingsWithCxxCdbPath::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithCxxCdbPath* otherPtr = + dynamic_cast(other); + + return ( + otherPtr && + m_compilationDatabasePath == otherPtr->m_compilationDatabasePath + ); +} + +void SourceGroupSettingsWithCxxCdbPath::load(const ConfigManager* config, const std::string& key) +{ + setCompilationDatabasePath(config->getValueOrDefault(key + "/build_file_path/compilation_db_path", FilePath(L""))); +} + +void SourceGroupSettingsWithCxxCdbPath::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/build_file_path/compilation_db_path", getCompilationDatabasePath().wstr()); +} diff --git a/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCdbPath.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCdbPath.h new file mode 100644 index 00000000..3f928fef --- /dev/null +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCdbPath.h @@ -0,0 +1,27 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_CXX_CDB_PATH_H +#define SOURCE_GROUP_SETTINGS_WITH_CXX_CDB_PATH_H + +#include "FilePath.h" +#include "SourceGroupSettingsComponent.h" + +class SourceGroupSettingsWithCxxCdbPath + : public SourceGroupSettingsComponent +{ +public: + virtual ~SourceGroupSettingsWithCxxCdbPath() = default; + + FilePath getCompilationDatabasePath() const; + FilePath getCompilationDatabasePathExpandedAndAbsolute() const; + void setCompilationDatabasePath(const FilePath& compilationDatabasePath); + +protected: + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; + +private: + FilePath m_compilationDatabasePath; +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_CXX_CDB_PATH_H diff --git a/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCodeblocksPath.cpp b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCodeblocksPath.cpp new file mode 100644 index 00000000..d47fcd35 --- /dev/null +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCodeblocksPath.cpp @@ -0,0 +1,40 @@ +#include "SourceGroupSettingsWithCxxCodeblocksPath.h" + +#include "ProjectSettings.h" +#include "utilityFile.h" + +FilePath SourceGroupSettingsWithCxxCodeblocksPath::getCodeblocksProjectPath() const +{ + return m_codeblocksProjectPath; +} + +FilePath SourceGroupSettingsWithCxxCodeblocksPath::getCodeblocksProjectPathExpandedAndAbsolute() const +{ + return utility::getExpandedAndAbsolutePath(getCodeblocksProjectPath(), getProjectSettings()->getProjectDirectoryPath()); +} + +void SourceGroupSettingsWithCxxCodeblocksPath::setCodeblocksProjectPath(const FilePath& codeblocksProjectPath) +{ + m_codeblocksProjectPath = codeblocksProjectPath; +} + +bool SourceGroupSettingsWithCxxCodeblocksPath::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithCxxCodeblocksPath* otherPtr = + dynamic_cast(other); + + return ( + otherPtr && + m_codeblocksProjectPath == otherPtr->m_codeblocksProjectPath + ); +} + +void SourceGroupSettingsWithCxxCodeblocksPath::load(const ConfigManager* config, const std::string& key) +{ + setCodeblocksProjectPath(config->getValueOrDefault(key + "/codeblocks_project_path", FilePath(L""))); +} + +void SourceGroupSettingsWithCxxCodeblocksPath::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/codeblocks_project_path", getCodeblocksProjectPath().wstr()); +} diff --git a/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCodeblocksPath.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCodeblocksPath.h new file mode 100644 index 00000000..2cfc29ba --- /dev/null +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCodeblocksPath.h @@ -0,0 +1,27 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_CXX_CODEBLOCKS_PATH_H +#define SOURCE_GROUP_SETTINGS_WITH_CXX_CODEBLOCKS_PATH_H + +#include "FilePath.h" +#include "SourceGroupSettingsComponent.h" + +class SourceGroupSettingsWithCxxCodeblocksPath + : public SourceGroupSettingsComponent +{ +public: + virtual ~SourceGroupSettingsWithCxxCodeblocksPath() = default; + + FilePath getCodeblocksProjectPath() const; + FilePath getCodeblocksProjectPathExpandedAndAbsolute() const; + void setCodeblocksProjectPath(const FilePath& codeblocksProjectPath); + +protected: + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; + +private: + FilePath m_codeblocksProjectPath; +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_CXX_CODEBLOCKS_PATH_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp similarity index 87% rename from src/lib/settings/source_group/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp index 3080c148..1b69dd74 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCrossCompilationOptions.cpp @@ -140,41 +140,6 @@ std::vector SourceGroupSettingsWithCxxCrossCompilationOptions::get }; } -SourceGroupSettingsWithCxxCrossCompilationOptions::SourceGroupSettingsWithCxxCrossCompilationOptions() - : m_targetOptionsEnabled(false) - , m_targetArch(L"") - , m_targetVendor(L"") - , m_targetSys(L"") - , m_targetAbi(L"") -{ -} - -bool SourceGroupSettingsWithCxxCrossCompilationOptions::equals(std::shared_ptr other) const -{ - return ( - other && - getTargetFlag() == other->getTargetFlag() - ); -} - -void SourceGroupSettingsWithCxxCrossCompilationOptions::load(std::shared_ptr config, const std::string& key) -{ - setTargetOptionsEnabled(config->getValueOrDefault(key + "/cross_compilation/target_options_enabled", false)); - setTargetArch(config->getValueOrDefault(key + "/cross_compilation/target/arch", L"")); - setTargetVendor(config->getValueOrDefault(key + "/cross_compilation/target/vendor", L"")); - setTargetSys(config->getValueOrDefault(key + "/cross_compilation/target/sys", L"")); - setTargetAbi(config->getValueOrDefault(key + "/cross_compilation/target/abi", L"")); -} - -void SourceGroupSettingsWithCxxCrossCompilationOptions::save(std::shared_ptr config, const std::string& key) -{ - config->setValue(key + "/cross_compilation/target_options_enabled", getTargetOptionsEnabled()); - config->setValue(key + "/cross_compilation/target/arch", getTargetArch()); - config->setValue(key + "/cross_compilation/target/vendor", getTargetVendor()); - config->setValue(key + "/cross_compilation/target/sys", getTargetSys()); - config->setValue(key + "/cross_compilation/target/abi", getTargetAbi()); -} - bool SourceGroupSettingsWithCxxCrossCompilationOptions::getTargetOptionsEnabled() const { return m_targetOptionsEnabled; @@ -238,3 +203,32 @@ std::wstring SourceGroupSettingsWithCxxCrossCompilationOptions::getTargetFlag() } return targetFlag; } + +bool SourceGroupSettingsWithCxxCrossCompilationOptions::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithCxxCrossCompilationOptions* otherPtr = + dynamic_cast(other); + + return ( + other && + getTargetFlag() == otherPtr->getTargetFlag() + ); +} + +void SourceGroupSettingsWithCxxCrossCompilationOptions::load(const ConfigManager* config, const std::string& key) +{ + setTargetOptionsEnabled(config->getValueOrDefault(key + "/cross_compilation/target_options_enabled", false)); + setTargetArch(config->getValueOrDefault(key + "/cross_compilation/target/arch", L"")); + setTargetVendor(config->getValueOrDefault(key + "/cross_compilation/target/vendor", L"")); + setTargetSys(config->getValueOrDefault(key + "/cross_compilation/target/sys", L"")); + setTargetAbi(config->getValueOrDefault(key + "/cross_compilation/target/abi", L"")); +} + +void SourceGroupSettingsWithCxxCrossCompilationOptions::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/cross_compilation/target_options_enabled", getTargetOptionsEnabled()); + config->setValue(key + "/cross_compilation/target/arch", getTargetArch()); + config->setValue(key + "/cross_compilation/target/vendor", getTargetVendor()); + config->setValue(key + "/cross_compilation/target/sys", getTargetSys()); + config->setValue(key + "/cross_compilation/target/abi", getTargetAbi()); +} diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithCxxCrossCompilationOptions.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCrossCompilationOptions.h similarity index 72% rename from src/lib/settings/source_group/SourceGroupSettingsWithCxxCrossCompilationOptions.h rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCrossCompilationOptions.h index 24a34eac..161d5880 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithCxxCrossCompilationOptions.h +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxCrossCompilationOptions.h @@ -1,16 +1,12 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_CXX_CROSS_COMPILATION_OPTIONS_H #define SOURCE_GROUP_SETTINGS_WITH_CXX_CROSS_COMPILATION_OPTIONS_H -#include -#include #include -#include "SourceGroupSettingsBase.h" - -class ConfigManager; +#include "SourceGroupSettingsComponent.h" class SourceGroupSettingsWithCxxCrossCompilationOptions - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: static std::vector getAvailableArchTypes(); @@ -18,11 +14,8 @@ public: static std::vector getAvailableOsTypes(); static std::vector getAvailableEnvironmentTypes(); - SourceGroupSettingsWithCxxCrossCompilationOptions(); virtual ~SourceGroupSettingsWithCxxCrossCompilationOptions() = default; - bool equals(std::shared_ptr other) const; - bool getTargetOptionsEnabled() const; void setTargetOptionsEnabled(bool targetOptionsEnabled); @@ -41,11 +34,13 @@ public: std::wstring getTargetFlag() const; protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: - bool m_targetOptionsEnabled; + bool m_targetOptionsEnabled = false; std::wstring m_targetArch; std::wstring m_targetVendor; std::wstring m_targetSys; diff --git a/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPathsAndFlags.cpp b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPathsAndFlags.cpp new file mode 100644 index 00000000..0472dde1 --- /dev/null +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPathsAndFlags.cpp @@ -0,0 +1,71 @@ +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" + +#include "ProjectSettings.h" +#include "utility.h" + +std::vector SourceGroupSettingsWithCxxPathsAndFlags::getHeaderSearchPaths() const +{ + return m_headerSearchPaths; +} + +std::vector SourceGroupSettingsWithCxxPathsAndFlags::getHeaderSearchPathsExpandedAndAbsolute() const +{ + return getProjectSettings()->makePathsExpandedAndAbsolute(getHeaderSearchPaths()); +} + +void SourceGroupSettingsWithCxxPathsAndFlags::setHeaderSearchPaths(const std::vector& headerSearchPaths) +{ + m_headerSearchPaths = headerSearchPaths; +} + +std::vector SourceGroupSettingsWithCxxPathsAndFlags::getFrameworkSearchPaths() const +{ + return m_frameworkSearchPaths; +} + +std::vector SourceGroupSettingsWithCxxPathsAndFlags::getFrameworkSearchPathsExpandedAndAbsolute() const +{ + return getProjectSettings()->makePathsExpandedAndAbsolute(getFrameworkSearchPaths()); +} + +void SourceGroupSettingsWithCxxPathsAndFlags::setFrameworkSearchPaths(const std::vector& frameworkSearchPaths) +{ + m_frameworkSearchPaths = frameworkSearchPaths; +} + +std::vector SourceGroupSettingsWithCxxPathsAndFlags::getCompilerFlags() const +{ + return m_compilerFlags; +} + +void SourceGroupSettingsWithCxxPathsAndFlags::setCompilerFlags(const std::vector& compilerFlags) +{ + m_compilerFlags = compilerFlags; +} + +bool SourceGroupSettingsWithCxxPathsAndFlags::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithCxxPathsAndFlags* otherPtr = + dynamic_cast(other); + + return ( + otherPtr && + utility::isPermutation(m_headerSearchPaths, otherPtr->m_headerSearchPaths) && + utility::isPermutation(m_frameworkSearchPaths, otherPtr->m_frameworkSearchPaths) && + utility::isPermutation(m_compilerFlags, otherPtr->m_compilerFlags) + ); +} + +void SourceGroupSettingsWithCxxPathsAndFlags::load(const ConfigManager* config, const std::string& key) +{ + setHeaderSearchPaths(config->getValuesOrDefaults(key + "/header_search_paths/header_search_path", std::vector())); + setFrameworkSearchPaths(config->getValuesOrDefaults(key + "/framework_search_paths/framework_search_path", std::vector())); + setCompilerFlags(config->getValuesOrDefaults(key + "/compiler_flags/compiler_flag", std::vector())); +} + +void SourceGroupSettingsWithCxxPathsAndFlags::save(ConfigManager* config, const std::string& key) +{ + config->setValues(key + "/header_search_paths/header_search_path", getHeaderSearchPaths()); + config->setValues(key + "/framework_search_paths/framework_search_path", getFrameworkSearchPaths()); + config->setValues(key + "/compiler_flags/compiler_flag", getCompilerFlags()); +} diff --git a/src/lib/settings/source_group/SourceGroupSettingsCxx.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPathsAndFlags.h similarity index 54% rename from src/lib/settings/source_group/SourceGroupSettingsCxx.h rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPathsAndFlags.h index 4220a8ed..7bed50a2 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsCxx.h +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPathsAndFlags.h @@ -1,20 +1,16 @@ -#ifndef SOURCE_GROUP_SETTINGS_CXX_H -#define SOURCE_GROUP_SETTINGS_CXX_H +#ifndef SOURCE_GROUP_SETTINGS_WITH_CXX_PATHS_AND_FLAGS_H +#define SOURCE_GROUP_SETTINGS_WITH_CXX_PATHS_AND_FLAGS_H -#include "SourceGroupSettings.h" +#include #include "FilePath.h" +#include "SourceGroupSettingsComponent.h" -class SourceGroupSettingsCxx - : public SourceGroupSettings +class SourceGroupSettingsWithCxxPathsAndFlags + : public SourceGroupSettingsComponent { public: - SourceGroupSettingsCxx(const std::string& id, SourceGroupType type, const ProjectSettings* projectSettings); - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; + virtual ~SourceGroupSettingsWithCxxPathsAndFlags() = default; std::vector getHeaderSearchPaths() const; std::vector getHeaderSearchPathsExpandedAndAbsolute() const; @@ -27,10 +23,16 @@ public: std::vector getCompilerFlags() const; void setCompilerFlags(const std::vector& compilerFlags); +protected: + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; + private: std::vector m_headerSearchPaths; std::vector m_frameworkSearchPaths; std::vector m_compilerFlags; }; -#endif // SOURCE_GROUP_SETTINGS_CXX_H +#endif // SOURCE_GROUP_SETTINGS_WITH_CXX_PATHS_AND_FLAGS_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithCxxPchOptions.cpp b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPchOptions.cpp similarity index 74% rename from src/lib/settings/source_group/SourceGroupSettingsWithCxxPchOptions.cpp rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPchOptions.cpp index 14039e4f..aa44cdcf 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithCxxPchOptions.cpp +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPchOptions.cpp @@ -4,30 +4,6 @@ #include "utility.h" #include "utilityFile.h" -bool SourceGroupSettingsWithCxxPchOptions::equals(std::shared_ptr other) const -{ - return ( - other && - m_pchInputFilePath == other->m_pchInputFilePath && - utility::isPermutation(m_pchFlags, other->m_pchFlags) && - m_useCompilerFlags == other->m_useCompilerFlags - ); -} - -void SourceGroupSettingsWithCxxPchOptions::load(std::shared_ptr config, const std::string& key) -{ - setPchInputFilePathFilePath(config->getValueOrDefault(key + "/pch_input_file_path", FilePath(L""))); - setPchFlags(config->getValuesOrDefaults(key + "/pch_flags/pch_flag", std::vector())); - setUseCompilerFlags(config->getValueOrDefault(key + "/pch_flags/use_compiler_flags", false)); -} - -void SourceGroupSettingsWithCxxPchOptions::save(std::shared_ptr config, const std::string& key) -{ - config->setValue(key + "/pch_input_file_path", getPchInputFilePath().wstr()); - config->setValues(key + "/pch_flags/pch_flag", getPchFlags()); - config->setValue(key + "/pch_flags/use_compiler_flags", getUseCompilerFlags()); -} - FilePath SourceGroupSettingsWithCxxPchOptions::getPchDependenciesDirectoryPath() const { return getSourceGroupDependenciesDirectoryPath().concatenate(L"pch"); @@ -48,6 +24,33 @@ void SourceGroupSettingsWithCxxPchOptions::setPchInputFilePathFilePath(const Fil m_pchInputFilePath = path; } +bool SourceGroupSettingsWithCxxPchOptions::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithCxxPchOptions* otherPtr = + dynamic_cast(other); + + return ( + otherPtr && + m_pchInputFilePath == otherPtr->m_pchInputFilePath && + utility::isPermutation(m_pchFlags, otherPtr->m_pchFlags) && + m_useCompilerFlags == otherPtr->m_useCompilerFlags + ); +} + +void SourceGroupSettingsWithCxxPchOptions::load(const ConfigManager* config, const std::string& key) +{ + setPchInputFilePathFilePath(config->getValueOrDefault(key + "/pch_input_file_path", FilePath(L""))); + setPchFlags(config->getValuesOrDefaults(key + "/pch_flags/pch_flag", std::vector())); + setUseCompilerFlags(config->getValueOrDefault(key + "/pch_flags/use_compiler_flags", false)); +} + +void SourceGroupSettingsWithCxxPchOptions::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/pch_input_file_path", getPchInputFilePath().wstr()); + config->setValues(key + "/pch_flags/pch_flag", getPchFlags()); + config->setValue(key + "/pch_flags/use_compiler_flags", getUseCompilerFlags()); +} + bool SourceGroupSettingsWithCxxPchOptions::getUseCompilerFlags() const { return m_useCompilerFlags; diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithCxxPchOptions.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPchOptions.h similarity index 66% rename from src/lib/settings/source_group/SourceGroupSettingsWithCxxPchOptions.h rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPchOptions.h index 02861fb0..9fb3c71a 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithCxxPchOptions.h +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithCxxPchOptions.h @@ -1,23 +1,15 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_CXX_PCH_OPTIONS_H #define SOURCE_GROUP_SETTINGS_WITH_CXX_PCH_OPTIONS_H -#include -#include - #include "FilePath.h" -#include "SourceGroupSettingsBase.h" - -class ConfigManager; +#include "SourceGroupSettingsComponent.h" class SourceGroupSettingsWithCxxPchOptions - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: - SourceGroupSettingsWithCxxPchOptions() = default; virtual ~SourceGroupSettingsWithCxxPchOptions() = default; - bool equals(std::shared_ptr other) const; - FilePath getPchDependenciesDirectoryPath() const; FilePath getPchInputFilePath() const; @@ -31,8 +23,10 @@ public: void setUseCompilerFlags(bool useCompilerFlags); protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: FilePath m_pchInputFilePath; diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithIndexedHeaderPaths.cpp b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithIndexedHeaderPaths.cpp similarity index 59% rename from src/lib/settings/source_group/SourceGroupSettingsWithIndexedHeaderPaths.cpp rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithIndexedHeaderPaths.cpp index 6c1470ca..64bf96d0 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithIndexedHeaderPaths.cpp +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithIndexedHeaderPaths.cpp @@ -3,28 +3,6 @@ #include "ProjectSettings.h" #include "utility.h" -SourceGroupSettingsWithIndexedHeaderPaths::SourceGroupSettingsWithIndexedHeaderPaths() - : m_indexedHeaderPaths(std::vector()) -{ -} - -bool SourceGroupSettingsWithIndexedHeaderPaths::equals(std::shared_ptr other) const -{ - return ( - utility::isPermutation(m_indexedHeaderPaths, other->m_indexedHeaderPaths) - ); -} - -void SourceGroupSettingsWithIndexedHeaderPaths::load(std::shared_ptr config, const std::string& key) -{ - setIndexedHeaderPaths(config->getValuesOrDefaults(key + "/indexed_header_paths/indexed_header_path", std::vector())); -} - -void SourceGroupSettingsWithIndexedHeaderPaths::save(std::shared_ptr config, const std::string& key) -{ - config->setValues(key + "/indexed_header_paths/indexed_header_path", getIndexedHeaderPaths()); -} - std::vector SourceGroupSettingsWithIndexedHeaderPaths::getIndexedHeaderPaths() const { return m_indexedHeaderPaths; @@ -39,3 +17,24 @@ void SourceGroupSettingsWithIndexedHeaderPaths::setIndexedHeaderPaths(const std: { m_indexedHeaderPaths = indexedHeaderPaths; } + +bool SourceGroupSettingsWithIndexedHeaderPaths::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithIndexedHeaderPaths* otherPtr = + dynamic_cast(other); + + return ( + otherPtr && + utility::isPermutation(m_indexedHeaderPaths, otherPtr->m_indexedHeaderPaths) + ); +} + +void SourceGroupSettingsWithIndexedHeaderPaths::load(const ConfigManager* config, const std::string& key) +{ + setIndexedHeaderPaths(config->getValuesOrDefaults(key + "/indexed_header_paths/indexed_header_path", std::vector())); +} + +void SourceGroupSettingsWithIndexedHeaderPaths::save(ConfigManager* config, const std::string& key) +{ + config->setValues(key + "/indexed_header_paths/indexed_header_path", getIndexedHeaderPaths()); +} diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithIndexedHeaderPaths.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithIndexedHeaderPaths.h similarity index 59% rename from src/lib/settings/source_group/SourceGroupSettingsWithIndexedHeaderPaths.h rename to src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithIndexedHeaderPaths.h index 11331a60..a7d7fcf9 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithIndexedHeaderPaths.h +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithIndexedHeaderPaths.h @@ -1,31 +1,27 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_INDEXED_HEADER_PATHS_H #define SOURCE_GROUP_SETTINGS_WITH_INDEXED_HEADER_PATHS_H -#include -#include #include -#include "SourceGroupSettingsBase.h" +#include "SourceGroupSettingsComponent.h" -class ConfigManager; class FilePath; class SourceGroupSettingsWithIndexedHeaderPaths - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: - SourceGroupSettingsWithIndexedHeaderPaths(); virtual ~SourceGroupSettingsWithIndexedHeaderPaths() = default; - bool equals(std::shared_ptr other) const; - std::vector getIndexedHeaderPaths() const; std::vector getIndexedHeaderPathsExpandedAndAbsolute() const; void setIndexedHeaderPaths(const std::vector& indexedHeaderPaths); protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: std::vector m_indexedHeaderPaths; diff --git a/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsC.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsC.h new file mode 100644 index 00000000..3769c391 --- /dev/null +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsC.h @@ -0,0 +1,16 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_C_H +#define SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_C_H + +#include "SourceGroupSettingsWithSourceExtensions.h" + +class SourceGroupSettingsWithSourceExtensionsC + : public SourceGroupSettingsWithSourceExtensions +{ +private: + std::vector getDefaultSourceExtensions() const override + { + return { L".c" }; + } +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_C_H diff --git a/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsCpp.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsCpp.h new file mode 100644 index 00000000..e70df9d9 --- /dev/null +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsCpp.h @@ -0,0 +1,20 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_CPP_H +#define SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_CPP_H + +#include "SourceGroupSettingsWithSourceExtensions.h" + +class SourceGroupSettingsWithSourceExtensionsCpp + : public SourceGroupSettingsWithSourceExtensions +{ +private: + std::vector getDefaultSourceExtensions() const override + { + return { + L".cpp", + L".cxx", + L".cc" + }; + } +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_CPP_H diff --git a/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsCxx.h b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsCxx.h new file mode 100644 index 00000000..aaa49927 --- /dev/null +++ b/src/lib/settings/source_group/component/cxx/SourceGroupSettingsWithSourceExtensionsCxx.h @@ -0,0 +1,21 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_CXX_H +#define SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_CXX_H + +#include "SourceGroupSettingsWithSourceExtensions.h" + +class SourceGroupSettingsWithSourceExtensionsCxx + : public SourceGroupSettingsWithSourceExtensions +{ +private: + std::vector getDefaultSourceExtensions() const override + { + return { + L".c", + L".cpp", + L".cxx", + L".cc" + }; + } +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_CXX_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithClasspath.cpp b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithClasspath.cpp similarity index 65% rename from src/lib/settings/source_group/SourceGroupSettingsWithClasspath.cpp rename to src/lib/settings/source_group/component/java/SourceGroupSettingsWithClasspath.cpp index e054e4eb..35b3b51e 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithClasspath.cpp +++ b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithClasspath.cpp @@ -3,32 +3,6 @@ #include "ProjectSettings.h" #include "utility.h" -SourceGroupSettingsWithClasspath::SourceGroupSettingsWithClasspath() - : m_classpath(std::vector()) - , m_useJreSystemLibrary(true) -{ -} - -bool SourceGroupSettingsWithClasspath::equals(std::shared_ptr other) const -{ - return ( - (m_useJreSystemLibrary == other->m_useJreSystemLibrary) && - utility::isPermutation(m_classpath, other->m_classpath) - ); -} - -void SourceGroupSettingsWithClasspath::load(std::shared_ptr config, const std::string& key) -{ - setClasspath(config->getValuesOrDefaults(key + "/class_paths/class_path", std::vector())); - setUseJreSystemLibrary(config->getValueOrDefault(key + "/use_jre_system_library", true)); -} - -void SourceGroupSettingsWithClasspath::save(std::shared_ptr config, const std::string& key) -{ - config->setValues(key + "/class_paths/class_path", getClasspath()); - config->setValue(key + "/use_jre_system_library", getUseJreSystemLibrary()); -} - std::vector SourceGroupSettingsWithClasspath::getClasspath() const { return m_classpath; @@ -53,3 +27,26 @@ void SourceGroupSettingsWithClasspath::setUseJreSystemLibrary(bool useJreSystemL { m_useJreSystemLibrary = useJreSystemLibrary; } + +bool SourceGroupSettingsWithClasspath::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithClasspath* otherPtr = dynamic_cast(other); + + return ( + otherPtr && + (m_useJreSystemLibrary == otherPtr->m_useJreSystemLibrary) && + utility::isPermutation(m_classpath, otherPtr->m_classpath) + ); +} + +void SourceGroupSettingsWithClasspath::load(const ConfigManager* config, const std::string& key) +{ + setClasspath(config->getValuesOrDefaults(key + "/class_paths/class_path", std::vector())); + setUseJreSystemLibrary(config->getValueOrDefault(key + "/use_jre_system_library", true)); +} + +void SourceGroupSettingsWithClasspath::save(ConfigManager* config, const std::string& key) +{ + config->setValues(key + "/class_paths/class_path", getClasspath()); + config->setValue(key + "/use_jre_system_library", getUseJreSystemLibrary()); +} diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithClasspath.h b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithClasspath.h similarity index 58% rename from src/lib/settings/source_group/SourceGroupSettingsWithClasspath.h rename to src/lib/settings/source_group/component/java/SourceGroupSettingsWithClasspath.h index f4fc1793..d6107a68 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithClasspath.h +++ b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithClasspath.h @@ -1,24 +1,17 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_CLASSPATH_H #define SOURCE_GROUP_SETTINGS_WITH_CLASSPATH_H -#include -#include #include #include "FilePath.h" -#include "SourceGroupSettingsBase.h" - -class ConfigManager; +#include "SourceGroupSettingsComponent.h" class SourceGroupSettingsWithClasspath - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: - SourceGroupSettingsWithClasspath(); virtual ~SourceGroupSettingsWithClasspath() = default; - bool equals(std::shared_ptr other) const; - std::vector getClasspath() const; std::vector getClasspathExpandedAndAbsolute() const; void setClasspath(const std::vector& classpath); @@ -27,12 +20,14 @@ public: void setUseJreSystemLibrary(bool useJreSystemLibrary); protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: std::vector m_classpath; - bool m_useJreSystemLibrary; + bool m_useJreSystemLibrary = true; }; #endif // SOURCE_GROUP_SETTINGS_WITH_CLASSPATH_H diff --git a/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaGradle.cpp b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaGradle.cpp new file mode 100644 index 00000000..b25dadb6 --- /dev/null +++ b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaGradle.cpp @@ -0,0 +1,58 @@ +#include "SourceGroupSettingsWithJavaGradle.h" + +#include "ConfigManager.h" +#include "ProjectSettings.h" +#include "utilityFile.h" + +FilePath SourceGroupSettingsWithJavaGradle::getGradleDependenciesDirectoryPath() const +{ + return getSourceGroupDependenciesDirectoryPath().concatenate(L"gradle"); +} + +FilePath SourceGroupSettingsWithJavaGradle::getGradleProjectFilePath() const +{ + return m_gradleProjectFilePath; +} + +FilePath SourceGroupSettingsWithJavaGradle::getGradleProjectFilePathExpandedAndAbsolute() const +{ + return utility::getExpandedAndAbsolutePath(getGradleProjectFilePath(), getProjectSettings()->getProjectDirectoryPath()); +} + +void SourceGroupSettingsWithJavaGradle::setGradleProjectFilePath(const FilePath& path) +{ + m_gradleProjectFilePath = path; +} + +bool SourceGroupSettingsWithJavaGradle::getShouldIndexGradleTests() const +{ + return m_shouldIndexGradleTests; +} + +void SourceGroupSettingsWithJavaGradle::setShouldIndexGradleTests(bool value) +{ + m_shouldIndexGradleTests = value; +} + +bool SourceGroupSettingsWithJavaGradle::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithJavaGradle* otherPtr = dynamic_cast(other); + + return ( + otherPtr && + m_gradleProjectFilePath == otherPtr->m_gradleProjectFilePath && + m_shouldIndexGradleTests == otherPtr->m_shouldIndexGradleTests + ); +} + +void SourceGroupSettingsWithJavaGradle::load(const ConfigManager* config, const std::string& key) +{ + setGradleProjectFilePath(config->getValueOrDefault(key + "/gradle/project_file_path", FilePath(L""))); + setShouldIndexGradleTests(config->getValueOrDefault(key + "/gradle/should_index_tests", false)); +} + +void SourceGroupSettingsWithJavaGradle::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/gradle/project_file_path", getGradleProjectFilePath().wstr()); + config->setValue(key + "/gradle/should_index_tests", getShouldIndexGradleTests()); +} diff --git a/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaGradle.h b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaGradle.h new file mode 100644 index 00000000..eac6de62 --- /dev/null +++ b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaGradle.h @@ -0,0 +1,33 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_JAVA_GRADLE_H +#define SOURCE_GROUP_SETTINGS_WITH_JAVA_GRADLE_H + +#include "FilePath.h" +#include "SourceGroupSettingsComponent.h" + +class SourceGroupSettingsWithJavaGradle + : public SourceGroupSettingsComponent +{ +public: + virtual ~SourceGroupSettingsWithJavaGradle() = default; + + FilePath getGradleDependenciesDirectoryPath() const; + + FilePath getGradleProjectFilePath() const; + FilePath getGradleProjectFilePathExpandedAndAbsolute() const; + void setGradleProjectFilePath(const FilePath& path); + + bool getShouldIndexGradleTests() const; + void setShouldIndexGradleTests(bool value); + +protected: + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; + +private: + FilePath m_gradleProjectFilePath; + bool m_shouldIndexGradleTests = false; +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_JAVA_GRADLE_H diff --git a/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaMaven.cpp b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaMaven.cpp new file mode 100644 index 00000000..f6b5121b --- /dev/null +++ b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaMaven.cpp @@ -0,0 +1,58 @@ +#include "SourceGroupSettingsWithJavaMaven.h" + +#include "ConfigManager.h" +#include "ProjectSettings.h" +#include "utilityFile.h" + +FilePath SourceGroupSettingsWithJavaMaven::getMavenDependenciesDirectoryPath() const +{ + return getSourceGroupDependenciesDirectoryPath().concatenate(L"maven"); +} + +FilePath SourceGroupSettingsWithJavaMaven::getMavenProjectFilePath() const +{ + return m_mavenProjectFilePath; +} + +FilePath SourceGroupSettingsWithJavaMaven::getMavenProjectFilePathExpandedAndAbsolute() const +{ + return utility::getExpandedAndAbsolutePath(getMavenProjectFilePath(), getProjectSettings()->getProjectDirectoryPath()); +} + +void SourceGroupSettingsWithJavaMaven::setMavenProjectFilePath(const FilePath& path) +{ + m_mavenProjectFilePath = path; +} + +bool SourceGroupSettingsWithJavaMaven::getShouldIndexMavenTests() const +{ + return m_shouldIndexMavenTests; +} + +void SourceGroupSettingsWithJavaMaven::setShouldIndexMavenTests(bool value) +{ + m_shouldIndexMavenTests = value; +} + +bool SourceGroupSettingsWithJavaMaven::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithJavaMaven* otherPtr = dynamic_cast(other); + + return ( + otherPtr && + m_mavenProjectFilePath == otherPtr->m_mavenProjectFilePath && + m_shouldIndexMavenTests == otherPtr->m_shouldIndexMavenTests + ); +} + +void SourceGroupSettingsWithJavaMaven::load(const ConfigManager* config, const std::string& key) +{ + setMavenProjectFilePath(config->getValueOrDefault(key + "/maven/project_file_path", FilePath(L""))); + setShouldIndexMavenTests(config->getValueOrDefault(key + "/maven/should_index_tests", false)); +} + +void SourceGroupSettingsWithJavaMaven::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/maven/project_file_path", getMavenProjectFilePath().wstr()); + config->setValue(key + "/maven/should_index_tests", getShouldIndexMavenTests()); +} diff --git a/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaMaven.h b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaMaven.h new file mode 100644 index 00000000..df9d0077 --- /dev/null +++ b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaMaven.h @@ -0,0 +1,33 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_JAVA_MAVEN_H +#define SOURCE_GROUP_SETTINGS_WITH_JAVA_MAVEN_H + +#include "FilePath.h" +#include "SourceGroupSettingsComponent.h" + +class SourceGroupSettingsWithJavaMaven + : public SourceGroupSettingsComponent +{ +public: + virtual ~SourceGroupSettingsWithJavaMaven() = default; + + FilePath getMavenDependenciesDirectoryPath() const; + + FilePath getMavenProjectFilePath() const; + FilePath getMavenProjectFilePathExpandedAndAbsolute() const; + void setMavenProjectFilePath(const FilePath& path); + + bool getShouldIndexMavenTests() const; + void setShouldIndexMavenTests(bool value); + +protected: + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; + +private: + FilePath m_mavenProjectFilePath; + bool m_shouldIndexMavenTests = false; +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_JAVA_MAVEN_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithJavaStandard.cpp b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaStandard.cpp similarity index 67% rename from src/lib/settings/source_group/SourceGroupSettingsWithJavaStandard.cpp rename to src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaStandard.cpp index 2da17408..e46aa8dc 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithJavaStandard.cpp +++ b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaStandard.cpp @@ -7,24 +7,6 @@ std::wstring SourceGroupSettingsWithJavaStandard::getDefaultJavaStandardStatic() return L"8"; } -bool SourceGroupSettingsWithJavaStandard::equals(std::shared_ptr other) const -{ - return ( - other && - m_javaStandard == other->m_javaStandard - ); -} - -void SourceGroupSettingsWithJavaStandard::load(std::shared_ptr config, const std::string& key) -{ - setJavaStandard(config->getValueOrDefault(key + "/java_standard", L"")); -} - -void SourceGroupSettingsWithJavaStandard::save(std::shared_ptr config, const std::string& key) -{ - config->setValue(key + "/java_standard", getJavaStandard()); -} - std::wstring SourceGroupSettingsWithJavaStandard::getJavaStandard() const { if (m_javaStandard.empty()) @@ -44,6 +26,26 @@ std::vector SourceGroupSettingsWithJavaStandard::getAvailableJavaS return {L"1", L"2", L"3", L"4", L"5", L"6", L"7", L"8", L"9", L"10"}; } +bool SourceGroupSettingsWithJavaStandard::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithJavaStandard* otherPtr = dynamic_cast(other); + + return ( + otherPtr && + m_javaStandard == otherPtr->m_javaStandard + ); +} + +void SourceGroupSettingsWithJavaStandard::load(const ConfigManager* config, const std::string& key) +{ + setJavaStandard(config->getValueOrDefault(key + "/java_standard", L"")); +} + +void SourceGroupSettingsWithJavaStandard::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/java_standard", getJavaStandard()); +} + std::wstring SourceGroupSettingsWithJavaStandard::getDefaultJavaStandard() const { return getDefaultJavaStandardStatic(); diff --git a/src/lib/settings/source_group/SourceGroupSettingsWithJavaStandard.h b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaStandard.h similarity index 58% rename from src/lib/settings/source_group/SourceGroupSettingsWithJavaStandard.h rename to src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaStandard.h index bf314894..96e68744 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsWithJavaStandard.h +++ b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithJavaStandard.h @@ -1,33 +1,28 @@ #ifndef SOURCE_GROUP_SETTINGS_WITH_JAVA_STANDARD_H #define SOURCE_GROUP_SETTINGS_WITH_JAVA_STANDARD_H -#include -#include #include -#include "SourceGroupSettingsBase.h" - -class ConfigManager; +#include "SourceGroupSettingsComponent.h" class SourceGroupSettingsWithJavaStandard - : virtual public SourceGroupSettingsBase + : public SourceGroupSettingsComponent { public: static std::wstring getDefaultJavaStandardStatic(); - SourceGroupSettingsWithJavaStandard() = default; virtual ~SourceGroupSettingsWithJavaStandard() = default; - bool equals(std::shared_ptr other) const; - std::wstring getJavaStandard() const; void setJavaStandard(const std::wstring& standard); std::vector getAvailableJavaStandards() const; protected: - void load(std::shared_ptr config, const std::string& key); - void save(std::shared_ptr config, const std::string& key); + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; private: std::wstring getDefaultJavaStandard() const; diff --git a/src/lib/settings/source_group/component/java/SourceGroupSettingsWithSourceExtensionsJava.h b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithSourceExtensionsJava.h new file mode 100644 index 00000000..1379aea6 --- /dev/null +++ b/src/lib/settings/source_group/component/java/SourceGroupSettingsWithSourceExtensionsJava.h @@ -0,0 +1,16 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_JAVA_H +#define SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_JAVA_H + +#include "SourceGroupSettingsWithSourceExtensions.h" + +class SourceGroupSettingsWithSourceExtensionsJava + : public SourceGroupSettingsWithSourceExtensions +{ +private: + std::vector getDefaultSourceExtensions() const override + { + return { L".java" }; + } +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_JAVA_H diff --git a/src/lib/settings/source_group/component/python/SourceGroupSettingsWithPythonEnvironmentPath.cpp b/src/lib/settings/source_group/component/python/SourceGroupSettingsWithPythonEnvironmentPath.cpp new file mode 100644 index 00000000..d41199c8 --- /dev/null +++ b/src/lib/settings/source_group/component/python/SourceGroupSettingsWithPythonEnvironmentPath.cpp @@ -0,0 +1,40 @@ +#include "SourceGroupSettingsWithPythonEnvironmentPath.h" + +#include "ProjectSettings.h" +#include "utilityFile.h" + +FilePath SourceGroupSettingsWithPythonEnvironmentPath::getEnvironmentPath() const +{ + return m_environmentPath; +} + +FilePath SourceGroupSettingsWithPythonEnvironmentPath::getEnvironmentPathExpandedAndAbsolute() const +{ + return utility::getExpandedAndAbsolutePath(getEnvironmentPath(), getProjectSettings()->getProjectDirectoryPath()); +} + +void SourceGroupSettingsWithPythonEnvironmentPath::setEnvironmentPath(const FilePath& environmentPath) +{ + m_environmentPath = environmentPath; +} + +bool SourceGroupSettingsWithPythonEnvironmentPath::equals(const SourceGroupSettingsBase* other) const +{ + const SourceGroupSettingsWithPythonEnvironmentPath* otherPtr = + dynamic_cast(other); + + return ( + otherPtr && + m_environmentPath == otherPtr->m_environmentPath + ); +} + +void SourceGroupSettingsWithPythonEnvironmentPath::load(const ConfigManager* config, const std::string& key) +{ + setEnvironmentPath(config->getValueOrDefault(key + "/python_environment_path", FilePath(L""))); +} + +void SourceGroupSettingsWithPythonEnvironmentPath::save(ConfigManager* config, const std::string& key) +{ + config->setValue(key + "/python_environment_path", getEnvironmentPath().wstr()); +} diff --git a/src/lib/settings/source_group/component/python/SourceGroupSettingsWithPythonEnvironmentPath.h b/src/lib/settings/source_group/component/python/SourceGroupSettingsWithPythonEnvironmentPath.h new file mode 100644 index 00000000..49e50958 --- /dev/null +++ b/src/lib/settings/source_group/component/python/SourceGroupSettingsWithPythonEnvironmentPath.h @@ -0,0 +1,27 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_PYTHON_ENVIRONMENT_PATH_H +#define SOURCE_GROUP_SETTINGS_WITH_PYTHON_ENVIRONMENT_PATH_H + +#include "FilePath.h" +#include "SourceGroupSettingsComponent.h" + +class SourceGroupSettingsWithPythonEnvironmentPath + : public SourceGroupSettingsComponent +{ +public: + virtual ~SourceGroupSettingsWithPythonEnvironmentPath() = default; + + FilePath getEnvironmentPath() const; + FilePath getEnvironmentPathExpandedAndAbsolute() const; + void setEnvironmentPath(const FilePath& environmentPath); + +protected: + bool equals(const SourceGroupSettingsBase* other) const override; + + void load(const ConfigManager* config, const std::string& key) override; + void save(ConfigManager* config, const std::string& key) override; + +private: + FilePath m_environmentPath; +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_PYTHON_ENVIRONMENT_PATH_H diff --git a/src/lib/settings/source_group/component/python/SourceGroupSettingsWithSourceExtensionsPython.h b/src/lib/settings/source_group/component/python/SourceGroupSettingsWithSourceExtensionsPython.h new file mode 100644 index 00000000..0f71f9ef --- /dev/null +++ b/src/lib/settings/source_group/component/python/SourceGroupSettingsWithSourceExtensionsPython.h @@ -0,0 +1,16 @@ +#ifndef SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_PYTHON_H +#define SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_PYTHON_H + +#include "SourceGroupSettingsWithSourceExtensions.h" + +class SourceGroupSettingsWithSourceExtensionsPython + : public SourceGroupSettingsWithSourceExtensions +{ +private: + std::vector getDefaultSourceExtensions() const override + { + return { L".py" }; + } +}; + +#endif // SOURCE_GROUP_SETTINGS_WITH_SOURCE_EXTENSIONS_PYTHON_H diff --git a/src/lib/settings/source_group/type/SourceGroupSettingsCEmpty.h b/src/lib/settings/source_group/type/SourceGroupSettingsCEmpty.h new file mode 100644 index 00000000..894cd3fd --- /dev/null +++ b/src/lib/settings/source_group/type/SourceGroupSettingsCEmpty.h @@ -0,0 +1,35 @@ +#ifndef SOURCE_GROUP_SETTINGS_C_EMPTY_H +#define SOURCE_GROUP_SETTINGS_C_EMPTY_H + +#include "SourceGroupSettingsWithComponents.h" +#include "SourceGroupSettingsWithCStandard.h" +#include "SourceGroupSettingsWithCxxCrossCompilationOptions.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" +#include "SourceGroupSettingsWithCxxPchOptions.h" +#include "SourceGroupSettingsWithExcludeFilters.h" +#include "SourceGroupSettingsWithSourceExtensionsC.h" +#include "SourceGroupSettingsWithSourcePaths.h" + +class SourceGroupSettingsCEmpty + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithCStandard, + SourceGroupSettingsWithCxxCrossCompilationOptions, + SourceGroupSettingsWithCxxPathsAndFlags, + SourceGroupSettingsWithCxxPchOptions, + SourceGroupSettingsWithExcludeFilters, + SourceGroupSettingsWithSourceExtensionsC, + SourceGroupSettingsWithSourcePaths> +{ +public: + SourceGroupSettingsCEmpty(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_C_EMPTY, id, projectSettings) + { + } + + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_C_EMPTY_H diff --git a/src/lib/settings/source_group/type/SourceGroupSettingsCppEmpty.h b/src/lib/settings/source_group/type/SourceGroupSettingsCppEmpty.h new file mode 100644 index 00000000..ed08452e --- /dev/null +++ b/src/lib/settings/source_group/type/SourceGroupSettingsCppEmpty.h @@ -0,0 +1,35 @@ +#ifndef SOURCE_GROUP_SETTINGS_CPP_EMPTY_H +#define SOURCE_GROUP_SETTINGS_CPP_EMPTY_H + +#include "SourceGroupSettingsWithComponents.h" +#include "SourceGroupSettingsWithCppStandard.h" +#include "SourceGroupSettingsWithCxxCrossCompilationOptions.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" +#include "SourceGroupSettingsWithCxxPchOptions.h" +#include "SourceGroupSettingsWithExcludeFilters.h" +#include "SourceGroupSettingsWithSourceExtensionsCpp.h" +#include "SourceGroupSettingsWithSourcePaths.h" + +class SourceGroupSettingsCppEmpty + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithCppStandard, + SourceGroupSettingsWithCxxCrossCompilationOptions, + SourceGroupSettingsWithCxxPathsAndFlags, + SourceGroupSettingsWithCxxPchOptions, + SourceGroupSettingsWithExcludeFilters, + SourceGroupSettingsWithSourceExtensionsCpp, + SourceGroupSettingsWithSourcePaths> +{ +public: + SourceGroupSettingsCppEmpty(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_CPP_EMPTY, id, projectSettings) + { + } + + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_CPP_EMPTY_H diff --git a/src/lib/settings/source_group/type/SourceGroupSettingsCustomCommand.h b/src/lib/settings/source_group/type/SourceGroupSettingsCustomCommand.h new file mode 100644 index 00000000..43210930 --- /dev/null +++ b/src/lib/settings/source_group/type/SourceGroupSettingsCustomCommand.h @@ -0,0 +1,29 @@ +#ifndef SOURCE_GROUP_SETTINGS_CUSTOM_COMMAND_H +#define SOURCE_GROUP_SETTINGS_CUSTOM_COMMAND_H + +#include "SourceGroupSettingsWithComponents.h" +#include "SourceGroupSettingsWithCustomCommand.h" +#include "SourceGroupSettingsWithExcludeFilters.h" +#include "SourceGroupSettingsWithSourceExtensionsEmpty.h" +#include "SourceGroupSettingsWithSourcePaths.h" + +class SourceGroupSettingsCustomCommand + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithCustomCommand, + SourceGroupSettingsWithExcludeFilters, + SourceGroupSettingsWithSourceExtensionsEmpty, + SourceGroupSettingsWithSourcePaths> +{ +public: + SourceGroupSettingsCustomCommand(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_CUSTOM_COMMAND, id, projectSettings) + { + } + + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_CUSTOM_COMMAND_H diff --git a/src/lib/settings/source_group/type/SourceGroupSettingsCxxCdb.h b/src/lib/settings/source_group/type/SourceGroupSettingsCxxCdb.h new file mode 100644 index 00000000..5ad26eb6 --- /dev/null +++ b/src/lib/settings/source_group/type/SourceGroupSettingsCxxCdb.h @@ -0,0 +1,31 @@ +#ifndef SOURCE_GROUP_SETTINGS_CXX_CDB_H +#define SOURCE_GROUP_SETTINGS_CXX_CDB_H + +#include "SourceGroupSettingsWithComponents.h" +#include "SourceGroupSettingsWithCxxCdbPath.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" +#include "SourceGroupSettingsWithCxxPchOptions.h" +#include "SourceGroupSettingsWithExcludeFilters.h" +#include "SourceGroupSettingsWithIndexedHeaderPaths.h" + +class SourceGroupSettingsCxxCdb + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithCxxCdbPath, + SourceGroupSettingsWithCxxPathsAndFlags, + SourceGroupSettingsWithCxxPchOptions, + SourceGroupSettingsWithExcludeFilters, + SourceGroupSettingsWithIndexedHeaderPaths> +{ +public: + SourceGroupSettingsCxxCdb(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_CXX_CDB, id, projectSettings) + { + } + + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_CXX_CDB_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsCxxCdbVs.h b/src/lib/settings/source_group/type/SourceGroupSettingsCxxCdbVs.h similarity index 56% rename from src/lib/settings/source_group/SourceGroupSettingsCxxCdbVs.h rename to src/lib/settings/source_group/type/SourceGroupSettingsCxxCdbVs.h index b25af186..df61ef74 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsCxxCdbVs.h +++ b/src/lib/settings/source_group/type/SourceGroupSettingsCxxCdbVs.h @@ -2,15 +2,11 @@ #define SOURCE_GROUP_SETTINGS_CXX_CDB_VS_H #include "SourceGroupSettingsCxxCdb.h" -#include "FilePath.h" class SourceGroupSettingsCxxCdbVs : public SourceGroupSettingsCxxCdb { -public: - SourceGroupSettingsCxxCdbVs(const std::string& id, const ProjectSettings* projectSettings); - - std::shared_ptr createCopy() const override; + using SourceGroupSettingsCxxCdb::SourceGroupSettingsCxxCdb; }; #endif // SOURCE_GROUP_SETTINGS_CXX_CDB_VS_H diff --git a/src/lib/settings/source_group/type/SourceGroupSettingsCxxCodeblocks.h b/src/lib/settings/source_group/type/SourceGroupSettingsCxxCodeblocks.h new file mode 100644 index 00000000..795f6d5e --- /dev/null +++ b/src/lib/settings/source_group/type/SourceGroupSettingsCxxCodeblocks.h @@ -0,0 +1,35 @@ +#ifndef SOURCE_GROUP_SETTINGS_CXX_CODEBLOCKS_H +#define SOURCE_GROUP_SETTINGS_CXX_CODEBLOCKS_H + +#include "SourceGroupSettingsWithComponents.h" +#include "SourceGroupSettingsWithCppStandard.h" +#include "SourceGroupSettingsWithCStandard.h" +#include "SourceGroupSettingsWithCxxCodeblocksPath.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" +#include "SourceGroupSettingsWithExcludeFilters.h" +#include "SourceGroupSettingsWithIndexedHeaderPaths.h" +#include "SourceGroupSettingsWithSourceExtensionsCxx.h" + +class SourceGroupSettingsCxxCodeblocks + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithCppStandard, + SourceGroupSettingsWithCStandard, + SourceGroupSettingsWithCxxCodeblocksPath, + SourceGroupSettingsWithCxxPathsAndFlags, + SourceGroupSettingsWithExcludeFilters, + SourceGroupSettingsWithIndexedHeaderPaths, + SourceGroupSettingsWithSourceExtensionsCxx> +{ +public: + SourceGroupSettingsCxxCodeblocks(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_CXX_CODEBLOCKS, id, projectSettings) + { + } + + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_CXX_CODEBLOCKS_H diff --git a/src/lib/settings/source_group/type/SourceGroupSettingsCxxSonargraph.h b/src/lib/settings/source_group/type/SourceGroupSettingsCxxSonargraph.h new file mode 100644 index 00000000..98340e4f --- /dev/null +++ b/src/lib/settings/source_group/type/SourceGroupSettingsCxxSonargraph.h @@ -0,0 +1,29 @@ +#ifndef SOURCE_GROUP_SETTINGS_CXX_SONARGRAPH_H +#define SOURCE_GROUP_SETTINGS_CXX_SONARGRAPH_H + +#include "SourceGroupSettingsWithComponents.h" +#include "SourceGroupSettingsWithCppStandard.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" +#include "SourceGroupSettingsWithIndexedHeaderPaths.h" +#include "SourceGroupSettingsWithSonargraphProjectPath.h" + +class SourceGroupSettingsCxxSonargraph + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithCppStandard, + SourceGroupSettingsWithCxxPathsAndFlags, + SourceGroupSettingsWithIndexedHeaderPaths, + SourceGroupSettingsWithSonargraphProjectPath> +{ +public: + SourceGroupSettingsCxxSonargraph(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_CXX_SONARGRAPH, id, projectSettings) + { + } + + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_CXX_SONARGRAPH_H diff --git a/src/lib/settings/source_group/type/SourceGroupSettingsJavaEmpty.h b/src/lib/settings/source_group/type/SourceGroupSettingsJavaEmpty.h new file mode 100644 index 00000000..f03e8500 --- /dev/null +++ b/src/lib/settings/source_group/type/SourceGroupSettingsJavaEmpty.h @@ -0,0 +1,31 @@ +#ifndef SOURCE_GROUP_SETTINGS_JAVA_EMPTY_H +#define SOURCE_GROUP_SETTINGS_JAVA_EMPTY_H + +#include "SourceGroupSettingsWithComponents.h" +#include "SourceGroupSettingsWithClasspath.h" +#include "SourceGroupSettingsWithExcludeFilters.h" +#include "SourceGroupSettingsWithJavaStandard.h" +#include "SourceGroupSettingsWithSourceExtensionsJava.h" +#include "SourceGroupSettingsWithSourcePaths.h" + +class SourceGroupSettingsJavaEmpty + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithClasspath, + SourceGroupSettingsWithExcludeFilters, + SourceGroupSettingsWithJavaStandard, + SourceGroupSettingsWithSourceExtensionsJava, + SourceGroupSettingsWithSourcePaths> +{ +public: + SourceGroupSettingsJavaEmpty(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_JAVA_EMPTY, id, projectSettings) + { + } + + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_JAVA_EMPTY_H diff --git a/src/lib/settings/source_group/type/SourceGroupSettingsJavaGradle.h b/src/lib/settings/source_group/type/SourceGroupSettingsJavaGradle.h new file mode 100644 index 00000000..90d598f6 --- /dev/null +++ b/src/lib/settings/source_group/type/SourceGroupSettingsJavaGradle.h @@ -0,0 +1,29 @@ +#ifndef SOURCE_GROUP_SETTINGS_JAVA_GRADLE_H +#define SOURCE_GROUP_SETTINGS_JAVA_GRADLE_H + +#include "SourceGroupSettingsWithComponents.h" +#include "SourceGroupSettingsWithExcludeFilters.h" +#include "SourceGroupSettingsWithJavaGradle.h" +#include "SourceGroupSettingsWithJavaStandard.h" +#include "SourceGroupSettingsWithSourceExtensionsJava.h" + +class SourceGroupSettingsJavaGradle + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithExcludeFilters, + SourceGroupSettingsWithJavaGradle, + SourceGroupSettingsWithJavaStandard, + SourceGroupSettingsWithSourceExtensionsJava> +{ +public: + SourceGroupSettingsJavaGradle(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_JAVA_GRADLE, id, projectSettings) + { + } + + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_JAVA_GRADLE_H diff --git a/src/lib/settings/source_group/type/SourceGroupSettingsJavaMaven.h b/src/lib/settings/source_group/type/SourceGroupSettingsJavaMaven.h new file mode 100644 index 00000000..bc6cbe40 --- /dev/null +++ b/src/lib/settings/source_group/type/SourceGroupSettingsJavaMaven.h @@ -0,0 +1,29 @@ +#ifndef SOURCE_GROUP_SETTINGS_JAVA_MAVEN_H +#define SOURCE_GROUP_SETTINGS_JAVA_MAVEN_H + +#include "SourceGroupSettingsWithComponents.h" +#include "SourceGroupSettingsWithExcludeFilters.h" +#include "SourceGroupSettingsWithJavaMaven.h" +#include "SourceGroupSettingsWithJavaStandard.h" +#include "SourceGroupSettingsWithSourceExtensionsJava.h" + +class SourceGroupSettingsJavaMaven + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithExcludeFilters, + SourceGroupSettingsWithJavaMaven, + SourceGroupSettingsWithJavaStandard, + SourceGroupSettingsWithSourceExtensionsJava> +{ +public: + SourceGroupSettingsJavaMaven(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_JAVA_MAVEN, id, projectSettings) + { + } + + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_JAVA_MAVEN_H diff --git a/src/lib/settings/source_group/SourceGroupSettingsJavaSonargraph.h b/src/lib/settings/source_group/type/SourceGroupSettingsJavaSonargraph.h similarity index 52% rename from src/lib/settings/source_group/SourceGroupSettingsJavaSonargraph.h rename to src/lib/settings/source_group/type/SourceGroupSettingsJavaSonargraph.h index 8389a90d..1db8d040 100644 --- a/src/lib/settings/source_group/SourceGroupSettingsJavaSonargraph.h +++ b/src/lib/settings/source_group/type/SourceGroupSettingsJavaSonargraph.h @@ -1,26 +1,27 @@ #ifndef SOURCE_GROUP_SETTINGS_JAVA_SONARGRAPH_H #define SOURCE_GROUP_SETTINGS_JAVA_SONARGRAPH_H -#include "SourceGroupSettings.h" +#include "SourceGroupSettingsWithComponents.h" #include "SourceGroupSettingsWithClasspath.h" #include "SourceGroupSettingsWithJavaStandard.h" #include "SourceGroupSettingsWithSonargraphProjectPath.h" class SourceGroupSettingsJavaSonargraph - : public SourceGroupSettings - , public SourceGroupSettingsWithClasspath - , public SourceGroupSettingsWithJavaStandard - , public SourceGroupSettingsWithSonargraphProjectPath + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithClasspath, + SourceGroupSettingsWithJavaStandard, + SourceGroupSettingsWithSonargraphProjectPath> { public: - SourceGroupSettingsJavaSonargraph(const std::string& id, const ProjectSettings* projectSettings); + SourceGroupSettingsJavaSonargraph(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_JAVA_SONARGRAPH, id, projectSettings) + { + } - std::shared_ptr createCopy() const override; - - void load(std::shared_ptr config) override; - void save(std::shared_ptr config) override; - - bool equals(std::shared_ptr other) const override; + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } }; #endif // SOURCE_GROUP_SETTINGS_JAVA_SONARGRAPH_H diff --git a/src/lib/settings/source_group/type/SourceGroupSettingsPythonEmpty.h b/src/lib/settings/source_group/type/SourceGroupSettingsPythonEmpty.h new file mode 100644 index 00000000..be75250e --- /dev/null +++ b/src/lib/settings/source_group/type/SourceGroupSettingsPythonEmpty.h @@ -0,0 +1,29 @@ +#ifndef SOURCE_GROUP_SETTINGS_PYTHON_EMPTY_H +#define SOURCE_GROUP_SETTINGS_PYTHON_EMPTY_H + +#include "SourceGroupSettingsWithComponents.h" +#include "SourceGroupSettingsWithExcludeFilters.h" +#include "SourceGroupSettingsWithPythonEnvironmentPath.h" +#include "SourceGroupSettingsWithSourceExtensionsPython.h" +#include "SourceGroupSettingsWithSourcePaths.h" + +class SourceGroupSettingsPythonEmpty + : public SourceGroupSettingsWithComponents< + SourceGroupSettingsWithExcludeFilters, + SourceGroupSettingsWithPythonEnvironmentPath, + SourceGroupSettingsWithSourceExtensionsPython, + SourceGroupSettingsWithSourcePaths> +{ +public: + SourceGroupSettingsPythonEmpty(const std::string& id, const ProjectSettings* projectSettings) + : SourceGroupSettingsWithComponents(SOURCE_GROUP_PYTHON_EMPTY, id, projectSettings) + { + } + + std::shared_ptr createCopy() const override + { + return std::make_shared(*this); + } +}; + +#endif // SOURCE_GROUP_SETTINGS_PYTHON_EMPTY_H diff --git a/src/lib_cxx/project/SourceGroupCxxEmpty.cpp b/src/lib_cxx/project/SourceGroupCxxEmpty.cpp index 949e82a6..d25f38e2 100644 --- a/src/lib_cxx/project/SourceGroupCxxEmpty.cpp +++ b/src/lib_cxx/project/SourceGroupCxxEmpty.cpp @@ -8,11 +8,13 @@ #include "SourceGroupSettingsCEmpty.h" #include "SourceGroupSettingsCppEmpty.h" #include "SourceGroupSettingsWithCppStandard.h" +#include "SourceGroupSettingsWithCStandard.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" #include "TaskLambda.h" #include "utility.h" #include "utilitySourceGroupCxx.h" -SourceGroupCxxEmpty::SourceGroupCxxEmpty(std::shared_ptr settings) +SourceGroupCxxEmpty::SourceGroupCxxEmpty(std::shared_ptr settings) : m_settings(settings) { } @@ -85,8 +87,8 @@ std::shared_ptr SourceGroupCxxEmpty::getIndexerCommandPr } std::vector compilerFlags = getBaseCompilerFlags(); - utility::append(compilerFlags, m_settings->getCompilerFlags()); - utility::append(compilerFlags, utility::getIncludePchFlags(m_settings.get())); + utility::append(compilerFlags, dynamic_cast(m_settings.get())->getCompilerFlags()); + utility::append(compilerFlags, utility::getIncludePchFlags(dynamic_cast(m_settings.get()))); std::shared_ptr provider = std::make_shared(); for (const FilePath& sourcePath: getAllSourceFilePaths()) @@ -129,13 +131,15 @@ std::shared_ptr SourceGroupCxxEmpty::getPreIndexTask( { if (pchSettings->getUseCompilerFlags()) { - utility::append(compilerFlags, m_settings->getCompilerFlags()); + utility::append(compilerFlags, + dynamic_cast(m_settings.get())->getCompilerFlags()); } utility::append(compilerFlags, pchSettings->getPchFlags()); } - return utility::createBuildPchTask(m_settings.get(), compilerFlags, storageProvider, dialogView); + return utility::createBuildPchTask(dynamic_cast( + m_settings.get()), compilerFlags, storageProvider, dialogView); } std::shared_ptr SourceGroupCxxEmpty::getSourceGroupSettings() @@ -189,6 +193,15 @@ std::vector SourceGroupCxxEmpty::getBaseCompilerFlags() const compilerFlags.push_back(L"c++"); } + const SourceGroupSettingsWithCxxPathsAndFlags* settingsCxx = + dynamic_cast(m_settings.get()); + + if (!settingsCxx) + { + LOG_ERROR(L"Source group doesn't specify cxx headers and flags."); + return compilerFlags; + } + { // Add the source paths as HeaderSearchPaths as well, so clang will also look here when searching include files. std::vector indexedDirectoryPaths; @@ -201,11 +214,19 @@ std::vector SourceGroupCxxEmpty::getBaseCompilerFlags() const } utility::append(compilerFlags, IndexerCommandCxx::getCompilerFlagsForSystemHeaderSearchPaths( - utility::concat(indexedDirectoryPaths, utility::concat(m_settings->getHeaderSearchPathsExpandedAndAbsolute(), appSettings->getHeaderSearchPathsExpanded())))); + utility::concat(indexedDirectoryPaths, utility::concat( + settingsCxx->getHeaderSearchPathsExpandedAndAbsolute(), + appSettings->getHeaderSearchPathsExpanded() + ))) + ); } { utility::append(compilerFlags, IndexerCommandCxx::getCompilerFlagsForFrameworkSearchPaths( - utility::concat(m_settings->getFrameworkSearchPathsExpandedAndAbsolute(), appSettings->getFrameworkSearchPathsExpanded()))); + utility::concat( + settingsCxx->getFrameworkSearchPathsExpandedAndAbsolute(), + appSettings->getFrameworkSearchPathsExpanded() + ) + )); } return compilerFlags; diff --git a/src/lib_cxx/project/SourceGroupCxxEmpty.h b/src/lib_cxx/project/SourceGroupCxxEmpty.h index 4c6a0e3e..45050b0f 100644 --- a/src/lib_cxx/project/SourceGroupCxxEmpty.h +++ b/src/lib_cxx/project/SourceGroupCxxEmpty.h @@ -8,10 +8,11 @@ class SourceGroupSettingsCxx; -class SourceGroupCxxEmpty: public SourceGroup +class SourceGroupCxxEmpty + : public SourceGroup { public: - SourceGroupCxxEmpty(std::shared_ptr settings); + SourceGroupCxxEmpty(std::shared_ptr settings); std::set filterToContainedFilePaths(const std::set& filePaths) const override; std::set getAllSourceFilePaths() const override; @@ -25,7 +26,7 @@ private: std::shared_ptr getSourceGroupSettings() const override; std::vector getBaseCompilerFlags() const; - std::shared_ptr m_settings; + std::shared_ptr m_settings; }; #endif // SOURCE_GROUP_CXX_EMPTY_H diff --git a/src/lib_cxx/project/utilitySourceGroupCxx.cpp b/src/lib_cxx/project/utilitySourceGroupCxx.cpp index c5bbcf14..a3ffaeee 100644 --- a/src/lib_cxx/project/utilitySourceGroupCxx.cpp +++ b/src/lib_cxx/project/utilitySourceGroupCxx.cpp @@ -14,7 +14,6 @@ #include "logging.h" #include "ParserClientImpl.h" #include "SingleFrontendActionFactory.h" -#include "SourceGroupSettingsCxx.h" #include "SourceGroupSettingsWithCxxPchOptions.h" #include "StorageProvider.h" #include "TaskLambda.h" @@ -23,18 +22,13 @@ namespace utility { std::shared_ptr createBuildPchTask( - const SourceGroupSettingsCxx* settings, std::vector compilerFlags, - std::shared_ptr storageProvider, std::shared_ptr dialogView) + const SourceGroupSettingsWithCxxPchOptions* settings, + std::vector compilerFlags, + std::shared_ptr storageProvider, + std::shared_ptr dialogView) { - const SourceGroupSettingsWithCxxPchOptions* pchSettings = - dynamic_cast(settings); - if (!pchSettings) - { - return std::make_shared([](){}); - } - - FilePath pchInputFilePath = pchSettings->getPchInputFilePathExpandedAndAbsolute(); - FilePath pchDependenciesDirectoryPath = pchSettings->getPchDependenciesDirectoryPath(); + FilePath pchInputFilePath = settings->getPchInputFilePathExpandedAndAbsolute(); + FilePath pchDependenciesDirectoryPath = settings->getPchDependenciesDirectoryPath(); if (pchInputFilePath.empty() || pchDependenciesDirectoryPath.empty()) { @@ -158,26 +152,23 @@ namespace utility } } - std::vector getIncludePchFlags(const SourceGroupSettingsCxx* settings) + std::vector getIncludePchFlags(const SourceGroupSettingsWithCxxPchOptions* settings) { - const SourceGroupSettingsWithCxxPchOptions* pchSettings = - dynamic_cast(settings); - if (pchSettings) - { - const FilePath pchInputFilePath = pchSettings->getPchInputFilePathExpandedAndAbsolute(); - const FilePath pchDependenciesDirectoryPath = pchSettings->getPchDependenciesDirectoryPath(); + const FilePath pchInputFilePath = settings->getPchInputFilePathExpandedAndAbsolute(); + const FilePath pchDependenciesDirectoryPath = settings->getPchDependenciesDirectoryPath(); - if (!pchInputFilePath.empty() && !pchDependenciesDirectoryPath.empty()) - { - const FilePath pchOutputFilePath = - pchDependenciesDirectoryPath.getConcatenated(pchInputFilePath.fileName()).replaceExtension(L"pch"); - return { - L"-fallow-pch-with-compiler-errors", - L"-include-pch", - pchOutputFilePath.wstr() - }; - } + if (!pchInputFilePath.empty() && !pchDependenciesDirectoryPath.empty()) + { + const FilePath pchOutputFilePath = + pchDependenciesDirectoryPath.getConcatenated(pchInputFilePath.fileName()).replaceExtension(L"pch"); + + return { + L"-fallow-pch-with-compiler-errors", + L"-include-pch", + pchOutputFilePath.wstr() + }; } + return {}; } } diff --git a/src/lib_cxx/project/utilitySourceGroupCxx.h b/src/lib_cxx/project/utilitySourceGroupCxx.h index a2a0ab25..1e4c077c 100644 --- a/src/lib_cxx/project/utilitySourceGroupCxx.h +++ b/src/lib_cxx/project/utilitySourceGroupCxx.h @@ -12,20 +12,23 @@ namespace clang { } class DialogView; -class SourceGroupSettingsCxx; +class SourceGroupSettingsWithCxxPchOptions; class StorageProvider; class Task; namespace utility { std::shared_ptr createBuildPchTask( - const SourceGroupSettingsCxx* settings, std::vector compilerFlags, - std::shared_ptr storageProvider, std::shared_ptr dialogView); + const SourceGroupSettingsWithCxxPchOptions* settings, + std::vector compilerFlags, + std::shared_ptr storageProvider, + std::shared_ptr dialogView); + bool containsIncludePchFlags(std::shared_ptr cdb); bool containsIncludePchFlag(const std::vector& args); std::vector getWithRemoveIncludePchFlag(const std::vector& args); void removeIncludePchFlag(std::vector& args); - std::vector getIncludePchFlags(const SourceGroupSettingsCxx* settings); + std::vector getIncludePchFlags(const SourceGroupSettingsWithCxxPchOptions* settings); } #endif // UTILITY_SOURCE_GROUP_CXX_H diff --git a/src/lib_gui/qt/project_wizard/QtProjectWizard.cpp b/src/lib_gui/qt/project_wizard/QtProjectWizard.cpp index f385691e..80e75249 100644 --- a/src/lib_gui/qt/project_wizard/QtProjectWizard.cpp +++ b/src/lib_gui/qt/project_wizard/QtProjectWizard.cpp @@ -93,7 +93,7 @@ namespace return false; } - void addMsvcCompatibilityFlagsOnDemand(std::shared_ptr settings) + void addMsvcCompatibilityFlagsOnDemand(std::shared_ptr settings) { if (applicationSettingsContainVisualStudioHeaderSearchPaths()) { diff --git a/src/lib_gui/qt/project_wizard/content/QtProjectWizardContentFlags.cpp b/src/lib_gui/qt/project_wizard/content/QtProjectWizardContentFlags.cpp index 50901cc8..18e9e36c 100644 --- a/src/lib_gui/qt/project_wizard/content/QtProjectWizardContentFlags.cpp +++ b/src/lib_gui/qt/project_wizard/content/QtProjectWizardContentFlags.cpp @@ -4,9 +4,13 @@ #include #include "QtStringListBox.h" -#include "SourceGroupSettingsCxx.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" -QtProjectWizardContentFlags::QtProjectWizardContentFlags(std::shared_ptr settings, QtProjectWizardWindow* window, bool indicateAsAdditional) +QtProjectWizardContentFlags::QtProjectWizardContentFlags( + std::shared_ptr settings, + QtProjectWizardWindow* window, + bool indicateAsAdditional +) : QtProjectWizardContent(window) , m_settings(settings) , m_indicateAsAdditional(indicateAsAdditional) diff --git a/src/lib_gui/qt/project_wizard/content/QtProjectWizardContentFlags.h b/src/lib_gui/qt/project_wizard/content/QtProjectWizardContentFlags.h index 5705714d..f61355c9 100644 --- a/src/lib_gui/qt/project_wizard/content/QtProjectWizardContentFlags.h +++ b/src/lib_gui/qt/project_wizard/content/QtProjectWizardContentFlags.h @@ -4,7 +4,7 @@ #include "QtProjectWizardContent.h" class QtStringListBox; -class SourceGroupSettingsCxx; +class SourceGroupSettingsWithCxxPathsAndFlags; class QtProjectWizardContentFlags : public QtProjectWizardContent @@ -12,7 +12,11 @@ class QtProjectWizardContentFlags Q_OBJECT public: - QtProjectWizardContentFlags(std::shared_ptr settings, QtProjectWizardWindow* window, bool indicateAsAdditional = false); + QtProjectWizardContentFlags( + std::shared_ptr settings, + QtProjectWizardWindow* window, + bool indicateAsAdditional = false + ); // QtProjectWizardContent implementation virtual void populate(QGridLayout* layout, int& row) override; @@ -22,7 +26,7 @@ public: virtual bool check() override; private: - std::shared_ptr m_settings; + std::shared_ptr m_settings; const bool m_indicateAsAdditional; QtStringListBox* m_list; diff --git a/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsFrameworkSearch.cpp b/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsFrameworkSearch.cpp index 6ab341a6..e3d6bec4 100644 --- a/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsFrameworkSearch.cpp +++ b/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsFrameworkSearch.cpp @@ -1,6 +1,7 @@ #include "QtProjectWizardContentPathsFrameworkSearch.h" -#include "SourceGroupSettingsCxx.h" +#include "SourceGroupSettings.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" QtProjectWizardContentPathsFrameworkSearch::QtProjectWizardContentPathsFrameworkSearch( std::shared_ptr settings, QtProjectWizardWindow* window, bool indicateAsAdditional @@ -18,7 +19,8 @@ QtProjectWizardContentPathsFrameworkSearch::QtProjectWizardContentPathsFramework void QtProjectWizardContentPathsFrameworkSearch::load() { - std::shared_ptr cxxSettings = std::dynamic_pointer_cast(m_settings); + std::shared_ptr cxxSettings = + std::dynamic_pointer_cast(m_settings); if (cxxSettings) { m_list->setPaths(cxxSettings->getFrameworkSearchPaths()); @@ -27,7 +29,8 @@ void QtProjectWizardContentPathsFrameworkSearch::load() void QtProjectWizardContentPathsFrameworkSearch::save() { - std::shared_ptr cxxSettings = std::dynamic_pointer_cast(m_settings); + std::shared_ptr cxxSettings = + std::dynamic_pointer_cast(m_settings); if (cxxSettings) { cxxSettings->setFrameworkSearchPaths(m_list->getPathsAsDisplayed()); diff --git a/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsHeaderSearch.cpp b/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsHeaderSearch.cpp index 0629ad18..c9aabcfd 100644 --- a/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsHeaderSearch.cpp +++ b/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsHeaderSearch.cpp @@ -11,7 +11,8 @@ #include "QtPathListDialog.h" #include "QtTextEditDialog.h" #include "ScopedFunctor.h" -#include "SourceGroupSettingsCxx.h" +#include "SourceGroupSettings.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" #include "SourceGroupSettingsWithExcludeFilters.h" #include "SourceGroupSettingsWithSourceExtensions.h" #include "SourceGroupSettingsWithSourcePaths.h" @@ -73,7 +74,8 @@ void QtProjectWizardContentPathsHeaderSearch::populate(QGridLayout* layout, int& void QtProjectWizardContentPathsHeaderSearch::load() { - std::shared_ptr cxxSettings = std::dynamic_pointer_cast(m_settings); + std::shared_ptr cxxSettings = + std::dynamic_pointer_cast(m_settings); if (cxxSettings) { m_list->setPaths(cxxSettings->getHeaderSearchPaths()); @@ -82,7 +84,8 @@ void QtProjectWizardContentPathsHeaderSearch::load() void QtProjectWizardContentPathsHeaderSearch::save() { - std::shared_ptr cxxSettings = std::dynamic_pointer_cast(m_settings); + std::shared_ptr cxxSettings = + std::dynamic_pointer_cast(m_settings); if (cxxSettings) { cxxSettings->setHeaderSearchPaths(m_list->getPathsAsDisplayed()); @@ -162,8 +165,8 @@ void QtProjectWizardContentPathsHeaderSearch::validateIncludesButtonClicked() indexedFilePaths = pathSettings->getSourcePathsExpandedAndAbsolute(); headerSearchPaths = ApplicationSettings::getInstance()->getHeaderSearchPathsExpanded(); - if (std::shared_ptr cxxSettings = - std::dynamic_pointer_cast(m_settings)) + if (std::shared_ptr cxxSettings = + std::dynamic_pointer_cast(m_settings)) { utility::append(headerSearchPaths, cxxSettings->getHeaderSearchPathsExpandedAndAbsolute()); } @@ -232,8 +235,8 @@ void QtProjectWizardContentPathsHeaderSearch::finishedSelectDetectIncludesRootPa sourceFilePaths = fileManager.getAllSourceFilePaths(); headerSearchPaths = ApplicationSettings::getInstance()->getHeaderSearchPathsExpanded(); - if (std::shared_ptr cxxSettings = - std::dynamic_pointer_cast(m_settings)) + if (std::shared_ptr cxxSettings = + std::dynamic_pointer_cast(m_settings)) { utility::append(headerSearchPaths, cxxSettings->getHeaderSearchPathsExpandedAndAbsolute()); } diff --git a/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsSource.cpp b/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsSource.cpp index ab94c3ac..8b77b60d 100644 --- a/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsSource.cpp +++ b/src/lib_gui/qt/project_wizard/content/paths/QtProjectWizardContentPathsSource.cpp @@ -4,10 +4,10 @@ #include "SourceGroupCxxEmpty.h" #include "SourceGroupJavaEmpty.h" #include "SourceGroupPythonEmpty.h" -#include "SourceGroupSettingsCxx.h" #include "SourceGroupSettingsCustomCommand.h" #include "SourceGroupSettingsJavaEmpty.h" #include "SourceGroupSettingsPythonEmpty.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" #include "SourceGroupSettingsWithSourcePaths.h" #include "utility.h" #include "utilityFile.h" @@ -50,9 +50,9 @@ void QtProjectWizardContentPathsSource::save() std::vector QtProjectWizardContentPathsSource::getFilePaths() const { std::set allSourceFilePaths; - if (std::shared_ptr settings = std::dynamic_pointer_cast(m_settings)) + if (std::dynamic_pointer_cast(m_settings)) { - allSourceFilePaths = SourceGroupCxxEmpty(settings).getAllSourceFilePaths(); + allSourceFilePaths = SourceGroupCxxEmpty(m_settings).getAllSourceFilePaths(); } else if (std::shared_ptr settings = std::dynamic_pointer_cast(m_settings)) { diff --git a/src/lib_java/project/SourceGroupJava.cpp b/src/lib_java/project/SourceGroupJava.cpp index 42b94cc1..ff60d95a 100644 --- a/src/lib_java/project/SourceGroupJava.cpp +++ b/src/lib_java/project/SourceGroupJava.cpp @@ -1,9 +1,12 @@ #include "SourceGroupJava.h" #include "IndexerCommandJava.h" -#include "SourceGroupSettingsJava.h" #include "FileManager.h" #include "logging.h" +#include "SourceGroupSettings.h" +#include "SourceGroupSettingsWithExcludeFilters.h" +#include "SourceGroupSettingsWithJavaStandard.h" +#include "SourceGroupSettingsWithSourceExtensions.h" std::set SourceGroupJava::filterToContainedFilePaths(const std::set& filePaths) const { @@ -24,15 +27,16 @@ std::set SourceGroupJava::getAllSourceFilePaths() const FileManager fileManager; fileManager.update( getAllSourcePaths(), - getSourceGroupSettingsJava()->getExcludeFiltersExpandedAndAbsolute(), - getSourceGroupSettingsJava()->getSourceExtensions() + dynamic_cast(getSourceGroupSettings().get())->getExcludeFiltersExpandedAndAbsolute(), + dynamic_cast(getSourceGroupSettings().get())->getSourceExtensions() ); return fileManager.getAllSourceFilePaths(); } std::vector> SourceGroupJava::getIndexerCommands(const std::set& filesToIndex) const { - const std::wstring languageStandard = getSourceGroupSettingsJava()->getJavaStandard(); + const std::wstring languageStandard = + dynamic_cast(getSourceGroupSettings().get())->getJavaStandard(); std::vector classPath = getClassPath(); @@ -50,16 +54,6 @@ std::vector> SourceGroupJava::getIndexerCommands return indexerCommands; } -std::shared_ptr SourceGroupJava::getSourceGroupSettings() -{ - return getSourceGroupSettingsJava(); -} - -std::shared_ptr SourceGroupJava::getSourceGroupSettings() const -{ - return getSourceGroupSettingsJava(); -} - std::vector SourceGroupJava::getClassPath() const { LOG_INFO("Retrieving classpath for indexer commands"); diff --git a/src/lib_java/project/SourceGroupJava.h b/src/lib_java/project/SourceGroupJava.h index fb92e480..9419a846 100644 --- a/src/lib_java/project/SourceGroupJava.h +++ b/src/lib_java/project/SourceGroupJava.h @@ -7,9 +7,8 @@ #include "SourceGroup.h" -class SourceGroupSettingsJava; - -class SourceGroupJava: public SourceGroup +class SourceGroupJava + : public SourceGroup { public: std::set filterToContainedFilePaths(const std::set& filePaths) const override; @@ -19,10 +18,6 @@ public: private: virtual std::vector getAllSourcePaths() const = 0; virtual std::vector doGetClassPath() const = 0; - virtual std::shared_ptr getSourceGroupSettingsJava() = 0; - virtual std::shared_ptr getSourceGroupSettingsJava() const = 0; - std::shared_ptr getSourceGroupSettings() override; - std::shared_ptr getSourceGroupSettings() const override; std::vector getClassPath() const; }; diff --git a/src/lib_java/project/SourceGroupJavaEmpty.cpp b/src/lib_java/project/SourceGroupJavaEmpty.cpp index 80df830d..0e736555 100644 --- a/src/lib_java/project/SourceGroupJavaEmpty.cpp +++ b/src/lib_java/project/SourceGroupJavaEmpty.cpp @@ -24,15 +24,16 @@ std::vector SourceGroupJavaEmpty::getAllSourcePaths() const std::vector SourceGroupJavaEmpty::doGetClassPath() const { - return utility::getClassPath(m_settings->getClasspathExpandedAndAbsolute(), m_settings->getUseJreSystemLibrary(), getAllSourceFilePaths()); + return utility::getClassPath( + m_settings->getClasspathExpandedAndAbsolute(), m_settings->getUseJreSystemLibrary(), getAllSourceFilePaths()); } -std::shared_ptr SourceGroupJavaEmpty::getSourceGroupSettingsJava() +std::shared_ptr SourceGroupJavaEmpty::getSourceGroupSettings() { return m_settings; } -std::shared_ptr SourceGroupJavaEmpty::getSourceGroupSettingsJava() const +std::shared_ptr SourceGroupJavaEmpty::getSourceGroupSettings() const { return m_settings; } diff --git a/src/lib_java/project/SourceGroupJavaEmpty.h b/src/lib_java/project/SourceGroupJavaEmpty.h index 64b00623..55c1f989 100644 --- a/src/lib_java/project/SourceGroupJavaEmpty.h +++ b/src/lib_java/project/SourceGroupJavaEmpty.h @@ -8,7 +8,8 @@ class SourceGroupSettingsJavaEmpty; -class SourceGroupJavaEmpty: public SourceGroupJava +class SourceGroupJavaEmpty + : public SourceGroupJava { public: SourceGroupJavaEmpty(std::shared_ptr settings); @@ -17,8 +18,8 @@ public: private: std::vector getAllSourcePaths() const override; std::vector doGetClassPath() const override; - std::shared_ptr getSourceGroupSettingsJava() override; - std::shared_ptr getSourceGroupSettingsJava() const override; + std::shared_ptr getSourceGroupSettings() override; + std::shared_ptr getSourceGroupSettings() const override; std::shared_ptr m_settings; }; diff --git a/src/lib_java/project/SourceGroupJavaGradle.cpp b/src/lib_java/project/SourceGroupJavaGradle.cpp index 3a908d7a..ce283479 100644 --- a/src/lib_java/project/SourceGroupJavaGradle.cpp +++ b/src/lib_java/project/SourceGroupJavaGradle.cpp @@ -72,12 +72,12 @@ std::vector SourceGroupJavaGradle::doGetClassPath() const return classPath; } -std::shared_ptr SourceGroupJavaGradle::getSourceGroupSettingsJava() +std::shared_ptr SourceGroupJavaGradle::getSourceGroupSettings() { return m_settings; } -std::shared_ptr SourceGroupJavaGradle::getSourceGroupSettingsJava() const +std::shared_ptr SourceGroupJavaGradle::getSourceGroupSettings() const { return m_settings; } diff --git a/src/lib_java/project/SourceGroupJavaGradle.h b/src/lib_java/project/SourceGroupJavaGradle.h index 4947736f..b667c033 100644 --- a/src/lib_java/project/SourceGroupJavaGradle.h +++ b/src/lib_java/project/SourceGroupJavaGradle.h @@ -8,7 +8,8 @@ class SourceGroupSettingsJavaGradle; -class SourceGroupJavaGradle : public SourceGroupJava +class SourceGroupJavaGradle + : public SourceGroupJava { public: SourceGroupJavaGradle(std::shared_ptr settings); @@ -17,8 +18,8 @@ public: private: std::vector getAllSourcePaths() const override; std::vector doGetClassPath() const override; - std::shared_ptr getSourceGroupSettingsJava() override; - std::shared_ptr getSourceGroupSettingsJava() const override; + std::shared_ptr getSourceGroupSettings() override; + std::shared_ptr getSourceGroupSettings() const override; bool prepareGradleData(); std::shared_ptr m_settings; diff --git a/src/lib_java/project/SourceGroupJavaMaven.cpp b/src/lib_java/project/SourceGroupJavaMaven.cpp index 891b93b7..b5dfdfba 100644 --- a/src/lib_java/project/SourceGroupJavaMaven.cpp +++ b/src/lib_java/project/SourceGroupJavaMaven.cpp @@ -77,12 +77,12 @@ std::vector SourceGroupJavaMaven::doGetClassPath() const return classPath; } -std::shared_ptr SourceGroupJavaMaven::getSourceGroupSettingsJava() +std::shared_ptr SourceGroupJavaMaven::getSourceGroupSettings() { return m_settings; } -std::shared_ptr SourceGroupJavaMaven::getSourceGroupSettingsJava() const +std::shared_ptr SourceGroupJavaMaven::getSourceGroupSettings() const { return m_settings; } diff --git a/src/lib_java/project/SourceGroupJavaMaven.h b/src/lib_java/project/SourceGroupJavaMaven.h index df77a94a..8fdeba55 100644 --- a/src/lib_java/project/SourceGroupJavaMaven.h +++ b/src/lib_java/project/SourceGroupJavaMaven.h @@ -17,8 +17,8 @@ public: private: std::vector getAllSourcePaths() const override; std::vector doGetClassPath() const override; - std::shared_ptr getSourceGroupSettingsJava() override; - std::shared_ptr getSourceGroupSettingsJava() const override; + std::shared_ptr getSourceGroupSettings() override; + std::shared_ptr getSourceGroupSettings() const override; bool prepareMavenData(); std::shared_ptr m_settings; diff --git a/src/test/RefreshInfoGeneratorTestSuite.h b/src/test/RefreshInfoGeneratorTestSuite.h index b11b76ea..90df75a4 100644 --- a/src/test/RefreshInfoGeneratorTestSuite.h +++ b/src/test/RefreshInfoGeneratorTestSuite.h @@ -810,13 +810,26 @@ private: { public: SourceGroupSettingsTest(const ProjectSettings* projectSettings) - : SourceGroupSettings("TEST_ID", SOURCE_GROUP_UNKNOWN, projectSettings) + : SourceGroupSettings(SOURCE_GROUP_UNKNOWN, "TEST_ID", projectSettings) { } std::shared_ptr createCopy() const override { - return std::shared_ptr(); + return nullptr; + } + + void loadSettings(const ConfigManager* config) override + { + } + + void saveSettings(ConfigManager* config) override + { + } + + bool equalsSettings(const SourceGroupSettingsBase* other) override + { + return true; } }; diff --git a/src/test/SettingsTestSuite.h b/src/test/SettingsTestSuite.h index ad74e31b..05fc286f 100644 --- a/src/test/SettingsTestSuite.h +++ b/src/test/SettingsTestSuite.h @@ -2,7 +2,7 @@ #include "ProjectSettings.h" #include "Settings.h" -#include "SourceGroupSettingsCxx.h" +#include "SourceGroupSettingsWithCxxPathsAndFlags.h" #include "SourceGroupSettingsWithSourcePaths.h" class SettingsTestSuite : public CxxTest::TestSuite @@ -128,7 +128,7 @@ public: { ProjectSettings projectSettings; projectSettings.load(FilePath(L"data/SettingsTestSuite/settings.xml")); - std::shared_ptr sourceGroupSettings = + std::shared_ptr sourceGroupSettings = std::dynamic_pointer_cast(projectSettings.getAllSourceGroupSettings().front()); std::vector paths = sourceGroupSettings->getSourcePaths(); @@ -140,8 +140,8 @@ public: { ProjectSettings projectSettings; projectSettings.load(FilePath(L"data/SettingsTestSuite/settings.xml")); - std::shared_ptr sourceGroupSettings = - std::dynamic_pointer_cast(projectSettings.getAllSourceGroupSettings().front()); + std::shared_ptr sourceGroupSettings = + std::dynamic_pointer_cast(projectSettings.getAllSourceGroupSettings().front()); std::vector paths = sourceGroupSettings->getHeaderSearchPaths(); TS_ASSERT_EQUALS(paths.size(), 2);