Cosmetic rename SwigMovePointer -> SwigSmartPointer
This smart pointer doesn't really offer move semantics as is commonly understood in C++11, so rename accordingly.
This commit is contained in:
parent
088dc6e870
commit
4dd285fad7
1 changed files with 8 additions and 8 deletions
16
Lib/swig.swg
16
Lib/swig.swg
|
|
@ -653,8 +653,8 @@ namespace std {
|
||||||
* arg1 = Vector(1,2,3); // Assignment from a value
|
* arg1 = Vector(1,2,3); // Assignment from a value
|
||||||
*
|
*
|
||||||
* The class offers a strong guarantee of exception safety.
|
* The class offers a strong guarantee of exception safety.
|
||||||
* With regards to the implementation, the private SwigMovePointer nested class is
|
* With regards to the implementation, the private SwigSmartPointer nested class is
|
||||||
* a simple smart pointer with move semantics, much like std::auto_ptr.
|
* a simple smart pointer providing exception safety, much like std::auto_ptr.
|
||||||
*
|
*
|
||||||
* This wrapping technique was suggested by William Fulton and is henceforth
|
* This wrapping technique was suggested by William Fulton and is henceforth
|
||||||
* known as the "Fulton Transform" :-).
|
* known as the "Fulton Transform" :-).
|
||||||
|
|
@ -666,19 +666,19 @@ namespace std {
|
||||||
#include <utility>
|
#include <utility>
|
||||||
/* SwigValueWrapper is described in swig.swg */
|
/* SwigValueWrapper is described in swig.swg */
|
||||||
template<typename T> class SwigValueWrapper {
|
template<typename T> class SwigValueWrapper {
|
||||||
struct SwigMovePointer {
|
struct SwigSmartPointer {
|
||||||
T *ptr;
|
T *ptr;
|
||||||
SwigMovePointer(T *p) : ptr(p) { }
|
SwigSmartPointer(T *p) : ptr(p) { }
|
||||||
~SwigMovePointer() { delete ptr; }
|
~SwigSmartPointer() { delete ptr; }
|
||||||
SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
|
SwigSmartPointer& operator=(SwigSmartPointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
|
||||||
} pointer;
|
} pointer;
|
||||||
SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
|
SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
|
||||||
SwigValueWrapper(const SwigValueWrapper<T>& rhs);
|
SwigValueWrapper(const SwigValueWrapper<T>& rhs);
|
||||||
public:
|
public:
|
||||||
SwigValueWrapper() : pointer(0) { }
|
SwigValueWrapper() : pointer(0) { }
|
||||||
SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; }
|
SwigValueWrapper& operator=(const T& t) { SwigSmartPointer tmp(new T(t)); pointer = tmp; return *this; }
|
||||||
#if __cplusplus >= 201103L
|
#if __cplusplus >= 201103L
|
||||||
SwigValueWrapper& operator=(T&& t) { SwigMovePointer tmp(new T(std::move(t))); pointer = tmp; return *this; }
|
SwigValueWrapper& operator=(T&& t) { SwigSmartPointer tmp(new T(std::move(t))); pointer = tmp; return *this; }
|
||||||
#endif
|
#endif
|
||||||
operator T&() const { return *pointer.ptr; }
|
operator T&() const { return *pointer.ptr; }
|
||||||
T *operator&() { return pointer.ptr; }
|
T *operator&() { return pointer.ptr; }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue