]>
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
25 class APT_DEPRECATED SPtr
30 inline T
*operator ->() {return Ptr
;};
31 inline T
&operator *() {return *Ptr
;};
32 inline operator T
*() {return Ptr
;};
33 inline operator void *() {return Ptr
;};
34 inline T
*UnGuard() {T
*Tmp
= Ptr
; Ptr
= 0; return Tmp
;};
35 inline void operator =(T
*N
) {Ptr
= N
;};
36 inline bool operator ==(T
*lhs
) const {return Ptr
== lhs
;};
37 inline bool operator !=(T
*lhs
) const {return Ptr
!= lhs
;};
38 inline T
*Get() {return Ptr
;};
40 inline SPtr(T
*Ptr
) : Ptr(Ptr
) {};
41 inline SPtr() : Ptr(0) {};
42 inline ~SPtr() {delete Ptr
;};
46 class APT_DEPRECATED SPtrArray
51 //inline T &operator *() {return *Ptr;};
52 inline operator T
*() {return Ptr
;};
53 inline operator void *() {return Ptr
;};
54 inline T
*UnGuard() {T
*Tmp
= Ptr
; Ptr
= 0; return Tmp
;};
55 //inline T &operator [](signed long I) {return Ptr[I];};
56 inline void operator =(T
*N
) {Ptr
= N
;};
57 inline bool operator ==(T
*lhs
) const {return Ptr
== lhs
;};
58 inline bool operator !=(T
*lhs
) const {return Ptr
!= lhs
;};
59 inline T
*Get() {return Ptr
;};
61 inline SPtrArray(T
*Ptr
) : Ptr(Ptr
) {};
62 inline SPtrArray() : Ptr(0) {};
64 #pragma GCC diagnostic push
65 #pragma GCC diagnostic ignored "-Wunsafe-loop-optimizations"
66 // gcc warns about this, but we can do nothing hereā¦
68 inline ~SPtrArray() {delete [] Ptr
;};
70 #pragma GCC diagnostic pop