xref: /xnu-12377.61.12/tests/intrusive_shared_ptr_src/abi.callee.smart.cpp (revision 4d495c6e23c53686cf65f45067f79024cf5dcee8)
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 Distributions return_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