diff options
author | Ted Kremenek <kremenek@apple.com> | 2012-12-07 02:03:00 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2012-12-07 02:03:00 +0000 |
commit | b02ed5b8eafd11500bbefb7206ecbf5bc3fc324a (patch) | |
tree | 62290b60710d0e47f4bac46824497dfdea8c109b | |
parent | 4a0ed9f4c7d4bc088ed744945bdb6b024ac3eeff (diff) |
Add manualRetain() and manualRelease() to ImmutableMapRef, and add a new constructor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169572 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/ADT/ImmutableMap.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/llvm/ADT/ImmutableMap.h b/include/llvm/ADT/ImmutableMap.h index 4883c5ba0a..ce27d0536a 100644 --- a/include/llvm/ADT/ImmutableMap.h +++ b/include/llvm/ADT/ImmutableMap.h @@ -288,6 +288,13 @@ public: Factory(F) { if (Root) { Root->retain(); } } + + explicit ImmutableMapRef(const ImmutableMap<KeyT, ValT> &X, + typename ImmutableMap<KeyT, ValT>::Factory &F) + : Root(X.getRootWithoutRetain()), + Factory(F.getTreeFactory()) { + if (Root) { Root->retain(); } + } ImmutableMapRef(const ImmutableMapRef &X) : Root(X.Root), @@ -318,6 +325,14 @@ public: return ImmutableMapRef(0, F); } + void manualRetain() { + if (Root) Root->retain(); + } + + void manualRelease() { + if (Root) Root->release(); + } + ImmutableMapRef add(key_type_ref K, data_type_ref D) { TreeTy *NewT = Factory->add(Root, std::pair<key_type, data_type>(K, D)); return ImmutableMapRef(NewT, Factory); |