]>
git.saurik.com Git - apt.git/blob - apt-pkg/contrib/sptr.h
1 // -*- mode: cpp; mode: fold -*-
3 // $Id: sptr.h,v 1.3 2001/03/11 07:22:19 jgg Exp $
4 /* ######################################################################
6 Trivial non-ref counted 'smart pointer'
8 This is really only good to eliminate
14 Blocks from functions.
16 I think G++ has become good enough that doing this won't have much
17 code size implications.
19 ##################################################################### */
21 #ifndef SMART_POINTER_H
22 #define SMART_POINTER_H
23 #include <apt-pkg/macros.h>
26 class APT_DEPRECATED_MSG("use std::unique_ptr instead") SPtr
31 inline T
*operator ->() {return Ptr
;};
32 inline T
&operator *() {return *Ptr
;};
33 inline operator T
*() {return Ptr
;};
34 inline operator void *() {return Ptr
;};
35 inline T
*UnGuard() {T
*Tmp
= Ptr
; Ptr
= 0; return Tmp
;};
36 inline void operator =(T
*N
) {Ptr
= N
;};
37 inline bool operator ==(T
*lhs
) const {return Ptr
== lhs
;};
38 inline bool operator !=(T
*lhs
) const {return Ptr
!= lhs
;};
39 inline T
*Get() {return Ptr
;};
41 inline SPtr(T
*Ptr
) : Ptr(Ptr
) {};
42 inline SPtr() : Ptr(0) {};
43 inline ~SPtr() {delete Ptr
;};
47 class APT_DEPRECATED_MSG("use std::unique_ptr instead") SPtrArray
52 //inline T &operator *() {return *Ptr;};
53 inline operator T
*() {return Ptr
;};
54 inline operator void *() {return Ptr
;};
55 inline T
*UnGuard() {T
*Tmp
= Ptr
; Ptr
= 0; return Tmp
;};
56 //inline T &operator [](signed long I) {return Ptr[I];};
57 inline void operator =(T
*N
) {Ptr
= N
;};
58 inline bool operator ==(T
*lhs
) const {return Ptr
== lhs
;};
59 inline bool operator !=(T
*lhs
) const {return Ptr
!= lhs
;};
60 inline T
*Get() {return Ptr
;};
62 inline SPtrArray(T
*Ptr
) : Ptr(Ptr
) {};
63 inline SPtrArray() : Ptr(0) {};
65 #pragma GCC diagnostic push
66 #pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations"
67 // gcc warns about this, but we can do nothing hereā¦
69 inline ~SPtrArray() {delete [] Ptr
;};
71 #pragma GCC diagnostic pop