| //===- Configuration.h - Configuration Data Mgmt ----------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file declares the LLVMC_ConfigDataProvider class which implements the |
| // generation of ConfigData objects for the CompilerDriver. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_TOOLS_LLVMC_CONFIGDATA_H |
| #define LLVM_TOOLS_LLVMC_CONFIGDATA_H |
| |
| #include "llvm/ADT/StringMap.h" |
| #include "CompilerDriver.h" |
| |
| namespace llvm { |
| /// This class provides the high level interface to the LLVM Compiler Driver. |
| /// The driver's purpose is to make it easier for compiler writers and users |
| /// of LLVM to utilize the compiler toolkits and LLVM toolset by learning only |
| /// the interface of one program (llvmc). |
| /// |
| /// @see llvmc.cpp |
| /// @brief The interface to the LLVM Compiler Driver. |
| class LLVMC_ConfigDataProvider : public CompilerDriver::ConfigDataProvider { |
| /// @name Constructor |
| /// @{ |
| public: |
| virtual ~LLVMC_ConfigDataProvider(); |
| |
| /// @name Methods |
| /// @{ |
| public: |
| /// @brief Provide the configuration data to the CompilerDriver. |
| virtual CompilerDriver::ConfigData* |
| ProvideConfigData(const std::string& filetype); |
| |
| /// @brief Allow the configuration directory to be set |
| virtual void setConfigDir(const sys::Path& dirName) { |
| configDir = dirName; |
| } |
| |
| private: |
| CompilerDriver::ConfigData* ReadConfigData(const std::string& ftype); |
| |
| /// @} |
| /// @name Data |
| /// @{ |
| private: |
| /// @brief This type is used internally to hold the configuration data. |
| typedef StringMap<CompilerDriver::ConfigData*> ConfigDataMap; |
| ConfigDataMap Configurations; ///< The cache of configurations |
| sys::Path configDir; |
| /// @} |
| }; |
| } |
| |
| #endif |