diff --git a/include/llvm/Support/ProgramOptions.h b/include/llvm/Support/ProgramOptions.h index 34badb54dea..944cd19aa41 100644 --- a/include/llvm/Support/ProgramOptions.h +++ b/include/llvm/Support/ProgramOptions.h @@ -19,21 +19,18 @@ #ifndef LLVM_SUPPORT_PROGRAMOPTIONS_H #define LLVM_SUPPORT_PROGRAMOPTIONS_H -//************************** System Include Files **************************/ - -#include - -//*************************** User Include Files ***************************/ - #include "llvm/Support/Unique.h" -#include "llvm/Support/StringUtils.h" +#include +#include -//************************ Forward Declarations ****************************/ +template <> struct hash { + size_t operator()(string const &str) const { + return hash()(str.c_str()); + } +}; class ProgramOption; -//************************* Main Driver Routine ****************************/ - //--------------------------------------------------------------------------- // // Class: ProgramOptions @@ -99,7 +96,7 @@ public: // the option and entry 3n + 2 contains the ascii value of the option. // All entries are allocated using malloc and can be freed with 'free'. //-------------------------------------------------------------------- - virtual vector GetDescription () const; + virtual vector GetDescription () const; protected: //-------------------------------------------------------------------- @@ -115,16 +112,16 @@ protected: const char* argv[], const char* envp[]); - inline ProgramOption* OptionHandler(const char* optString) { - ProgramOption** poPtr = optionRegistry.query(optString); - return poPtr? *poPtr : NULL; + inline ProgramOption* OptionHandler(const string &optString) { + hash_map::iterator hp = + optionRegistry.find(optString); + return (hp != optionRegistry.end()) ? hp->second : 0; } - - inline const ProgramOption* OptionHandler(const char* optString) const { - const ProgramOption* const* poPtr = optionRegistry.query(optString); - return poPtr? *poPtr : NULL; + inline const ProgramOption* OptionHandler(const string &optString) const { + hash_map::const_iterator hp = + optionRegistry.find(optString); + return (hp != optionRegistry.end()) ? hp->second : 0; } - protected: //-------------------------------------------------------------------- // Functions that must be overridden by the subclass. @@ -135,7 +132,7 @@ protected: virtual void PrintUsage (ostream& stream) const = 0; protected: - StringMap optionRegistry; + hash_map optionRegistry; int argc; const char** argv; const char** envp; diff --git a/include/llvm/Support/StringUtils.h b/include/llvm/Support/StringUtils.h deleted file mode 100644 index db42964c5f0..00000000000 --- a/include/llvm/Support/StringUtils.h +++ /dev/null @@ -1,75 +0,0 @@ -// $Id$ -*-c++-*- -//*************************************************************************** -// -// File: -// ProgramOptions.h -// -// Purpose: -// A representation of options for any program. -// -// History: -// 08/08/95 - adve - Created in the dHPF compiler -// 10/10/96 - mpal, dbaker - converted to const member functions. -// 10/19/96 - meven - slightly changed interface to accomodate -// arguments other than -X type options -// 07/15/01 - vadve - Copied to LLVM system and modified -// -//**************************************************************************/ - -#ifndef LLVM_SUPPORT_PROGRAMOPTIONS_h -#define LLVM_SUPPORT_PROGRAMOPTIONS_h - -//************************** System Include Files **************************/ - -#include -#include - -//*************************** User Include Files ***************************/ - -#include "llvm/Support/Unique.h" -class ProgramOption; - -//************************ Forward Declarations ****************************/ - -//***************************** String Functions ****************************/ - -struct eqstr -{ - bool operator()(const char* s1, const char* s2) const - { - return strcmp(s1, s2) == 0; - } -}; - -//***************************** String Classes *****************************/ - -template -class StringMap: - public hash_map, eqstr> -{ -public: - typedef hash_map, eqstr>::iterator - iterator; - typedef hash_map, eqstr>::const_iterator - const_iterator; - -public: - DataType* query(const char* _key) - { - hash_map, eqstr>::iterator - hashPair = this->find(_key); - return (hashPair == this->end())? NULL : & (*hashPair).second; - } - - const DataType* query(const char* _key) const - { - hash_map, eqstr>::const_iterator - hashPair = this->find(_key); - return (hashPair == this->end())? NULL : & (*hashPair).second; - } -}; - -//**************************************************************************/ - -#endif -