portable.h

Upload User: wangcyou
Upload Date: 2007-01-01
Package Size: 142k
Code Size: 6k
Category: Windows Develop
Development Platform: Visual C++
  1. //---------------------------------------------------------------------------
  2. // Copyright (C) 1998, Interscope Ltd. All rights reserved.
  3. // Reproduction or distribution of this program, or any portion of it, 
  4. // is permitted only if this header is kept as it is.
  5. // For more information, contact:
  6. //
  7. // Interscope Ltd., 5 Culturii St., 5th Floor, 4800 Baia Mare, RO
  8. //    Phone/Fax: +40-62-215023
  9. //    E-mail: office@interscope.ro
  10. //
  11. //   $Author: Levente Farkas $
  12. //     $Date: 5/13/98 12:03a $
  13. //  $Modtime: 4/27/98 6:50a $
  14. // $Revision: 20 $
  15. //  $Archive: /Interscope/Thebe/InstallMaster/Portable.H $
  16. // $Workfile: Portable.H $
  17. //-----------------------------------------------------------------------
  18. #ifndef __Portability_H__
  19. #define __Portability_H__
  20. #if !defined(__WIN32__) && !defined(_WIN32)
  21. #ifndef STRICT
  22. #define STRICT
  23. #endif
  24. #endif // __WIN32__
  25. #include <Windows.H>
  26. #include <TChar.H>
  27. //--- UNICODE helpers --------------------------------------------------
  28. #ifdef _UNICODE
  29.     #ifndef UNICODE
  30.     #define UNICODE
  31.     #endif
  32. #include "Winnls.H"
  33. #endif
  34. //--- UNICODE string macros --------------------------------------------
  35. // Please note that any LPCSTRs in the the code
  36. // could be intentially left for ANSI interface to system calls
  37. #ifdef _UNICODE
  38. #define STRLEN      wcslen
  39. #define STRCPY      wcscpy
  40. #define STRCAT wcscat
  41. #define STRNCPY     wcsncpy
  42.     #define STRNCAT     wcsncat
  43. #define STRCMP      wcscmp
  44. #define STRICMP     _wcsicmp
  45. #define STRNCMP     wcsncmp
  46. #define STRNICMP    _wcsnicmp
  47. #define ITOA        _itow
  48. #define LTOA        _ltow
  49. #define ATOI        _wtoi
  50. #define ATOL        _wtol
  51.     #define SSCANF      swscanf
  52. #define SPRINTF     swprintf
  53. #define VSPRINTF    vswprintf
  54. #define STRDUP      _wcsdup
  55. #define STRTOK      wcstok
  56. #define STRCHR      wcschr
  57. #define STRRCHR wcsrchr
  58. #define STRSTR wcsstr
  59. #define STRUPR _wcsupr
  60. #define STRLWR _wcslwr
  61.     #define TOUPPER     towupper
  62.     #define TOLOWER     towlower
  63.     #define ISALPHA     iswalpha
  64.     #define ISALNUM     iswalnum
  65.     #define ISDIGIT     iswdigit    
  66.     #define ISXDIGIT    iswxdigit
  67.     #define ISSPACE     iswspace
  68.     #define ISPUNCT     iswpunct
  69.     #define ISLOWER     iswlower
  70.     #define ISUPPER     iswupper
  71.     #define ISCNTRL     iswcntrl
  72. #else
  73. #define STRLEN      lstrlen
  74. #define STRCPY      lstrcpy
  75. #define STRCAT      lstrcat
  76. #define STRNCPY     lstrcpyn
  77.     #define STRNCAT     strncat
  78. #define STRCMP      lstrcmp
  79. #define STRICMP     lstrcmpi
  80. #define STRNCMP     strncmp
  81. #define STRNICMP    strnicmp
  82. #define ITOA        _itoa
  83. #define LTOA        _ltoa
  84. #define ATOI        atoi
  85. #define ATOL        atol
  86.     #define SSCANF      sscanf
  87. #define SPRINTF     wsprintf
  88. #define VSPRINTF    wvsprintf
  89. #define STRDUP      strdup
  90. #define STRTOK      strtok
  91. #define STRCHR      strchr
  92. #define STRRCHR strrchr
  93. #define STRSTR strstr
  94. #define STRUPR _strupr
  95. #define STRLWR _strlwr
  96.     #define TOUPPER     toupper
  97.     #define TOLOWER     tolower
  98.     #define ISALPHA     isalpha
  99.     #define ISALNUM     isalnum
  100.     #define ISDIGIT     isdigit    
  101.     #define ISXDIGIT    isxdigit
  102.     #define ISSPACE     isspace
  103.     #define ISPUNCT     ispunct
  104.     #define ISLOWER     islower
  105.     #define ISUPPER     isupper
  106.     #define ISCNTRL     iscntrl
  107. #endif
  108. //--- UNICODE file macros ----------------------------------------------
  109. #ifdef _UNICODE
  110. #define SPLITPATH   _wsplitpath
  111. #define FULLPATH    _wfullpath
  112. #define MAKEPATH    _wmakepath
  113. #define GETCWD      _wgetcwd
  114. #define REMOVE      _wremove
  115. #define ACCESS      _waccess
  116. #define CHMOD       _wchmod
  117. #define RENAME      _wrename
  118. #define STAT        _wstat
  119. #define MKDIR       _wmkdir
  120. #define CHDIR       _wchdir
  121. #define RMDIR       _wrmdir
  122.     #define OPEN        _lopen
  123.     #define CREATE      _lcreat
  124.     #define CLOSE       _lclose
  125.     #define READ        _hread
  126.     #define WRITE       _hwrite
  127.     #define SEEK        _llseek
  128. #else
  129. #define SPLITPATH   _splitpath
  130. #define FULLPATH    _fullpath
  131. #define MAKEPATH    _makepath
  132. #define GETCWD      _getcwd
  133. #define REMOVE      remove
  134. #define ACCESS      _access
  135. #define CHMOD       _chmod
  136. #define RENAME      rename
  137. #define STAT        _stat
  138. #define MKDIR       _mkdir
  139. #define CHDIR       _chdir
  140. #define RMDIR       _rmdir
  141.     #define OPEN        _lopen
  142.     #define CREATE      _lcreat
  143.     #define CLOSE       _lclose
  144.     #define READ        _hread
  145.     #define WRITE       _hwrite
  146.     #define SEEK        _llseek
  147. #endif
  148. //--- Portable function mappers ----------------------------------------
  149. // These are getting obsolete, do not use them anymore if possible
  150. // This file contains some macros designed to make it easier to keep
  151. // single source for both 16 and 32 bit C++ applications.
  152. // In 16 bit Windows, the small memory model is often used, with considerable
  153. // use of the _far keyword to enable far data. This requires the use of 
  154. // far versions of the runtime, such as _fstrcpy. These "model-independent"
  155. // versions are not available in Win32, so we use these macros instead.
  156. #ifndef LPDWORD
  157. typedef DWORD FAR *LPDWORD;
  158. #endif
  159. #ifndef LPBYTE
  160. typedef BYTE FAR *LPBYTE;
  161. #endif
  162. #ifdef _WIN32
  163.     // 32-bit platforms (Windows95 and WindowsNT)
  164.     #define FSTRCPY     strcpy
  165.     #define FSTRSTR strstr
  166.     #define FSTRTOK strtok
  167.     #define FSTRICMP stricmp
  168.     #define FSTRLEN strlen
  169.     #define FSTRCAT strcat
  170.     #define FSTRRCHR strrchr
  171. #else
  172.     // 16-bit platforms (Windows3.x)
  173.     #define FSTRCPY _fstrcpy
  174.     #define FSTRSTR _fstrstr
  175.     #define FSTRTOK _fstrtok
  176.     #define FSTRICMP _fstricmp
  177.     #define FSTRLEN _fstrlen
  178.     #define FSTRCAT _fstrcat
  179.     #define FSTRRCHR _fstrrchr
  180.     #define LPCTSTR LPCSTR
  181.     #define LPTSTR      LPSTR
  182.     #define TCHAR       char
  183.     #define _T(x)       x
  184.     #define _TEXT(x)    x
  185. #endif
  186. #endif