aboutsummaryrefslogtreecommitdiff
path: root/src/cxx.cc
diff options
context:
space:
mode:
authorDavid Tolnay <dtolnay@gmail.com>2020-12-28 18:02:25 -0800
committerDavid Tolnay <dtolnay@gmail.com>2020-12-28 18:09:55 -0800
commit7a48785a8ebb3fad0f4d13e7d2db3157e0c60762 (patch)
tree3b42995b67ace71b2ba496b698f35c3f5d237901 /src/cxx.cc
parent85b6bc4a39a68c5b064807e89f1933d898e0f5b6 (diff)
downloadcxx-7a48785a8ebb3fad0f4d13e7d2db3157e0c60762.tar.gz
Add upgrade conversion from WeakPtr to SharedPtr
Diffstat (limited to 'src/cxx.cc')
-rw-r--r--src/cxx.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cxx.cc b/src/cxx.cc
index 2e1cc15b..6b71656d 100644
--- a/src/cxx.cc
+++ b/src/cxx.cc
@@ -525,6 +525,11 @@ static_assert(sizeof(std::string) <= kMaxExpectedWordsInString * sizeof(void *),
std::weak_ptr<CXX_TYPE> *weak) noexcept { \
new (weak) std::weak_ptr<CXX_TYPE>(shared); \
} \
+ void cxxbridge1$std$weak_ptr$##RUST_TYPE##$upgrade( \
+ const std::weak_ptr<CXX_TYPE> &weak, \
+ std::shared_ptr<CXX_TYPE> *shared) noexcept { \
+ new (shared) std::shared_ptr<CXX_TYPE>(weak.lock()); \
+ } \
void cxxbridge1$std$weak_ptr$##RUST_TYPE##$drop( \
const std::weak_ptr<CXX_TYPE> *self) noexcept { \
self->~weak_ptr(); \