Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

base::xorptr_t< T > Class Template Reference

xorptr_t encapsulate "safely" the concept of swapping between 2 pointers with a xor operation. More...

#include <xorptr.h>

List of all members.

Public Member Functions

 xorptr_t (T *ptr1, T *ptr2)
 Constructor: supperpose internal values ptr1 and ptr2.
T * swap (T *fromPtr) const
 Swap pointer (between ptr1 and ptr2 used originally).

Private Attributes

uintptr_t ptr1xor2
 supperposition of 2 pointers


Detailed Description

template<class T>
class base::xorptr_t< T >

xorptr_t encapsulate "safely" the concept of swapping between 2 pointers with a xor operation.

Xor between a pointer and an int: sounds scary but it is a very efficient way to swap 2 pointers:

The original idea of supperposing 2 states into one (here 2 pointers) in such a way that you get information on one state only by observing the other state comes from quantum mechanics.


Constructor & Destructor Documentation

template<class T>
base::xorptr_t< T >::xorptr_t T *  ptr1,
T *  ptr2
[inline]
 

Constructor: supperpose internal values ptr1 and ptr2.

Parameters:
ptr1,ptr2,: pointers to swap between.


Member Function Documentation

template<class T>
T* base::xorptr_t< T >::swap T *  fromPtr  )  const [inline]
 

Swap pointer (between ptr1 and ptr2 used originally).

Returns:
ptr1 if fromPtr == ptr2 or ptr2 if fromPtr == ptr1
Precondition:
fromPtr == ptr1 or ptr2


Member Data Documentation

template<class T>
uintptr_t base::xorptr_t< T >::ptr1xor2 [private]
 

supperposition of 2 pointers


The documentation for this class was generated from the following file:
Generated on Fri Jun 30 00:02:31 2006 for Module base by  doxygen 1.4.2