llvm-6502/tools/llvmc/ConfigData.h
Reid Spencer 68fb37ad67 Converted to use flex for tokenizing input so we can use an easier to
understand recursive descent parser, we can easily handle more syntax
variety, and we can more easily change the configuration items accepted.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15732 91177308-0d34-0410-b5e6-96231b3b80d8
2004-08-14 09:37:15 +00:00

62 lines
2.1 KiB
C++

//===- ConfigData.h - Configuration Data Provider ---------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Reid Spencer and 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 "CompilerDriver.h"
#include <Support/hash_map>
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:
LLVMC_ConfigDataProvider();
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 std::string& 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 hash_map<std::string,CompilerDriver::ConfigData*,
hash<std::string>,std::equal_to<std::string> > ConfigDataMap;
ConfigDataMap Configurations; ///< The cache of configurations
std::string configDir;
/// @}
};
}
#endif