X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FSupport%2FStringSaver.h;h=38fb7bb38339f9133bd5b5d3fe97df772e89fec9;hb=ba3f35ef578512993618c7e961bdd9132a8863f2;hp=8d3dc129edcd2e7d12ba21358c0ef1df34b110d6;hpb=3f8a26f6fe16cc76c98ab21db2c600bd7defbbaa;p=oota-llvm.git diff --git a/include/llvm/Support/StringSaver.h b/include/llvm/Support/StringSaver.h index 8d3dc129edc..38fb7bb3833 100644 --- a/include/llvm/Support/StringSaver.h +++ b/include/llvm/Support/StringSaver.h @@ -1,4 +1,4 @@ -//===- llvm/Support/StringSaver.h - Stable storage for strings --*- C++ -*-===// +//===- llvm/Support/StringSaver.h -------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -10,24 +10,23 @@ #ifndef LLVM_SUPPORT_STRINGSAVER_H #define LLVM_SUPPORT_STRINGSAVER_H +#include "llvm/ADT/StringRef.h" +#include "llvm/ADT/Twine.h" #include "llvm/Support/Allocator.h" -#include namespace llvm { -/// \brief Saves strings in stable storage that it owns. -class StringSaver { - BumpPtrAllocator Alloc; +/// \brief Saves strings in the inheritor's stable storage and returns a stable +/// raw character pointer. +class StringSaver final { + BumpPtrAllocator &Alloc; public: - const char *saveCStr(const char *CStr) { - auto Len = std::strlen(CStr) + 1; // Don't forget the NUL! - char *Buf = Alloc.Allocate(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)); } }; - -} // end namespace llvm - +} #endif