www.pudn.com > cab文件压缩、解压程序源代码.zip > portable.h
//--------------------------------------------------------------------------- // Copyright (C) 1998, Interscope Ltd. All rights reserved. // Reproduction or distribution of this program, or any portion of it, // is permitted only if this header is kept as it is. // For more information, contact: // // Interscope Ltd., 5 Culturii St., 5th Floor, 4800 Baia Mare, RO // Phone/Fax: +40-62-215023 // E-mail: office@interscope.ro // // $Author: Levente Farkas $ // $Date: 5/13/98 12:03a $ // $Modtime: 4/27/98 6:50a $ // $Revision: 20 $ // $Archive: /Interscope/Thebe/InstallMaster/Portable.H $ // $Workfile: Portable.H $ //----------------------------------------------------------------------- #ifndef __Portability_H__ #define __Portability_H__ #if !defined(__WIN32__) && !defined(_WIN32) #ifndef STRICT #define STRICT #endif #endif // __WIN32__ #include#include //--- UNICODE helpers -------------------------------------------------- #ifdef _UNICODE #ifndef UNICODE #define UNICODE #endif #include "Winnls.H" #endif //--- UNICODE string macros -------------------------------------------- // Please note that any LPCSTRs in the the code // could be intentially left for ANSI interface to system calls #ifdef _UNICODE #define STRLEN wcslen #define STRCPY wcscpy #define STRCAT wcscat #define STRNCPY wcsncpy #define STRNCAT wcsncat #define STRCMP wcscmp #define STRICMP _wcsicmp #define STRNCMP wcsncmp #define STRNICMP _wcsnicmp #define ITOA _itow #define LTOA _ltow #define ATOI _wtoi #define ATOL _wtol #define SSCANF swscanf #define SPRINTF swprintf #define VSPRINTF vswprintf #define STRDUP _wcsdup #define STRTOK wcstok #define STRCHR wcschr #define STRRCHR wcsrchr #define STRSTR wcsstr #define STRUPR _wcsupr #define STRLWR _wcslwr #define TOUPPER towupper #define TOLOWER towlower #define ISALPHA iswalpha #define ISALNUM iswalnum #define ISDIGIT iswdigit #define ISXDIGIT iswxdigit #define ISSPACE iswspace #define ISPUNCT iswpunct #define ISLOWER iswlower #define ISUPPER iswupper #define ISCNTRL iswcntrl #else #define STRLEN lstrlen #define STRCPY lstrcpy #define STRCAT lstrcat #define STRNCPY lstrcpyn #define STRNCAT strncat #define STRCMP lstrcmp #define STRICMP lstrcmpi #define STRNCMP strncmp #define STRNICMP strnicmp #define ITOA _itoa #define LTOA _ltoa #define ATOI atoi #define ATOL atol #define SSCANF sscanf #define SPRINTF wsprintf #define VSPRINTF wvsprintf #define STRDUP strdup #define STRTOK strtok #define STRCHR strchr #define STRRCHR strrchr #define STRSTR strstr #define STRUPR _strupr #define STRLWR _strlwr #define TOUPPER toupper #define TOLOWER tolower #define ISALPHA isalpha #define ISALNUM isalnum #define ISDIGIT isdigit #define ISXDIGIT isxdigit #define ISSPACE isspace #define ISPUNCT ispunct #define ISLOWER islower #define ISUPPER isupper #define ISCNTRL iscntrl #endif //--- UNICODE file macros ---------------------------------------------- #ifdef _UNICODE #define SPLITPATH _wsplitpath #define FULLPATH _wfullpath #define MAKEPATH _wmakepath #define GETCWD _wgetcwd #define REMOVE _wremove #define ACCESS _waccess #define CHMOD _wchmod #define RENAME _wrename #define STAT _wstat #define MKDIR _wmkdir #define CHDIR _wchdir #define RMDIR _wrmdir #define OPEN _lopen #define CREATE _lcreat #define CLOSE _lclose #define READ _hread #define WRITE _hwrite #define SEEK _llseek #else #define SPLITPATH _splitpath #define FULLPATH _fullpath #define MAKEPATH _makepath #define GETCWD _getcwd #define REMOVE remove #define ACCESS _access #define CHMOD _chmod #define RENAME rename #define STAT _stat #define MKDIR _mkdir #define CHDIR _chdir #define RMDIR _rmdir #define OPEN _lopen #define CREATE _lcreat #define CLOSE _lclose #define READ _hread #define WRITE _hwrite #define SEEK _llseek #endif //--- Portable function mappers ---------------------------------------- // These are getting obsolete, do not use them anymore if possible // This file contains some macros designed to make it easier to keep // single source for both 16 and 32 bit C++ applications. // In 16 bit Windows, the small memory model is often used, with considerable // use of the _far keyword to enable far data. This requires the use of // far versions of the runtime, such as _fstrcpy. These "model-independent" // versions are not available in Win32, so we use these macros instead. #ifndef LPDWORD typedef DWORD FAR *LPDWORD; #endif #ifndef LPBYTE typedef BYTE FAR *LPBYTE; #endif #ifdef _WIN32 // 32-bit platforms (Windows95 and WindowsNT) #define FSTRCPY strcpy #define FSTRSTR strstr #define FSTRTOK strtok #define FSTRICMP stricmp #define FSTRLEN strlen #define FSTRCAT strcat #define FSTRRCHR strrchr #else // 16-bit platforms (Windows3.x) #define FSTRCPY _fstrcpy #define FSTRSTR _fstrstr #define FSTRTOK _fstrtok #define FSTRICMP _fstricmp #define FSTRLEN _fstrlen #define FSTRCAT _fstrcat #define FSTRRCHR _fstrrchr #define LPCTSTR LPCSTR #define LPTSTR LPSTR #define TCHAR char #define _T(x) x #define _TEXT(x) x #endif #endif