summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steven Moreland <smoreland@google.com> 2018-10-08 16:20:42 -0700
committer Steven Moreland <smoreland@google.com> 2018-10-09 18:51:50 +0000
commit0da9d5c7b7c55d2c5f9a82e714bcd67a83faea1c (patch)
treea331af17e586389b8fb816b02bfbee1dc5c1d941
parent2cb822feeb6827f2e5bd185bcc0072a271187acc (diff)
libbinder_ndk: cleaner API for making SpAIBinder
Both to make it easier to change the underlying API in the future and to make it look nicer. Bug: 112664205 Test: android.binder.cts Change-Id: I61ae78949055a4dde655dd54f5dad86ea354e6b4
-rw-r--r--libs/binder/ndk/include_ndk/android/binder_interface_utils.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/libs/binder/ndk/include_ndk/android/binder_interface_utils.h b/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
index a133d490a4..6782ce0c3a 100644
--- a/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
+++ b/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
@@ -56,6 +56,15 @@ public:
return std::static_pointer_cast<CHILD>(ref());
}
+ /**
+ * Convenience method for making an object directly with a reference.
+ */
+ template<class T, class... Args>
+ static std::shared_ptr<T> make(Args&&... args) {
+ T* t = new T(std::forward<Args>(args)...);
+ return t->template ref<T>();
+ }
+
private:
std::once_flag mFlagThis;
std::weak_ptr<SharedRefBase> mThis;