Merge "libbinder_ndk: NDK comments for interface utils"
am: ea96f70b76

Change-Id: Ie3f671b2619bd2abea9f050f5688ca59ce6387a7
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 6782ce0..5a4196a 100644
--- a/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
+++ b/libs/binder/ndk/include_ndk/android/binder_interface_utils.h
@@ -37,12 +37,18 @@
 
 namespace ndk {
 
-// analog using std::shared_ptr for RefBase-like semantics
+/**
+ * analog using std::shared_ptr for internally held refcount
+ */
 class SharedRefBase {
 public:
     SharedRefBase() {}
     virtual ~SharedRefBase() {}
 
+    /**
+     * A shared_ptr must be held to this object when this is called. This must be called once during
+     * the lifetime of this object.
+     */
     std::shared_ptr<SharedRefBase> ref() {
         std::shared_ptr<SharedRefBase> thiz = mThis.lock();
 
@@ -51,6 +57,9 @@
         return thiz;
     }
 
+    /**
+     * Convenience method for a ref (see above) which automatically casts to the desired child type.
+     */
     template <typename CHILD>
     std::shared_ptr<CHILD> ref() {
         return std::static_pointer_cast<CHILD>(ref());
@@ -70,13 +79,17 @@
     std::weak_ptr<SharedRefBase> mThis;
 };
 
-// wrapper analog to IInterface
+/**
+ * wrapper analog to IInterface
+ */
 class ICInterface : public SharedRefBase {
 public:
     ICInterface() {}
     virtual ~ICInterface() {}
 
-    // This either returns the single existing implementation or creates a new implementation.
+    /**
+     * This either returns the single existing implementation or creates a new implementation.
+     */
     virtual SpAIBinder asBinder() = 0;
 
     /**
@@ -86,7 +99,9 @@
     virtual bool isRemote() = 0;
 };
 
-// wrapper analog to BnInterface
+/**
+ * implementation of IInterface for server (n = native)
+ */
 template <typename INTERFACE>
 class BnCInterface : public INTERFACE {
 public:
@@ -98,8 +113,10 @@
     bool isRemote() override { return true; }
 
 protected:
-    // This function should only be called by asBinder. Otherwise, there is a possibility of
-    // multiple AIBinder* objects being created for the same instance of an object.
+    /**
+     * This function should only be called by asBinder. Otherwise, there is a possibility of
+     * multiple AIBinder* objects being created for the same instance of an object.
+     */
     virtual SpAIBinder createBinder() = 0;
 
 private:
@@ -107,7 +124,9 @@
     ScopedAIBinder_Weak mWeakBinder;
 };
 
-// wrapper analog to BpInterfae
+/**
+ * implementation of IInterface for client (p = proxy)
+ */
 template <typename INTERFACE>
 class BpCInterface : public INTERFACE {
 public: