1#ifndef ANDROID_PDX_RPC_POINTER_WRAPPER_H_ 2#define ANDROID_PDX_RPC_POINTER_WRAPPER_H_ 3 4namespace android { 5namespace pdx { 6namespace rpc { 7 8// Wrapper class for pointers to any serializable type. This class is used by 9// serialization/deserialization to handle pointers to objects that are to be 10// serialized or deserialized. 11template <typename T> 12class PointerWrapper { 13 public: 14 using BaseType = T; 15 16 PointerWrapper(T* pointer) : pointer_(pointer) {} 17 PointerWrapper(const PointerWrapper&) = default; 18 PointerWrapper(PointerWrapper&&) = default; 19 PointerWrapper& operator=(const PointerWrapper&) = default; 20 PointerWrapper& operator=(PointerWrapper&&) = default; 21 22 T& Dereference() { return *pointer_; } 23 const T& Dereference() const { return *pointer_; } 24 25 private: 26 T* pointer_; 27}; 28 29template <typename T> 30PointerWrapper<T> WrapPointer(T* pointer) { 31 return PointerWrapper<T>(pointer); 32} 33 34} // namespace rpc 35} // namespace pdx 36} // namespace android 37 38#endif // ANDROID_PDX_RPC_POINTER_WRAPPER_H_ 39