namespace axl::rc
namespace rc {
// typedefs
typedef void FreeFunc(void *p);
typedef RtFactory<mem::StdAllocator> RtFactory;
// enums
enum BufHdrFlag;
enum BufKind;
enum RefCountFlag;
// structs
struct BufHdr;
struct NullPtr;
struct RefCountAllocHdr;
// classes
template <typename T>
class Box;
template <
typename T,
typename SizeOf = sl::SizeOf<T>,
typename Ref = BufRef<T, SizeOf>
>
class Buf;
template <
typename T,
typename SizeOf = sl::SizeOf<T>
>
class BufRef;
template <
typename T,
size_t extra = 0
>
class Child;
template <typename T>
class Ptr;
class RefCount;
template <typename T>
class RefCountAllocBuffer;
template <typename T>
class Release;
template <typename Alloc = mem::StdAllocator>
class RtFactory;
template <typename T>
class WeakPtr;
template <typename T>
class WeakRelease;
// global variables
AXL_SELECT_ANY struct axl::rc::NullPtr g_nullPtr;
// global functions
void*
postAllocateRefCount(
void* p,
FreeFunc* freeFunc = &mem::StdAllocator::free
);
template <typename T>
T*
primeAllocatedRefCount(T* p);
template <typename T>
T*
primeInPlaceRefCount(
T* p,
RefCount* parent,
uint_t flags
);
} // namespace rc