- const char *saveCStr(const char *CStr) {
- auto Len = std::strlen(CStr) + 1; // Don't forget the NUL!
- char *Buf = Alloc.Allocate<char>(Len);
- std::memcpy(Buf, CStr, Len);
- return Buf;
- }
+ StringSaver(BumpPtrAllocator &Alloc) : Alloc(Alloc) {}
+ const char *save(const char *S) { return save(StringRef(S)); }
+ const char *save(StringRef S);
+ const char *save(const Twine &S) { return save(StringRef(S.str())); }
+ const char *save(std::string &S) { return save(StringRef(S)); }