LLVM  8.0.1
ManagedStringPool.h
Go to the documentation of this file.
1 //===-- 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 
15 #ifndef LLVM_LIB_TARGET_NVPTX_MANAGEDSTRINGPOOL_H
16 #define LLVM_LIB_TARGET_NVPTX_MANAGEDSTRINGPOOL_H
17 
18 #include "llvm/ADT/SmallVector.h"
19 #include <string>
20 
21 namespace 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.
28 
29 public:
30  ManagedStringPool() = default;
31 
34  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 
47 } // end namespace llvm
48 
49 #endif // LLVM_LIB_TARGET_NVPTX_MANAGEDSTRINGPOOL_H
This class represents lattice values for constants.
Definition: AllocatorList.h:24
void push_back(const T &Elt)
Definition: SmallVector.h:218
ManagedStringPool - The strings allocated from a managed string pool are owned by the string pool and...
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
Definition: APFloat.h:42
LLVM_ATTRIBUTE_ALWAYS_INLINE iterator begin()
Definition: SmallVector.h:129
std::string * getManagedString(const char *S)
LLVM_ATTRIBUTE_ALWAYS_INLINE iterator end()
Definition: SmallVector.h:133