hscope.h 855 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef H_SCOPE_H
  2. #define H_SCOPE_H
  3. #include "hdef.h"
  4. template<typename T>
  5. class ScopeFree{
  6. public:
  7. ScopeFree(T* p) : _p(p) {}
  8. ~ScopeFree() {SAFE_FREE(_p);}
  9. private:
  10. T* _p;
  11. };
  12. template<typename T>
  13. class ScopeDelete{
  14. public:
  15. ScopeDelete(T* p) : _p(p) {}
  16. ~ScopeDelete() {SAFE_DELETE(_p);}
  17. private:
  18. T* _p;
  19. };
  20. template<typename T>
  21. class ScopeDeleteArray{
  22. public:
  23. ScopeDeleteArray(T* p) : _p(p) {}
  24. ~ScopeDeleteArray() {SAFE_DELETE_ARRAY(_p);}
  25. private:
  26. T* _p;
  27. };
  28. template<typename T>
  29. class ScopeRelease{
  30. public:
  31. ScopeRelease(T* p) : _p(p) {}
  32. ~ScopeRelease() {SAFE_RELEASE(_p);}
  33. private:
  34. T* _p;
  35. };
  36. template<typename T>
  37. class ScopeLock{
  38. public:
  39. ScopeLock(T& mutex) : _mutex(mutex) {_mutex.lock();}
  40. ~ScopeLock() {_mutex.unlock();}
  41. private:
  42. T& _mutex;
  43. };
  44. #endif // H_SCOPE_H