SPVC80Helpers.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. #if !defined(__SPPVC80HELPERS_H__)
  2. #define __SPPVC80HELPERS_H__
  3. #if (_MSC_VER >= 1000)
  4. #pragma once
  5. #endif
  6. #include <io.h>
  7. #include <stdio.h>
  8. #include <tchar.h>
  9. AFX_INLINE void MEMCPY_S( void * dest , const void * src , size_t count )
  10. {
  11. #if (_MSC_VER > 1310) // VS2005
  12. memcpy_s( dest,count,src,count );
  13. #else
  14. memcpy( dest,src,count );
  15. #endif
  16. }
  17. AFX_INLINE UINT RAND_S()
  18. {
  19. #if (_MSC_VER > 1310) && defined(_CRT_RAND_S) // VS2005
  20. unsigned int randVal = 0;
  21. rand_s( &randVal );
  22. return randVal;
  23. #else
  24. return ( UINT ) rand();
  25. #endif
  26. }
  27. AFX_INLINE void STRCPY_S( TCHAR * strDestination , size_t sizeInWords , const TCHAR * strSource )
  28. {
  29. #if (_MSC_VER > 1310) // VS2005
  30. _tcscpy_s( strDestination,sizeInWords,strSource );
  31. #else
  32. _tcscpy( strDestination,strSource );UNREFERENCED_PARAMETER( sizeInWords );
  33. #endif
  34. }
  35. AFX_INLINE void STRNCPY_S( TCHAR * strDestination , size_t sizeInWords , const TCHAR * strSource , size_t count )
  36. {
  37. #if (_MSC_VER > 1310) // VS2005
  38. _tcsncpy_s( strDestination,sizeInWords,strSource,count );
  39. #else
  40. _tcsncpy( strDestination,strSource,count );UNREFERENCED_PARAMETER( sizeInWords );
  41. #endif
  42. }
  43. AFX_INLINE TCHAR * STRTOK_S( TCHAR * strToken , const TCHAR * strDelimit , TCHAR ** context )
  44. {
  45. #if (_MSC_VER > 1310) // VS2005
  46. return _tcstok_s( strToken,strDelimit,context );
  47. #else
  48. UNREFERENCED_PARAMETER( context );
  49. return _tcstok( strToken,strDelimit );
  50. #endif
  51. }
  52. AFX_INLINE int SPRINTF_S( TCHAR * buffer , size_t count , const TCHAR * format , ... )
  53. {
  54. va_list args;
  55. va_start( args,format );
  56. #if (_MSC_VER > 1310) // VS2005
  57. int result = _vstprintf_s( buffer,count,format,args );
  58. #else
  59. int result = _vstprintf( buffer,format,args );UNREFERENCED_PARAMETER( count );
  60. #endif
  61. va_end( args );
  62. return result;
  63. }
  64. AFX_INLINE void MEMMOVE_S( void * dest , const void * src , size_t count )
  65. {
  66. #if (_MSC_VER > 1310) // VS2005
  67. memmove_s( dest,count,src,count );
  68. #else
  69. memmove( dest,src,count );
  70. #endif
  71. }
  72. AFX_INLINE void SPLITPATH_S( const TCHAR * szFullPath , TCHAR * szDrive , TCHAR * szDir , TCHAR * szFileName , TCHAR * szExt )
  73. {
  74. #if (_MSC_VER > 1310) // VS2005
  75. _tsplitpath_s( szFullPath,szDrive,_MAX_DRIVE,szDir,_MAX_DIR,szFileName,_MAX_FNAME,szExt,_MAX_EXT );
  76. #else
  77. _tsplitpath( szFullPath,szDrive,szDir,szFileName,szExt );
  78. #endif
  79. }
  80. AFX_INLINE FILE * FOPEN_S( const TCHAR * szFileName , const TCHAR * szMode )
  81. {
  82. FILE * stream;
  83. #if (_MSC_VER > 1310) // VS2005
  84. _tfopen_s( &stream,szFileName,szMode );
  85. #else
  86. stream = _tfopen( szFileName,szMode );
  87. #endif
  88. return stream;
  89. }
  90. AFX_INLINE void ITOW_S( int value , wchar_t * buffer , size_t sizeInWords , int radix )
  91. {
  92. #if (_MSC_VER > 1310) // VS2005
  93. _itow_s( value,buffer,sizeInWords,radix );
  94. #else
  95. _itow( value,buffer,radix );UNREFERENCED_PARAMETER( sizeInWords );
  96. #endif
  97. }
  98. AFX_INLINE wchar_t * WCSLWR_S( wchar_t * str , size_t sizeInWords )
  99. {
  100. #if (_MSC_VER > 1310) // VS2005
  101. _wcslwr_s( str,sizeInWords );
  102. return str;
  103. #else
  104. UNREFERENCED_PARAMETER( sizeInWords );
  105. return _wcslwr( str );
  106. #endif
  107. }
  108. AFX_INLINE void MBSTOWCS_S( LPWSTR dest , LPCTSTR src , size_t sizeInWords )
  109. {
  110. #ifdef _UNICODE
  111. STRCPY_S( dest,sizeInWords,src );
  112. #else
  113. #if (_MSC_VER > 1310) // VS2005
  114. mbstowcs_s( &sizeInWords,dest,sizeInWords,src,sizeInWords );
  115. #else
  116. mbstowcs( dest,src,sizeInWords );
  117. #endif
  118. #endif
  119. }
  120. AFX_INLINE void WCSTOMBS_S( LPSTR dest , LPCTSTR src , size_t sizeInWords )
  121. {
  122. #ifndef _UNICODE
  123. STRCPY_S( dest,sizeInWords,src );
  124. #else
  125. #if (_MSC_VER > 1310) // VS2005
  126. wcstombs_s( &sizeInWords,dest,sizeInWords,src,sizeInWords );
  127. #else
  128. wcstombs( dest,src,sizeInWords );
  129. #endif
  130. #endif
  131. }
  132. #if (_MSC_VER > 1310)
  133. #define SCANF_S _stscanf_s
  134. #define SCANF_PARAM_S(x, count) x, count
  135. #define ACCESS_S _taccess_s
  136. #else
  137. #define SCANF_S _stscanf
  138. #define SCANF_PARAM_S(x, count) x
  139. #define ACCESS_S _taccess
  140. #endif
  141. #endif