blob: 7fc0156216f5b43526bd047895a0b157dcbe804c [file] [log] [blame]
Justin Holewinskiae556d32012-05-04 20:18:50 +00001//===-- ManagedStringPool.h - Managed String Pool ---------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// The strings allocated from a managed string pool are owned by the string
11// pool and will be deleted together with the managed string pool.
12//
13//===----------------------------------------------------------------------===//
14
Benjamin Kramera7c40ef2014-08-13 16:26:38 +000015#ifndef LLVM_LIB_TARGET_NVPTX_MANAGEDSTRINGPOOL_H
16#define LLVM_LIB_TARGET_NVPTX_MANAGEDSTRINGPOOL_H
Justin Holewinskiae556d32012-05-04 20:18:50 +000017
18#include "llvm/ADT/SmallVector.h"
19#include <string>
20
21namespace llvm {
22
23/// ManagedStringPool - The strings allocated from a managed string pool are
24/// owned by the string pool and will be deleted together with the managed
25/// string pool.
26class ManagedStringPool {
27 SmallVector<std::string *, 8> Pool;
28
29public:
Eugene Zelenkoc9f1f6b2017-01-09 22:16:51 +000030 ManagedStringPool() = default;
31
Justin Holewinskiae556d32012-05-04 20:18:50 +000032 ~ManagedStringPool() {
Craig Topperaf0dea12013-07-04 01:31:24 +000033 SmallVectorImpl<std::string *>::iterator Current = Pool.begin();
Justin Holewinskiae556d32012-05-04 20:18:50 +000034 while (Current != Pool.end()) {
35 delete *Current;
36 Current++;
37 }
38 }
39
40 std::string *getManagedString(const char *S) {
41 std::string *Str = new std::string(S);
42 Pool.push_back(Str);
43 return Str;
44 }
45};
46
Eugene Zelenkoc9f1f6b2017-01-09 22:16:51 +000047} // end namespace llvm
Justin Holewinskiae556d32012-05-04 20:18:50 +000048
Eugene Zelenkoc9f1f6b2017-01-09 22:16:51 +000049#endif // LLVM_LIB_TARGET_NVPTX_MANAGEDSTRINGPOOL_H