14#ifndef COPYONWRITEPOINTER_H
15#define COPYONWRITEPOINTER_H
31class EXPCL_PANDA_PUTIL CopyOnWritePointer {
34 INLINE CopyOnWritePointer(
const CopyOnWritePointer ©);
35 INLINE CopyOnWritePointer(CopyOnWritePointer &&from)
noexcept;
37 INLINE ~CopyOnWritePointer();
39 INLINE
void operator = (
const CopyOnWritePointer ©);
40 INLINE
void operator = (CopyOnWritePointer &&from)
noexcept;
44 INLINE
bool operator == (
const CopyOnWritePointer &other)
const;
45 INLINE
bool operator != (
const CopyOnWritePointer &other)
const;
46 INLINE
bool operator < (
const CopyOnWritePointer &other)
const;
74class CopyOnWritePointerTo :
public CopyOnWritePointer {
81 INLINE CopyOnWritePointerTo(To *
object =
nullptr);
82 INLINE CopyOnWritePointerTo(
const CopyOnWritePointerTo<T> ©);
83 INLINE CopyOnWritePointerTo(CopyOnWritePointerTo &&from)
noexcept;
84 INLINE CopyOnWritePointerTo(
PointerTo<T> &&from)
noexcept;
86 INLINE
void operator = (
const CopyOnWritePointerTo<T> ©);
87 INLINE
void operator = (To *
object);
88 INLINE
void operator = (CopyOnWritePointerTo &&from)
noexcept;
103#define COWPT(type) CopyOnWritePointerTo< type >
This base class provides basic reference counting, but also can be used with a CopyOnWritePointer to ...
To * get_unsafe_pointer()
See CopyOnWritePointer::get_unsafe_pointer().
To * get_write_pointer()
See CopyOnWritePointer::get_write_pointer().
const To * get_read_pointer(Thread *current_thread=Thread::get_current_thread()) const
See CopyOnWritePointer::get_read_pointer().
bool is_null() const
Returns true if the CopyOnWritePointer contains a NULL pointer, false otherwise.
const CopyOnWriteObject * get_read_pointer(Thread *current_thread) const
Returns a pointer locked for read.
bool test_ref_count_integrity() const
Does some easy checks to make sure that the reference count isn't completely bogus.
CopyOnWriteObject * get_unsafe_pointer()
Returns an unlocked pointer that you can write to.
bool test_ref_count_nonzero() const
Does some easy checks to make sure that the reference count isn't zero, or completely bogus.
CopyOnWriteObject * get_write_pointer()
Returns a pointer locked for write.
void clear()
Sets the pointer to NULL.
This file defines the classes PointerTo and ConstPointerTo (and their abbreviations,...
A thread; that is, a lightweight process.
get_current_thread
Returns a pointer to the currently-executing Thread object.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.