sptr.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // -*- mode: cpp; mode: fold -*-
  2. // Description /*{{{*/
  3. // $Id: sptr.h,v 1.3 2001/03/11 07:22:19 jgg Exp $
  4. /* ######################################################################
  5. Trivial non-ref counted 'smart pointer'
  6. This is really only good to eliminate
  7. {
  8. delete Foo;
  9. return;
  10. }
  11. Blocks from functions.
  12. I think G++ has become good enough that doing this won't have much
  13. code size implications.
  14. ##################################################################### */
  15. /*}}}*/
  16. #ifndef SMART_POINTER_H
  17. #define SMART_POINTER_H
  18. template <class T>
  19. class SPtr
  20. {
  21. public:
  22. T *Ptr;
  23. inline T *operator ->() {return Ptr;};
  24. inline T &operator *() {return *Ptr;};
  25. inline operator T *() {return Ptr;};
  26. inline operator void *() {return Ptr;};
  27. inline T *UnGuard() {T *Tmp = Ptr; Ptr = 0; return Tmp;};
  28. inline void operator =(T *N) {Ptr = N;};
  29. inline bool operator ==(T *lhs) const {return Ptr == lhs;};
  30. inline bool operator !=(T *lhs) const {return Ptr != lhs;};
  31. inline T*Get() {return Ptr;};
  32. inline SPtr(T *Ptr) : Ptr(Ptr) {};
  33. inline SPtr() : Ptr(0) {};
  34. inline ~SPtr() {delete Ptr;};
  35. };
  36. template <class T>
  37. class SPtrArray
  38. {
  39. public:
  40. T *Ptr;
  41. //inline T &operator *() {return *Ptr;};
  42. inline operator T *() {return Ptr;};
  43. inline operator void *() {return Ptr;};
  44. inline T *UnGuard() {T *Tmp = Ptr; Ptr = 0; return Tmp;};
  45. //inline T &operator [](signed long I) {return Ptr[I];};
  46. inline void operator =(T *N) {Ptr = N;};
  47. inline bool operator ==(T *lhs) const {return Ptr == lhs;};
  48. inline bool operator !=(T *lhs) const {return Ptr != lhs;};
  49. inline T *Get() {return Ptr;};
  50. inline SPtrArray(T *Ptr) : Ptr(Ptr) {};
  51. inline SPtrArray() : Ptr(0) {};
  52. inline ~SPtrArray() {delete [] Ptr;};
  53. };
  54. #endif