Remove unused ThreadSafePointerTo class

It seems that this was created when regular PointerTo was not yet atomic, and never used or updated.
This commit is contained in:
rdb 2019-03-17 20:26:59 +01:00
parent 662f28813a
commit 9e1b40bbb7
8 changed files with 0 additions and 543 deletions

View File

@ -2147,7 +2147,6 @@
<File RelativePath="..\panda\src\express\test_types.cxx"></File>
<File RelativePath="..\panda\src\express\weakPointerTo.I"></File>
<File RelativePath="..\panda\src\express\pta_int.cxx"></File>
<File RelativePath="..\panda\src\express\threadSafePointerToBase.I"></File>
<File RelativePath="..\panda\src\express\namable.I"></File>
<File RelativePath="..\panda\src\express\vector_float.cxx"></File>
<File RelativePath="..\panda\src\express\pointerTo.h"></File>
@ -2174,7 +2173,6 @@
<File RelativePath="..\panda\src\express\datagramGenerator.h"></File>
<File RelativePath="..\panda\src\express\weakPointerToVoid.h"></File>
<File RelativePath="..\panda\src\express\datagram.I"></File>
<File RelativePath="..\panda\src\express\threadSafePointerTo.h"></File>
<File RelativePath="..\panda\src\express\weakPointerCallback.h"></File>
<File RelativePath="..\panda\src\express\datagram.h"></File>
<File RelativePath="..\panda\src\express\textEncoder.h"></File>
@ -2215,7 +2213,6 @@
<File RelativePath="..\panda\src\express\datagramIterator.I"></File>
<File RelativePath="..\panda\src\express\vector_uchar.h"></File>
<File RelativePath="..\panda\src\express\datagramIterator.h"></File>
<File RelativePath="..\panda\src\express\threadSafePointerTo.cxx"></File>
<File RelativePath="..\panda\src\express\datagramGenerator.cxx"></File>
<File RelativePath="..\panda\src\express\hashGeneratorBase.h"></File>
<File RelativePath="..\panda\src\express\patchfile.cxx"></File>
@ -2259,7 +2256,6 @@
<File RelativePath="..\panda\src\express\namable.cxx"></File>
<File RelativePath="..\panda\src\express\trueClock.I"></File>
<File RelativePath="..\panda\src\express\config_express.cxx"></File>
<File RelativePath="..\panda\src\express\threadSafePointerToBase.cxx"></File>
<File RelativePath="..\panda\src\express\pointerToVoid.I"></File>
<File RelativePath="..\panda\src\express\vector_uchar.cxx"></File>
<File RelativePath="..\panda\src\express\vector_float.h"></File>
@ -2286,7 +2282,6 @@
<File RelativePath="..\panda\src\express\datagramGenerator.I"></File>
<File RelativePath="..\panda\src\express\compress_string.cxx"></File>
<File RelativePath="..\panda\src\express\subStreamBuf.cxx"></File>
<File RelativePath="..\panda\src\express\threadSafePointerToBase.h"></File>
<File RelativePath="..\panda\src\express\pointerToArrayBase.cxx"></File>
<File RelativePath="..\panda\src\express\express_composite.cxx"></File>
<File RelativePath="..\panda\src\express\virtualFileComposite.I"></File>
@ -2294,7 +2289,6 @@
<File RelativePath="..\panda\src\express\multifile.I"></File>
<File RelativePath="..\panda\src\express\virtualFile.I"></File>
<File RelativePath="..\panda\src\express\patchfile.I"></File>
<File RelativePath="..\panda\src\express\threadSafePointerTo.I"></File>
<File RelativePath="..\panda\src\express\virtualFileList.h"></File>
</Filter>
<Filter Name="iphonedisplay">

View File

@ -8,8 +8,6 @@
#include "subStream.cxx"
#include "subStreamBuf.cxx"
#include "temporaryFile.cxx"
#include "threadSafePointerTo.cxx"
#include "threadSafePointerToBase.cxx"
#include "trueClock.cxx"
#include "typedReferenceCount.cxx"
#include "virtualFile.cxx"

View File

@ -1,207 +0,0 @@
/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file threadSafePointerTo.I
* @author drose
* @date 2006-04-28
*/
/**
*
*/
template<class T>
INLINE ThreadSafePointerTo<T>::
ThreadSafePointerTo(To *ptr) : ThreadSafePointerToBase<T>(ptr) {
}
/**
*
*/
template<class T>
INLINE ThreadSafePointerTo<T>::
ThreadSafePointerTo(const ThreadSafePointerTo<T> &copy) :
ThreadSafePointerToBase<T>((const ThreadSafePointerToBase<T> &)copy)
{
}
/**
*
*/
template<class T>
INLINE ThreadSafePointerTo<T>::
~ThreadSafePointerTo() {
}
/**
*
*/
template<class T>
INLINE typename ThreadSafePointerTo<T>::To &ThreadSafePointerTo<T>::
operator *() const {
return *((To *)AtomicAdjust::get_ptr(this->_void_ptr));
}
/**
*
*/
template<class T>
INLINE typename ThreadSafePointerTo<T>::To *ThreadSafePointerTo<T>::
operator -> () const {
return (To *)AtomicAdjust::get_ptr(this->_void_ptr);
}
/**
* We also have the typecast operator to automatically convert
* ThreadSafePointerTo's to the required kind of actual pointer. This
* introduces ambiguities which the compiler will resolve one way or the
* other, but we don't care which way it goes because either will be correct.
*/
template<class T>
INLINE ThreadSafePointerTo<T>::
operator T * () const {
return (To *)AtomicAdjust::get_ptr(this->_void_ptr);
}
/**
* Returns an ordinary pointer instead of a ThreadSafePointerTo. Useful to
* work around compiler problems, particularly for implicit upcasts.
*/
template<class T>
INLINE typename ThreadSafePointerTo<T>::To *ThreadSafePointerTo<T>::
p() const {
return (To *)AtomicAdjust::get_ptr(this->_void_ptr);
}
/**
*
*/
template<class T>
INLINE ThreadSafePointerTo<T> &ThreadSafePointerTo<T>::
operator = (To *ptr) {
this->reassign(ptr);
return *this;
}
/**
*
*/
template<class T>
INLINE ThreadSafePointerTo<T> &ThreadSafePointerTo<T>::
operator = (const ThreadSafePointerTo<T> &copy) {
this->reassign((const ThreadSafePointerToBase<T> &)copy);
return *this;
}
/**
*
*/
template<class T>
INLINE ThreadSafeConstPointerTo<T>::
ThreadSafeConstPointerTo(const typename ThreadSafeConstPointerTo<T>::To *ptr) :
ThreadSafePointerToBase<T>((typename ThreadSafeConstPointerTo<T>::To *)ptr)
{
}
/**
*
*/
template<class T>
INLINE ThreadSafeConstPointerTo<T>::
ThreadSafeConstPointerTo(const ThreadSafePointerTo<T> &copy) :
ThreadSafePointerToBase<T>((const ThreadSafePointerToBase<T> &)copy)
{
}
/**
*
*/
template<class T>
INLINE ThreadSafeConstPointerTo<T>::
~ThreadSafeConstPointerTo() {
}
/**
*
*/
template<class T>
INLINE ThreadSafeConstPointerTo<T>::
ThreadSafeConstPointerTo(const ThreadSafeConstPointerTo<T> &copy) :
ThreadSafePointerToBase<T>((const ThreadSafePointerToBase<T> &)copy)
{
}
/**
*
*/
template<class T>
INLINE const typename ThreadSafeConstPointerTo<T>::To &ThreadSafeConstPointerTo<T>::
operator *() const {
return *((To *)AtomicAdjust::get_ptr(this->_void_ptr));
}
/**
*
*/
template<class T>
INLINE const typename ThreadSafeConstPointerTo<T>::To *ThreadSafeConstPointerTo<T>::
operator -> () const {
return (To *)AtomicAdjust::get_ptr(this->_void_ptr);
}
/**
* We also have the typecast operator to automatically convert
* ThreadSafeConstPointerTo's to the required kind of actual pointer. This
* introduces ambiguities which the compiler will resolve one way or the
* other, but we don't care which way it goes because either will be correct.
*/
template<class T>
INLINE ThreadSafeConstPointerTo<T>::
operator const T * () const {
return (To *)AtomicAdjust::get_ptr(this->_void_ptr);
}
/**
* Returns an ordinary pointer instead of a ThreadSafeConstPointerTo. Useful
* to work around compiler problems, particularly for implicit upcasts.
*/
template<class T>
INLINE const typename ThreadSafeConstPointerTo<T>::To *ThreadSafeConstPointerTo<T>::
p() const {
return (To *)AtomicAdjust::get_ptr(this->_void_ptr);
}
/**
*
*/
template<class T>
INLINE ThreadSafeConstPointerTo<T> &ThreadSafeConstPointerTo<T>::
operator = (const To *ptr) {
this->reassign((To *)ptr);
return *this;
}
/**
*
*/
template<class T>
INLINE ThreadSafeConstPointerTo<T> &ThreadSafeConstPointerTo<T>::
operator = (const ThreadSafePointerTo<T> &copy) {
this->reassign((const ThreadSafePointerToBase<T> &)copy);
return *this;
}
/**
*
*/
template<class T>
INLINE ThreadSafeConstPointerTo<T> &ThreadSafeConstPointerTo<T>::
operator = (const ThreadSafeConstPointerTo<T> &copy) {
this->reassign((const ThreadSafePointerToBase<T> &)copy);
return *this;
}

View File

@ -1,14 +0,0 @@
/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file threadSafePointerTo.cxx
* @author drose
* @date 2006-04-28
*/
#include "threadSafePointerTo.h"

View File

@ -1,105 +0,0 @@
/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file threadSafePointerTo.h
* @author drose
* @date 2006-04-28
*/
#ifndef THREADSAFEPOINTERTO_H
#define THREADSAFEPOINTERTO_H
#include "pandabase.h"
#include "threadSafePointerToBase.h"
/**
* This works exactly like PointerTo, except that the object is designed to be
* thread-safe: it is generally safe to make unprotected assignments to this
* pointer, in the sense that the last assignment will win and the reference
* counts will be properly maintained.
*/
template <class T>
class ThreadSafePointerTo : public ThreadSafePointerToBase<T> {
public:
typedef typename ThreadSafePointerToBase<T>::To To;
PUBLISHED:
INLINE ThreadSafePointerTo(To *ptr = nullptr);
INLINE ThreadSafePointerTo(const ThreadSafePointerTo<T> &copy);
INLINE ~ThreadSafePointerTo();
public:
INLINE To &operator *() const;
INLINE To *operator -> () const;
// MSVC.NET 2005 insists that we use T *, and not To *, here.
INLINE operator T *() const;
PUBLISHED:
// When downcasting to a derived class from a
// ThreadSafePointerTo<BaseClass>, C++ would normally require you to cast
// twice: once to an actual BaseClass pointer, and then again to your
// desired pointer. You can use the handy function p() to avoid this first
// cast and make your code look a bit cleaner.
// e.g. instead of (MyType *)(BaseClass *)ptr, use (MyType *)ptr.p()
// If your base class is a derivative of TypedObject, you might want to use
// the DCAST macro defined in typedObject.h instead, e.g. DCAST(MyType,
// ptr). This provides a clean downcast that doesn't require .p() or any
// double-casting, and it can be run-time checked for correctness.
INLINE To *p() const;
INLINE ThreadSafePointerTo<T> &operator = (To *ptr);
INLINE ThreadSafePointerTo<T> &operator = (const ThreadSafePointerTo<T> &copy);
// These functions normally wouldn't need to be redefined here, but we do so
// anyway just to help out interrogate (which doesn't seem to want to
// automatically export the ThreadSafePointerToBase class). When this works
// again in interrogate, we can remove these.
INLINE bool is_null() const { return ThreadSafePointerToBase<T>::is_null(); }
INLINE void clear() { ThreadSafePointerToBase<T>::clear(); }
};
/**
*
*/
template <class T>
class ThreadSafeConstPointerTo : public ThreadSafePointerToBase<T> {
public:
typedef typename ThreadSafePointerToBase<T>::To To;
PUBLISHED:
INLINE ThreadSafeConstPointerTo(const To *ptr = nullptr);
INLINE ThreadSafeConstPointerTo(const ThreadSafePointerTo<T> &copy);
INLINE ThreadSafeConstPointerTo(const ThreadSafeConstPointerTo<T> &copy);
INLINE ~ThreadSafeConstPointerTo();
public:
INLINE const To &operator *() const;
INLINE const To *operator -> () const;
INLINE operator const T *() const;
PUBLISHED:
INLINE const To *p() const;
INLINE ThreadSafeConstPointerTo<T> &operator = (const To *ptr);
INLINE ThreadSafeConstPointerTo<T> &operator = (const ThreadSafePointerTo<T> &copy);
INLINE ThreadSafeConstPointerTo<T> &operator = (const ThreadSafeConstPointerTo<T> &copy);
// This functions normally wouldn't need to be redefined here, but we do so
// anyway just to help out interrogate (which doesn't seem to want to
// automatically export the ThreadSafePointerToBase class). When this works
// again in interrogate, we can remove this.
INLINE void clear() { ThreadSafePointerToBase<T>::clear(); }
};
#define TSPT(type) ThreadSafePointerTo< type >
#define TSCPT(type) ThreadSafeConstPointerTo< type >
#include "threadSafePointerTo.I"
#endif

View File

@ -1,132 +0,0 @@
/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file threadSafePointerToBase.I
* @author drose
* @date 2006-04-28
*/
/**
*
*/
template<class T>
INLINE ThreadSafePointerToBase<T>::
ThreadSafePointerToBase(To *ptr) {
reassign(ptr);
}
/**
*
*/
template<class T>
INLINE ThreadSafePointerToBase<T>::
ThreadSafePointerToBase(const ThreadSafePointerToBase<T> &copy) {
reassign(copy);
}
/**
*
*/
template<class T>
INLINE ThreadSafePointerToBase<T>::
~ThreadSafePointerToBase() {
reassign(nullptr);
}
/**
* This is the main work of the ThreadSafePointerTo family. When the pointer
* is reassigned, decrement the old reference count and increment the new one.
*/
template<class T>
INLINE void ThreadSafePointerToBase<T>::
reassign(To *ptr) {
To *old_ptr = (To *)AtomicAdjust::get_ptr(_void_ptr);
if (ptr == old_ptr) {
return;
}
#ifdef HAVE_THREADS
void *orig_ptr = AtomicAdjust::compare_and_exchange_ptr(_void_ptr, old_ptr, ptr);
while (orig_ptr != old_ptr) {
// Some other thread assigned it first. Try again.
old_ptr = (To *)AtomicAdjust::get_ptr(_void_ptr);
if (ptr == old_ptr) {
return;
}
orig_ptr = AtomicAdjust::compare_and_exchange_ptr(_void_ptr, old_ptr, ptr);
}
#else // HAVE_THREADS
_void_ptr = ptr;
#endif // HAVE_THREADS
if (ptr != nullptr) {
ptr->ref();
#ifdef DO_MEMORY_USAGE
if (MemoryUsage::get_track_memory_usage()) {
update_type(ptr);
}
#endif
}
// Now delete the old pointer.
if (old_ptr != nullptr) {
unref_delete(old_ptr);
}
}
/**
*
*/
template<class T>
INLINE void ThreadSafePointerToBase<T>::
reassign(const ThreadSafePointerToBase<To> &copy) {
reassign((To *)copy._void_ptr);
}
/**
* Ensures that the MemoryUsage record for the pointer has the right type of
* object, if we know the type ourselves.
*/
template<class T>
void ThreadSafePointerToBase<T>::
update_type(To *ptr) {
#ifdef DO_MEMORY_USAGE
TypeHandle type = get_type_handle(To);
if (type == TypeHandle::none()) {
do_init_type(To);
type = get_type_handle(To);
}
if (type != TypeHandle::none()) {
MemoryUsage::update_type(ptr, type);
}
#endif // DO_MEMORY_USAGE
}
/**
* A convenient way to set the ThreadSafePointerTo object to NULL. (Assignment
* to a NULL pointer also works, of course.)
*/
template<class T>
INLINE void ThreadSafePointerToBase<T>::
clear() {
reassign(nullptr);
}
/**
* A handy function to output ThreadSafePointerTo's as a hex pointer followed
* by a reference count.
*/
template<class T>
INLINE void ThreadSafePointerToBase<T>::
output(std::ostream &out) const {
out << _void_ptr;
if (_void_ptr != nullptr) {
out << ":" << ((To *)_void_ptr)->get_ref_count();
}
}

View File

@ -1,14 +0,0 @@
/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file threadSafePointerToBase.cxx
* @author drose
* @date 2006-04-28
*/
#include "threadSafePointerToBase.h"

View File

@ -1,63 +0,0 @@
/**
* PANDA 3D SOFTWARE
* Copyright (c) Carnegie Mellon University. All rights reserved.
*
* All use of this software is subject to the terms of the revised BSD
* license. You should have received a copy of this license along
* with this source code in a file named "LICENSE."
*
* @file threadSafePointerToBase.h
* @author drose
* @date 2006-04-28
*/
#ifndef THREADSAFEPOINTERTOBASE_H
#define THREADSAFEPOINTERTOBASE_H
#include "pandabase.h"
#include "pointerToVoid.h"
#include "referenceCount.h"
#include "typedef.h"
#include "memoryUsage.h"
#include "config_express.h"
#include "atomicAdjust.h"
/**
* This is the base class for ThreadSafePointerTo and
* ThreadSafeConstPointerTo. Don't try to use it directly; use either derived
* class instead.
*/
template <class T>
class ThreadSafePointerToBase : public PointerToVoid {
public:
typedef T To;
protected:
INLINE ThreadSafePointerToBase(To *ptr);
INLINE ThreadSafePointerToBase(const ThreadSafePointerToBase<T> &copy);
INLINE ~ThreadSafePointerToBase();
INLINE void reassign(To *ptr);
INLINE void reassign(const ThreadSafePointerToBase<To> &copy);
void update_type(To *ptr);
// No assignment or retrieval functions are declared in
// ThreadSafePointerToBase, because we will have to specialize on const vs.
// non-const later.
PUBLISHED:
INLINE void clear();
void output(std::ostream &out) const;
};
template<class T>
INLINE std::ostream &operator <<(std::ostream &out, const ThreadSafePointerToBase<T> &pointer) {
pointer.output(out);
return out;
}
#include "threadSafePointerToBase.I"
#endif