File indexing completed on 2026-05-10 08:44:34
0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef LLVM_SUPPORT_STRINGSAVER_H
0010 #define LLVM_SUPPORT_STRINGSAVER_H
0011
0012 #include "llvm/ADT/DenseSet.h"
0013 #include "llvm/ADT/StringRef.h"
0014 #include "llvm/ADT/Twine.h"
0015 #include "llvm/Support/Allocator.h"
0016
0017 namespace llvm {
0018
0019
0020
0021 class StringSaver final {
0022 BumpPtrAllocator &Alloc;
0023
0024 public:
0025 StringSaver(BumpPtrAllocator &Alloc) : Alloc(Alloc) {}
0026
0027 BumpPtrAllocator &getAllocator() const { return Alloc; }
0028
0029
0030 StringRef save(const char *S) { return save(StringRef(S)); }
0031 StringRef save(StringRef S);
0032 StringRef save(const Twine &S);
0033 StringRef save(const std::string &S) { return save(StringRef(S)); }
0034 };
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044 class UniqueStringSaver final {
0045 StringSaver Strings;
0046 llvm::DenseSet<llvm::StringRef> Unique;
0047
0048 public:
0049 UniqueStringSaver(BumpPtrAllocator &Alloc) : Strings(Alloc) {}
0050
0051
0052 StringRef save(const char *S) { return save(StringRef(S)); }
0053 StringRef save(StringRef S);
0054 StringRef save(const Twine &S);
0055 StringRef save(const std::string &S) { return save(StringRef(S)); }
0056 };
0057
0058 }
0059 #endif