ptr.pxd 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. cdef extern from "<util/generic/ptr.h>" nogil:
  2. cdef cppclass THolder[T]:
  3. THolder(...)
  4. T* Get()
  5. void Destroy()
  6. T* Release()
  7. void Reset()
  8. void Reset(T*)
  9. void Swap(THolder[T])
  10. cdef THolder[T] MakeHolder[T](...)
  11. cdef cppclass TIntrusivePtr[T]:
  12. TIntrusivePtr()
  13. TIntrusivePtr(T*)
  14. TIntrusivePtr& operator=(...)
  15. void Reset(T*)
  16. T* Get()
  17. T* Release()
  18. void Drop()
  19. cdef cppclass TIntrusiveConstPtr[T]:
  20. TIntrusiveConstPtr()
  21. TIntrusiveConstPtr(T*)
  22. TIntrusiveConstPtr& operator=(...)
  23. void Reset(T*)
  24. const T* Get()
  25. void Drop()
  26. cdef cppclass TAtomicSharedPtr[T]:
  27. TAtomicSharedPtr()
  28. TAtomicSharedPtr(T*)
  29. T& operator*()
  30. T* Get()
  31. void Reset(T*) # this is a fake signature as a workaround for Cython's inability to support implicit conversion T* -> TAtomicSharedPtr[T]
  32. void Reset(TAtomicSharedPtr) noexcept
  33. cdef TAtomicSharedPtr[T] MakeAtomicShared[T](...)