zadapt.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef _zadapt_H_
  2. #define _zadapt_H_
  3. /////////////////////////////////////////////////////////////////////////////
  4. // An adapter to allow classes like TRefs to be stored in STL containers
  5. // (the operator & was breaking things). This was shamelessly stolen from
  6. // the ATL class CAdapt and modified for our purposes.
  7. //
  8. template <class T>
  9. class ZAdapt
  10. {
  11. public:
  12. ZAdapt()
  13. {
  14. }
  15. ZAdapt(const T& rSrc) :
  16. m_T(rSrc)
  17. {
  18. }
  19. ZAdapt(const ZAdapt& rSrCA) :
  20. m_T(rSrCA.m_T)
  21. {
  22. }
  23. ZAdapt& operator=(const T& rSrc)
  24. {
  25. m_T = rSrc;
  26. return *this;
  27. }
  28. bool operator<(const T& rSrc) const
  29. {
  30. return m_T < rSrc;
  31. }
  32. bool operator==(const T& rSrc) const
  33. {
  34. return m_T == rSrc;
  35. }
  36. operator T&()
  37. {
  38. return m_T;
  39. }
  40. operator const T&() const
  41. {
  42. return m_T;
  43. }
  44. T& operator->()
  45. {
  46. return m_T;
  47. }
  48. const T& operator->() const
  49. {
  50. return m_T;
  51. }
  52. T m_T;
  53. };
  54. /////////////////////////////////////////////////////////////////////////////
  55. #endif