/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include <map> #include <string> #include <vector> struct ImportedCxxModuleInfo { std::string const Name; std::vector<std::string> const AvailableBmis; }; struct ImportedCxxModuleGeneratorInfo { std::string const BmiName; }; struct ImportedCxxModuleLookup { ImportedCxxModuleLookup() = default; ~ImportedCxxModuleLookup() = default; bool Initialized() const; void Initialize(std::string const& importedModules); std::string BmiNameForSource(std::string const& path); private: bool DoneInit = false; std::map<std::string, ImportedCxxModuleInfo> ImportedInfo; std::map<std::string, ImportedCxxModuleGeneratorInfo> GeneratorInfo; };