]>
git.saurik.com Git - apt.git/blob - apt-pkg/contrib/sptr.h
1 // -*- mode: cpp; mode: fold -*-
3 // $Id: sptr.h,v 1.2 2001/02/20 07:03:17 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
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
;};
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) {};
63 inline ~SPtrArray() {delete []Ptr
;};