home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 January / PCWorld_2000-01_cd.bin / Software / Servis / Devc / _SETUP.4 / Group3 / tchar.h < prev    next >
C/C++ Source or Header  |  1998-12-24  |  6KB  |  228 lines

  1. /* 
  2.  * tchar.h
  3.  *
  4.  * Unicode mapping layer for the standard C library. By including this
  5.  * file and using the 't' names for string functions
  6.  * (eg. _tprintf) you can make code which can be easily adapted to both
  7.  * Unicode and non-unicode environments. In a unicode enabled compile define
  8.  * _UNICODE before including tchar.h, otherwise the standard non-unicode
  9.  * library functions will be used.
  10.  *
  11.  * Note that you still need to include string.h or stdlib.h etc. to define
  12.  * the appropriate functions. Also note that there are several defines
  13.  * included for non-ANSI functions which are commonly available (but using
  14.  * the convention of prepending an underscore to non-ANSI library function
  15.  * names).
  16.  *
  17.  * This file is part of the Mingw32 package.
  18.  *
  19.  * Contributors:
  20.  *  Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
  21.  *
  22.  *  THIS SOFTWARE IS NOT COPYRIGHTED
  23.  *
  24.  *  This source code is offered for use in the public domain. You may
  25.  *  use, modify or distribute it freely.
  26.  *
  27.  *  This code is distributed in the hope that it will be useful but
  28.  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  29.  *  DISCLAMED. This includes but is not limited to warranties of
  30.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  31.  *
  32.  * $Revision: 2.2 $
  33.  * $Author: colin $
  34.  * $Date: 1998/01/26 04:48:00 $
  35.  *
  36.  */
  37.  
  38. #ifndef    _TCHAR_H_
  39. #define _TCHAR_H_
  40.  
  41. /*
  42.  * NOTE: This tests _UNICODE, which is different from the UNICODE define
  43.  *       used to differentiate Win32 API calls.
  44.  */
  45. #ifdef    _UNICODE
  46.  
  47.  
  48. /*
  49.  * Use TCHAR instead of char or wchar_t. It will be appropriately translated
  50.  * if _UNICODE is correctly defined (or not).
  51.  */
  52. #ifndef _TCHAR_DEFINED
  53. #ifndef RC_INVOKED
  54. typedef    wchar_t    TCHAR;
  55. #endif    /* Not RC_INVOKED */
  56. #define _TCHAR_DEFINED
  57. #endif
  58.  
  59.  
  60. /*
  61.  * Enclose constant strings and literal characters in the _TEXT macro to make
  62.  * them unicode constant strings when _UNICODE is defined.
  63.  */
  64. #define    _TEXT(x)    L ## x
  65.  
  66. /*
  67.  * Unicode functions
  68.  */
  69.  
  70. #define    _tprintf    wprintf
  71. #define    _ftprintf    fwprintf
  72. #define    _stprintf    swprintf
  73. #define    _sntprintf    _snwprintf
  74. #define    _vtprintf    vwprintf
  75. #define    _vftprintf    vfwprintf
  76. #define _vstprintf    vswprintf
  77. #define    _vsntprintf    _vsnwprintf
  78. #define    _tscanf        wscanf
  79. #define    _ftscanf    fwscanf
  80. #define    _stscanf    swscanf
  81. #define    _fgettc        fgetwc
  82. #define    _fgettchar    _fgetwchar
  83. #define    _fgetts        fgetws
  84. #define    _fputtc        fputwc
  85. #define    _fputtchar    _fputwchar
  86. #define    _fputts        fputws
  87. #define    _gettc        getwc
  88. #define    _getts        getws
  89. #define    _puttc        putwc
  90. #define    _putts        putws
  91. #define    _ungettc    ungetwc
  92. #define    _tcstod        wcstod
  93. #define    _tcstol        wcstol
  94. #define _tcstoul    wcstoul
  95. #define    _tcscat        wcscat
  96. #define _tcschr        wcschr
  97. #define _tcscmp        wcscmp
  98. #define _tcscpy        wcscpy
  99. #define _tcscspn    wcscspn
  100. #define    _tcslen        wcslen
  101. #define    _tcsncat    wcsncat
  102. #define    _tcsncmp    wcsncmp
  103. #define    _tcsncpy    wcsncpy
  104. #define    _tcspbrk    wcspbrk
  105. #define    _tcsrchr    wcsrchr
  106. #define _tcsspn        wcsspn
  107. #define    _tcsstr        wcsstr
  108. #define _tcstok        wcstok
  109. #define    _tcsdup        _wcsdup
  110. #define    _tcsicmp    _wcsicmp
  111. #define    _tcsnicmp    _wcsnicmp
  112. #define    _tcsnset    _wcsnset
  113. #define    _tcsrev        _wcsrev
  114. #define _tcsset        _wcsset
  115. #define    _tcslwr        _wcslwr
  116. #define    _tcsupr        _wcsupr
  117. #define    _tcsxfrm    wcsxfrm
  118. #define    _tcscoll    wcscoll
  119. #define    _tcsicoll    _wcsicoll
  120. #define    _istalpha    iswalpha
  121. #define    _istupper    iswupper
  122. #define    _istlower    iswlower
  123. #define    _istdigit    iswdigit
  124. #define    _istxdigit    iswxdigit
  125. #define    _istspace    iswspace
  126. #define    _istpunct    iswpunct
  127. #define    _istalnum    iswalnum
  128. #define    _istprint    iswprint
  129. #define    _istgraph    iswgraph
  130. #define    _istcntrl    iswcntrl
  131. #define    _istascii    iswascii
  132. #define _totupper    towupper
  133. #define    _totlower    towlower
  134. #define _tcsftime    wcsftime
  135.  
  136. #else    /* Not _UNICODE */
  137.  
  138. /*
  139.  * TCHAR, the type you should use instead of char.
  140.  */
  141. #ifndef _TCHAR_DEFINED
  142. #ifndef RC_INVOKED
  143. typedef char    TCHAR;
  144. #endif
  145. #define _TCHAR_DEFINED
  146. #endif
  147.  
  148. /*
  149.  * Enclose constant strings and characters in the _TEXT macro.
  150.  */
  151. #define    _TEXT(x)    x
  152.  
  153.  
  154. /*
  155.  * Non-unicode (standard) functions
  156.  */
  157.  
  158. #define    _tprintf    printf
  159. #define _ftprintf    fprintf
  160. #define    _stprintf    sprintf
  161. #define    _sntprintf    _snprintf
  162. #define    _vtprintf    vprintf
  163. #define    _vftprintf    vfprintf
  164. #define _vstprintf    vsprintf
  165. #define    _vsntprintf    _vsnprintf
  166. #define    _tscanf        scanf
  167. #define    _ftscanf    fscanf
  168. #define    _stscanf    sscanf
  169. #define    _fgettc        fgetc
  170. #define    _fgettchar    _fgetchar
  171. #define    _fgetts        fgets
  172. #define    _fputtc        fputc
  173. #define    _fputtchar    _fputchar
  174. #define    _fputts        fputs
  175. #define    _gettc        getc
  176. #define    _getts        gets
  177. #define    _puttc        putc
  178. #define    _putts        puts
  179. #define    _ungettc    ungetc
  180. #define    _tcstod        strtod
  181. #define    _tcstol        strtol
  182. #define _tcstoul    strtoul
  183. #define    _tcscat        strcat
  184. #define _tcschr        strchr
  185. #define _tcscmp        strcmp
  186. #define _tcscpy        strcpy
  187. #define _tcscspn    strcspn
  188. #define    _tcslen        strlen
  189. #define    _tcsncat    strncat
  190. #define    _tcsncmp    strncmp
  191. #define    _tcsncpy    strncpy
  192. #define    _tcspbrk    strpbrk
  193. #define    _tcsrchr    strrchr
  194. #define _tcsspn        strspn
  195. #define    _tcsstr        strstr
  196. #define _tcstok        strtok
  197. #define    _tcsdup        _strdup
  198. #define    _tcsicmp    _stricmp
  199. #define    _tcsnicmp    _strnicmp
  200. #define    _tcsnset    _strnset
  201. #define    _tcsrev        _strrev
  202. #define _tcsset        _strset
  203. #define    _tcslwr        _strlwr
  204. #define    _tcsupr        _strupr
  205. #define    _tcsxfrm    strxfrm
  206. #define    _tcscoll    strcoll
  207. #define    _tcsicoll    _stricoll
  208. #define    _istalpha    isalpha
  209. #define    _istupper    isupper
  210. #define    _istlower    islower
  211. #define    _istdigit    isdigit
  212. #define    _istxdigit    isxdigit
  213. #define    _istspace    isspace
  214. #define    _istpunct    ispunct
  215. #define    _istalnum    isalnum
  216. #define    _istprint    isprint
  217. #define    _istgraph    isgraph
  218. #define    _istcntrl    iscntrl
  219. #define    _istascii    isascii
  220. #define _totupper    toupper
  221. #define    _totlower    tolower
  222. #define _tcsftime    strftime
  223.  
  224. #endif    /* Not _UNICODE */
  225.  
  226. #endif    /* Not _TCHAR_H_ */
  227.  
  228.