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 20namespace 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. 25class ManagedStringPool { 26 SmallVector<std::string *, 8> Pool; 27 28public: 29 ManagedStringPool() = default; 30 31 ~ManagedStringPool() { 32 SmallVectorImpl<std::string *>::iterator Current = Pool.begin(); 33 while (Current != Pool.end()) { 34 delete *Current; 35 ++Current; 36 } 37 } 38 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