1*4d495c6eSApple OSS Distributions // 2*4d495c6eSApple OSS Distributions // Declare a function as returning a raw pointer (in the header), but 3*4d495c6eSApple OSS Distributions // implement it by returning a shared pointer. This represents a TU that 4*4d495c6eSApple OSS Distributions // would have been translated to shared pointers. 5*4d495c6eSApple OSS Distributions // 6*4d495c6eSApple OSS Distributions // In this TU, SharedPtr<T> is intrusive_shared_ptr<T>, since USE_SHARED_PTR 7*4d495c6eSApple OSS Distributions // is defined. 8*4d495c6eSApple OSS Distributions // 9*4d495c6eSApple OSS Distributions 10*4d495c6eSApple OSS Distributions #define USE_SHARED_PTR 11*4d495c6eSApple OSS Distributions 12*4d495c6eSApple OSS Distributions #include "abi_helper.h" 13*4d495c6eSApple OSS Distributions 14*4d495c6eSApple OSS Distributions SharedPtr<T> return_shared_as_raw(T * ptr)15*4d495c6eSApple OSS Distributionsreturn_shared_as_raw(T* ptr) 16*4d495c6eSApple OSS Distributions { 17*4d495c6eSApple OSS Distributions return SharedPtr<T>(ptr, libkern::no_retain); 18*4d495c6eSApple OSS Distributions } 19