7#ifndef FLUTTER_FML_MEMORY_REF_PTR_H_
8#define FLUTTER_FML_MEMORY_REF_PTR_H_
103 template <
typename U>
117 T*
get()
const {
return ptr_; }
132 if (r.ptr_ == ptr_) {
147 template <
typename U>
149 if (
reinterpret_cast<T*
>(r.ptr_) == ptr_) {
173 template <
typename U>
191 explicit operator bool()
const {
return !!ptr_; }
193 template <
typename U>
195 return ptr_ == rhs.ptr_;
198 template <
typename U>
203 template <
typename U>
205 return ptr_ < rhs.ptr_;
209 template <
typename U>
214 enum AdoptTag { kAdopt };
252template <
typename T,
typename... Args>
255 std::forward<Args>(
args)...);
263struct hash<
fml::RefPtr<T>> {
265 using result_type = std::size_t;
267 result_type operator()(
const argument_type& ptr)
const {
268 return std::hash<T*>()(ptr.get());
bool operator!=(const RefPtr< U > &rhs) const
RefPtr< T > & operator=(RefPtr< T > &&r)
RefPtr< T > & operator=(const RefPtr< T > &r)
bool operator<(const RefPtr< U > &rhs) const
RefPtr(const RefPtr< U > &r)
RefPtr(const RefPtr< T > &r)
void swap(RefPtr< T > &r)
bool operator==(const RefPtr< U > &rhs) const
RefPtr< T > & operator=(RefPtr< U > &&r)
RefPtr< T > & operator=(const RefPtr< U > &r)
RefPtr< T > Clone() const
static RefPtr< T > MakeRefCounted(Args &&... args)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
#define FML_DCHECK(condition)
RefPtr< T > MakeRefCounted(Args &&... args)
RefPtr< T > AdoptRef(T *ptr)