#ifndef SOURCE_GROUP_H #define SOURCE_GROUP_H #include #include #include class IndexerCommand; class FilePath; class SourceGroupSettings; enum LanguageType; enum SourceGroupStatusType; enum SourceGroupType; class SourceGroup { public: virtual ~SourceGroup() = default; virtual bool prepareIndexing(); virtual std::set filterToContainedFilePaths(const std::set& filePaths) const = 0; virtual std::set getAllSourceFilePaths() const = 0; virtual std::vector> getIndexerCommands(const std::set& filesToIndex) const = 0; SourceGroupType getType() const; LanguageType getLanguage() const; SourceGroupStatusType getStatus() const; std::set filterToContainedSourceFilePath(const std::set& staticSourceFilePaths) const; bool containsSourceFilePath(const FilePath& sourceFilePath) const; protected: virtual std::shared_ptr getSourceGroupSettings() = 0; virtual std::shared_ptr getSourceGroupSettings() const = 0; }; #endif // SOURCE_GROUP_H