home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / uastrfnc.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  2KB  |  92 lines

  1. //+-------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //  Copyright (C) Microsoft Corporation, 1994-1999.
  5. //
  6. //  File:       uastrfnc.h
  7. //
  8. //  Contents:   Unaligned UNICODE lstr functions for MIPS, PPC, ALPHA, ...
  9. //
  10. //  Classes:
  11. //
  12. //  Functions:
  13. //
  14. //
  15. //--------------------------------------------------------------------------
  16.  
  17. // NOTE: This file assumes it is included from shellprv.h
  18.  
  19. #ifndef _UASTRFNC_H_
  20. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  21. #define _UASTRFNC_H_
  22.  
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26.  
  27. // If we are running on a platform that requires aligned data, we need
  28. // to provide custom string functions that can deal with unaligned
  29. // strings.  On other platforms, these call directly to the normal string
  30. // functions.
  31.  
  32. #ifndef _X86_
  33. #define ALIGNMENT_MACHINE
  34. #endif
  35.  
  36. #ifdef ALIGNMENT_MACHINE
  37.  
  38. #define IS_ALIGNED(p)   (((ULONG_PTR)(p) & (sizeof(*(p))-1) )==0)
  39.  
  40. UNALIGNED WCHAR * ualstrcpynW(UNALIGNED WCHAR * lpString1,
  41.                         UNALIGNED const WCHAR * lpString2,
  42.                       int iMaxLength);
  43.  
  44. int           ualstrcmpiW (UNALIGNED const WCHAR * dst,
  45.                    UNALIGNED const WCHAR * src);
  46.  
  47. int           ualstrcmpW  (UNALIGNED const WCHAR * src,
  48.                    UNALIGNED const WCHAR * dst);
  49.  
  50. size_t           ualstrlenW  (UNALIGNED const WCHAR * wcs);
  51.  
  52. UNALIGNED WCHAR * ualstrcpyW  (UNALIGNED WCHAR * dst,
  53.                    UNALIGNED const WCHAR * src);
  54.  
  55.  
  56. #else
  57.  
  58. #define ualstrcpynW StrCpyNW     // lstrcpynW is stubbed out on Windows 95
  59. #define ualstrcmpiW StrCmpIW     // lstrcmpiW is stubbed out on Windows 95
  60. #define ualstrcmpW  StrCmpW      // lstrcmpW is stubbed out on Windows 95
  61. #define ualstrlenW  lstrlenW
  62. #define ualstrcpyW  StrCpyW      // lstrcpyW is stubbed out on Windows 95
  63.  
  64. #endif // ALIGNMENT_MACHINE
  65.  
  66. #define ualstrcpynA lstrcpynA
  67. #define ualstrcmpiA lstrcmpiA
  68. #define ualstrcmpA  lstrcmpA
  69. #define ualstrlenA  lstrlenA
  70. #define ualstrcpyA  lstrcpyA
  71.  
  72. #ifdef UNICODE
  73. #define ualstrcpyn ualstrcpynW
  74. #define ualstrcmpi ualstrcmpiW
  75. #define ualstrcmp  ualstrcmpW
  76. #define ualstrlen  ualstrlenW
  77. #define ualstrcpy  ualstrcpyW
  78. #else
  79. #define ualstrcpyn ualstrcpynA
  80. #define ualstrcmpi ualstrcmpiA
  81. #define ualstrcmp  ualstrcmpA
  82. #define ualstrlen  ualstrlenA
  83. #define ualstrcpy  ualstrcpyA
  84. #endif
  85.  
  86. #ifdef __cplusplus
  87. }       // extern "C"
  88. #endif
  89.  
  90. #pragma option pop /*P_O_Pop*/
  91. #endif // _UASTRFNC_H_
  92.