| /* 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 <functional> | 
 | #include <memory> | 
 | #include <string> | 
 | #include <vector> | 
 |  | 
 | #include <cm/optional> | 
 |  | 
 | class cmGeneratorTarget; | 
 | struct cmScanDepInfo; | 
 | class cmSourceFile; | 
 |  | 
 | namespace Json { | 
 | class Value; | 
 | } | 
 |  | 
 | struct cmDyndepGeneratorCallbacks | 
 | { | 
 |   std::function<std::string(cmSourceFile const* sf, std::string const& config)> | 
 |     ObjectFilePath; | 
 |   std::function<std::string(cmSourceFile const* sf, std::string const& config)> | 
 |     BmiFilePath; | 
 | }; | 
 |  | 
 | struct cmDyndepMetadataCallbacks | 
 | { | 
 |   std::function<cm::optional<std::string>(std::string const& name)> ModuleFile; | 
 | }; | 
 |  | 
 | struct cmCxxModuleExportInfo; | 
 | struct cmCxxModuleExportInfoDeleter | 
 | { | 
 |   void operator()(cmCxxModuleExportInfo* ei) const; | 
 | }; | 
 |  | 
 | struct cmDyndepCollation | 
 | { | 
 |   static void AddCollationInformation(Json::Value& tdi, | 
 |                                       cmGeneratorTarget const* gt, | 
 |                                       std::string const& config, | 
 |                                       cmDyndepGeneratorCallbacks const& cb); | 
 |  | 
 |   static std::unique_ptr<cmCxxModuleExportInfo, cmCxxModuleExportInfoDeleter> | 
 |   ParseExportInfo(Json::Value const& tdi); | 
 |   static bool WriteDyndepMetadata(std::string const& lang, | 
 |                                   std::vector<cmScanDepInfo> const& objects, | 
 |                                   cmCxxModuleExportInfo const& export_info, | 
 |                                   cmDyndepMetadataCallbacks const& cb); | 
 |   static bool IsObjectPrivate(std::string const& object, | 
 |                               cmCxxModuleExportInfo const& export_info); | 
 |  | 
 |   static bool IsBmiOnly(cmCxxModuleExportInfo const& exportInfo, | 
 |                         std::string const& object); | 
 | }; |