1 //===-- ManagedStringPool.h - Managed String Pool ---------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // The strings allocated from a managed string pool are owned by the string 10 // pool and will be deleted together with the managed string pool. 11 // 12 //===----------------------------------------------------------------------===// 13 14 #ifndef LLVM_LIB_TARGET_NVPTX_MANAGEDSTRINGPOOL_H 15 #define LLVM_LIB_TARGET_NVPTX_MANAGEDSTRINGPOOL_H 16 17 #include "llvm/ADT/SmallVector.h" 18 #include <string> 19 20 namespace llvm { 21 22 /// ManagedStringPool - The strings allocated from a managed string pool are 23 /// owned by the string pool and will be deleted together with the managed 24 /// string pool. 25 class ManagedStringPool { 26 SmallVector<std::string *, 8> Pool; 27 28 public: 29 ManagedStringPool() = default; 30 ~ManagedStringPool()31 ~ManagedStringPool() { 32 SmallVectorImpl<std::string *>::iterator Current = Pool.begin(); 33 while (Current != Pool.end()) { 34 delete *Current; 35 ++Current; 36 } 37 } 38 getManagedString(const char * S)39 std::string *getManagedString(const char *S) { 40 std::string *Str = new std::string(S); 41 Pool.push_back(Str); 42 return Str; 43 } 44 }; 45 46 } // end namespace llvm 47 48 #endif // LLVM_LIB_TARGET_NVPTX_MANAGEDSTRINGPOOL_H 49