| //===--- 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 |