| //===--- StringSet.h - The LLVM Compiler Driver -----------------*- C++ -*-===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open | |
| // Source License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // StringSet - A set-like wrapper for the StringMap. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef LLVM_ADT_STRINGSET_H | |
| #define LLVM_ADT_STRINGSET_H | |
| #include "llvm/ADT/StringMap.h" | |
| namespace llvm { | |
| /// StringSet - A wrapper for StringMap that provides set-like | |
| /// functionality. Only insert() and count() methods are used by my | |
| /// code. | |
| template <class AllocatorTy = llvm::MallocAllocator> | |
| class StringSet : public llvm::StringMap<char, AllocatorTy> { | |
| typedef llvm::StringMap<char, AllocatorTy> base; | |
| public: | |
| bool insert(StringRef InLang) { | |
| assert(!InLang.empty()); | |
| const char *KeyStart = InLang.data(); | |
| const char *KeyEnd = KeyStart + InLang.size(); | |
| return base::insert(llvm::StringMapEntry<char>:: | |
| Create(KeyStart, KeyEnd, base::getAllocator(), '+')); | |
| } | |
| }; | |
| } | |
| #endif // LLVM_ADT_STRINGSET_H |