Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

168 lines
2.9 KiB

  1. /*++
  2. Copyright (c) 2000 Microsoft Corporation
  3. Module Name:
  4. ToStr.h
  5. Abstract:
  6. Author:
  7. Hakki T. Bostanci (hakkib) 06-Apr-2000
  8. Revision History:
  9. --*/
  10. #ifndef _TOSTR_H_
  11. #define _TOSTR_H_
  12. #include "Wrappers.h"
  13. //////////////////////////////////////////////////////////////////////////
  14. //
  15. //
  16. //
  17. class CAutoStr : public CHandle<PTSTR, CAutoStr>
  18. {
  19. public:
  20. explicit CAutoStr(int nLength)
  21. {
  22. Attach(new TCHAR[nLength]);
  23. m_bShouldFree = TRUE;
  24. }
  25. CAutoStr(PCTSTR pszStr)
  26. {
  27. Attach(const_cast<PTSTR>(pszStr));
  28. m_bShouldFree = FALSE;
  29. }
  30. void Destroy()
  31. {
  32. if (m_bShouldFree)
  33. {
  34. delete [] *this;
  35. }
  36. }
  37. bool IsValid()
  38. {
  39. return *this != 0;
  40. }
  41. private:
  42. BOOL m_bShouldFree;
  43. };
  44. //////////////////////////////////////////////////////////////////////////
  45. //
  46. //
  47. //
  48. CAutoStr ToStr(const void *Value, VARTYPE vt);
  49. CAutoStr IntToStr(int Value);
  50. CAutoStr Int64ToStr(__int64 Value);
  51. CAutoStr FloatToStr(float Value);
  52. CAutoStr DoubleToStr(double Value);
  53. CAutoStr SzToStr(PCSTR Value);
  54. CAutoStr WSzToStr(PCWSTR Value);
  55. CAutoStr GuidToStr(REFGUID Value);
  56. CAutoStr TymedToStr(TYMED Value);
  57. CAutoStr DeviceTypeToStr(STI_DEVICE_MJ_TYPE Value);
  58. CAutoStr ButtonIdToStr(int Value);
  59. CAutoStr HResultToStr(HRESULT Value);
  60. CAutoStr VarTypeToStr(VARTYPE Value);
  61. CAutoStr PropVariantToStr(PROPVARIANT Value);
  62. CAutoStr WiaCallbackReasonToStr(ULONG Value);
  63. CAutoStr WiaCallbackStatusToStr(ULONG Value);
  64. //////////////////////////////////////////////////////////////////////////
  65. //
  66. //
  67. //
  68. template <class T> inline CAutoStr ToStr(const T &Value)
  69. {
  70. ASSERT(FALSE);
  71. return _T("");
  72. }
  73. template <> inline CAutoStr ToStr(const int &Value)
  74. {
  75. return IntToStr(Value);
  76. }
  77. template <> inline CAutoStr ToStr(const unsigned int &Value)
  78. {
  79. return IntToStr(Value);
  80. }
  81. template <> inline CAutoStr ToStr(const long &Value)
  82. {
  83. return IntToStr(Value);
  84. }
  85. template <> inline CAutoStr ToStr(const unsigned long &Value)
  86. {
  87. return IntToStr(Value);
  88. }
  89. template <> inline CAutoStr ToStr(const short &Value)
  90. {
  91. return IntToStr(Value);
  92. }
  93. template <> inline CAutoStr ToStr(const unsigned short &Value)
  94. {
  95. return IntToStr(Value);
  96. }
  97. template <> inline CAutoStr ToStr(const char &Value)
  98. {
  99. return IntToStr(Value);
  100. }
  101. template <> inline CAutoStr ToStr(const unsigned char &Value)
  102. {
  103. return IntToStr(Value);
  104. }
  105. template <> inline CAutoStr ToStr(const float &Value)
  106. {
  107. return FloatToStr(Value);
  108. }
  109. template <> inline CAutoStr ToStr(const double &Value)
  110. {
  111. return DoubleToStr(Value);
  112. }
  113. template <> inline CAutoStr ToStr(const PCSTR &Value)
  114. {
  115. return SzToStr(Value);
  116. }
  117. template <> inline CAutoStr ToStr(const PCWSTR &Value)
  118. {
  119. return WSzToStr(Value);
  120. }
  121. template <> inline CAutoStr ToStr(const GUID &Value)
  122. {
  123. return GuidToStr(Value);
  124. }
  125. template <> inline CAutoStr ToStr(const PROPVARIANT &Value)
  126. {
  127. return PropVariantToStr(Value);
  128. }
  129. #endif //_TOSTR_H_