ReactOS 0.4.16-dev-2104-gb84fa49
ctype.c File Reference
#include <locale.h>
#include "msvcrt.h"
#include "winnls.h"
Include dependency graph for ctype.c:

Go to the source code of this file.

Macros

#define _C_   _CONTROL
 
#define _S_   _SPACE
 
#define _P_   _PUNCT
 
#define _D_   _DIGIT
 
#define _H_   _HEX
 
#define _U_   _UPPER
 
#define _L_   _LOWER
 
#define B110   _BLANK
 
#define D120   4
 
#define S140   0
 
#define L140   0
 
#define C140   0
 

Functions

unsigned short **CDECL __p__pctype (void)
 
const unsigned short *CDECL __pctype_func (void)
 
unsigned short **CDECL __p__pwctype (void)
 
const unsigned short *CDECL __pwctype_func (void)
 
int CDECL _isctype_l (int c, int type, _locale_t locale)
 
int CDECL _isctype (int c, int type)
 
int CDECL _isalnum_l (int c, _locale_t locale)
 
int CDECL isalnum (int c)
 
int CDECL _isalpha_l (int c, _locale_t locale)
 
int CDECL isalpha (int c)
 
int CDECL _iscntrl_l (int c, _locale_t locale)
 
int CDECL iscntrl (int c)
 
int CDECL _isdigit_l (int c, _locale_t locale)
 
int CDECL isdigit (int c)
 
int CDECL _isgraph_l (int c, _locale_t locale)
 
int CDECL isgraph (int c)
 
int CDECL _isleadbyte_l (int c, _locale_t locale)
 
int CDECL isleadbyte (int c)
 
int CDECL _islower_l (int c, _locale_t locale)
 
int CDECL islower (int c)
 
int CDECL _isprint_l (int c, _locale_t locale)
 
int CDECL isprint (int c)
 
int CDECL ispunct (int c)
 
int CDECL _ispunct_l (int c, _locale_t locale)
 
int CDECL _isspace_l (int c, _locale_t locale)
 
int CDECL isspace (int c)
 
int CDECL _isupper_l (int c, _locale_t locale)
 
int CDECL isupper (int c)
 
int CDECL _isxdigit_l (int c, _locale_t locale)
 
int CDECL isxdigit (int c)
 
int CDECL _isblank_l (int c, _locale_t locale)
 
int CDECL isblank (int c)
 
int CDECL __isascii (int c)
 
int CDECL __toascii (int c)
 
int CDECL iswascii (wchar_t c)
 
int CDECL __iscsym (int c)
 
int CDECL __iscsymf (int c)
 
int CDECL __iswcsym (wint_t c)
 
int CDECL __iswcsymf (wint_t c)
 
int CDECL _toupper_l (int c, _locale_t locale)
 
int CDECL toupper (int c)
 
int CDECL _toupper (int c)
 
int CDECL _tolower_l (int c, _locale_t locale)
 
int CDECL tolower (int c)
 
int CDECL _tolower (int c)
 

Variables

WORD MSVCRT__ctype [257]
 
WORD MSVCRT__wctype [257]
 
WORDMSVCRT__pwctype = MSVCRT__wctype + 1
 

Macro Definition Documentation

◆ _C_

#define _C_   _CONTROL

Definition at line 26 of file ctype.c.

◆ _D_

#define _D_   _DIGIT

Definition at line 29 of file ctype.c.

◆ _H_

#define _H_   _HEX

Definition at line 30 of file ctype.c.

◆ _L_

#define _L_   _LOWER

Definition at line 32 of file ctype.c.

◆ _P_

#define _P_   _PUNCT

Definition at line 28 of file ctype.c.

◆ _S_

#define _S_   _SPACE

Definition at line 27 of file ctype.c.

◆ _U_

#define _U_   _UPPER

Definition at line 31 of file ctype.c.

◆ B110

#define B110   _BLANK

Definition at line 55 of file ctype.c.

◆ C140

#define C140   0

Definition at line 73 of file ctype.c.

◆ D120

#define D120   4

Definition at line 63 of file ctype.c.

◆ L140

#define L140   0

Definition at line 72 of file ctype.c.

◆ S140

#define S140   0

Definition at line 71 of file ctype.c.

Function Documentation

◆ __isascii()

int CDECL __isascii ( int  c)

Definition at line 417 of file ctype.c.

418{
419 return ((unsigned)c < 0x80);
420}
const GLubyte * c
Definition: glext.h:8905

◆ __iscsym()

int CDECL __iscsym ( int  c)

Definition at line 442 of file ctype.c.

443{
444 return (c < 127 && (isalnum(c) || c == '_'));
445}
int CDECL isalnum(int c)
Definition: ctype.c:214

◆ __iscsymf()

int CDECL __iscsymf ( int  c)

Definition at line 450 of file ctype.c.

451{
452 return (c < 127 && (isalpha(c) || c == '_'));
453}
#define isalpha(c)
Definition: acclib.h:74

◆ __iswcsym()

int CDECL __iswcsym ( wint_t  c)

Definition at line 458 of file ctype.c.

459{
460 return (iswalnum(c) || c == '_');
461}
#define iswalnum(_c)
Definition: ctype.h:671

◆ __iswcsymf()

int CDECL __iswcsymf ( wint_t  c)

Definition at line 466 of file ctype.c.

467{
468 return (iswalpha(c) || c == '_');
469}
#define iswalpha(_c)
Definition: ctype.h:664

◆ __p__pctype()

unsigned short **CDECL __p__pctype ( void  )

Definition at line 133 of file ctype.c.

134{
135 return &get_locinfo()->pctype;
136}
#define get_locinfo()
Definition: winesup.h:25

Referenced by Test__ctype().

◆ __p__pwctype()

unsigned short **CDECL __p__pwctype ( void  )

Definition at line 149 of file ctype.c.

150{
151 return &MSVCRT__pwctype;
152}
WORD * MSVCRT__pwctype
Definition: ctype.c:128

Referenced by Test__wctype().

◆ __pctype_func()

const unsigned short *CDECL __pctype_func ( void  )

Definition at line 141 of file ctype.c.

142{
143 return get_locinfo()->pctype;
144}

◆ __pwctype_func()

const unsigned short *CDECL __pwctype_func ( void  )

Definition at line 157 of file ctype.c.

158{
159 return MSVCRT__pwctype;
160}

◆ __toascii()

int CDECL __toascii ( int  c)

Definition at line 425 of file ctype.c.

426{
427 return (unsigned)c & 0x7f;
428}

◆ _isalnum_l()

int CDECL _isalnum_l ( int  c,
_locale_t  locale 
)

Definition at line 206 of file ctype.c.

207{
208 return _isctype_l( c, _ALPHA | _DIGIT, locale );
209}
Definition: _locale.h:75
int CDECL _isctype_l(int c, int type, _locale_t locale)
Definition: ctype.c:165
#define _ALPHA
#define _DIGIT

◆ _isalpha_l()

int CDECL _isalpha_l ( int  c,
_locale_t  locale 
)

Definition at line 222 of file ctype.c.

223{
224 return _isctype_l( c, _ALPHA, locale );
225}

◆ _isblank_l()

int CDECL _isblank_l ( int  c,
_locale_t  locale 
)

Definition at line 398 of file ctype.c.

399{
400#if _MSVCR_VER < 140
401 if (c == '\t') return _BLANK;
402#endif
403 return _isctype_l( c, _BLANK, locale );
404}
#define _BLANK

◆ _iscntrl_l()

int CDECL _iscntrl_l ( int  c,
_locale_t  locale 
)

Definition at line 238 of file ctype.c.

239{
240 return _isctype_l( c, _CONTROL, locale );
241}
#define _CONTROL

◆ _isctype()

int CDECL _isctype ( int  c,
int  type 
)

Definition at line 198 of file ctype.c.

199{
200 return _isctype_l(c, type, NULL);
201}
#define NULL
Definition: types.h:112
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545

Referenced by _tolower(), _toupper(), isalnum(), isalpha(), isblank(), iscntrl(), isdigit(), isgraph(), isleadbyte(), islower(), isprint(), ispunct(), isspace(), isupper(), iswctype(), isxdigit(), test_isblank(), tolower(), and toupper().

◆ _isctype_l()

int CDECL _isctype_l ( int  c,
int  type,
_locale_t  locale 
)

Definition at line 165 of file ctype.c.

166{
168
169 if(!locale)
171 else
172 locinfo = locale->locinfo;
173
174 if (c >= -1 && c <= 255)
175 return locinfo->pctype[c] & type;
176
177 if (locinfo->mb_cur_max != 1 && c > 0)
178 {
179 /* FIXME: Is there a faster way to do this? */
180 WORD typeInfo;
181 char convert[3], *pconv = convert;
182
183 if (locinfo->pctype[(UINT)c >> 8] & _LEADBYTE)
184 *pconv++ = (UINT)c >> 8;
185 *pconv++ = c & 0xff;
186 *pconv = 0;
187
188 if (GetStringTypeExA(locinfo->lc_handle[LC_CTYPE],
189 CT_CTYPE1, convert, convert[1] ? 2 : 1, &typeInfo))
190 return typeInfo & type;
191 }
192 return 0;
193}
BOOL WINAPI GetStringTypeExA(LCID locale, DWORD type, LPCSTR src, INT count, LPWORD chartype)
Definition: locale.c:3259
#define _LEADBYTE
#define LC_CTYPE
Definition: locale.h:27
else locinfo
Definition: scanf.h:225
unsigned short WORD
Definition: ntddk_ex.h:93
#define c
Definition: ke_i.h:80
int convert
Definition: msacm.c:1374
unsigned int UINT
Definition: ndis.h:50
#define CT_CTYPE1
Definition: winnls.h:255

Referenced by _isalnum_l(), _isalpha_l(), _isblank_l(), _iscntrl_l(), _isctype(), _isdigit_l(), _isgraph_l(), _isleadbyte_l(), _islower_l(), _isprint_l(), _ispunct_l(), _isspace_l(), _isupper_l(), _isxdigit_l(), fast_check_current_locale(), and fast_check_given_locale().

◆ _isdigit_l()

int CDECL _isdigit_l ( int  c,
_locale_t  locale 
)

Definition at line 254 of file ctype.c.

255{
256 return _isctype_l( c, _DIGIT, locale );
257}

◆ _isgraph_l()

int CDECL _isgraph_l ( int  c,
_locale_t  locale 
)

Definition at line 270 of file ctype.c.

271{
272 return _isctype_l( c, _ALPHA | _DIGIT | _PUNCT, locale );
273}
#define _PUNCT

◆ _isleadbyte_l()

int CDECL _isleadbyte_l ( int  c,
_locale_t  locale 
)

Definition at line 286 of file ctype.c.

287{
288 return _isctype_l( c, _LEADBYTE, locale );
289}

◆ _islower_l()

int CDECL _islower_l ( int  c,
_locale_t  locale 
)

Definition at line 302 of file ctype.c.

303{
304 return _isctype_l( c, _LOWER, locale );
305}
#define _LOWER

◆ _isprint_l()

int CDECL _isprint_l ( int  c,
_locale_t  locale 
)

Definition at line 318 of file ctype.c.

319{
320 return _isctype_l( c, _ALPHA | _DIGIT | _BLANK | _PUNCT, locale );
321}

◆ _ispunct_l()

int CDECL _ispunct_l ( int  c,
_locale_t  locale 
)

Definition at line 342 of file ctype.c.

343{
344 return _isctype_l( c, _PUNCT, locale );
345}

◆ _isspace_l()

int CDECL _isspace_l ( int  c,
_locale_t  locale 
)

Definition at line 350 of file ctype.c.

351{
352 return _isctype_l( c, _SPACE, locale );
353}
#define _SPACE

◆ _isupper_l()

int CDECL _isupper_l ( int  c,
_locale_t  locale 
)

Definition at line 366 of file ctype.c.

367{
368 return _isctype_l( c, _UPPER, locale );
369}
#define _UPPER

◆ _isxdigit_l()

int CDECL _isxdigit_l ( int  c,
_locale_t  locale 
)

Definition at line 382 of file ctype.c.

383{
384 return _isctype_l( c, _HEX, locale );
385}
#define _HEX

◆ _tolower()

int CDECL _tolower ( int  c)

Definition at line 582 of file ctype.c.

583{
584 return c + 0x20; /* sic */
585}

◆ _tolower_l()

int CDECL _tolower_l ( int  c,
_locale_t  locale 
)

Definition at line 532 of file ctype.c.

533{
535 unsigned char str[2], *p = str, ret[2];
536
537 if(!locale)
539 else
540 locinfo = locale->locinfo;
541
542 if((unsigned)c < 256)
543 {
544 if(locinfo->pctype[c] & _LEADBYTE)
545 return c;
546 return locinfo->pclmap[c];
547 }
548
549 if(locinfo->pctype[(c>>8)&255] & _LEADBYTE)
550 *p++ = (c>>8) & 255;
551 else {
552 *_errno() = EILSEQ;
553 str[1] = 0;
554 }
555 *p++ = c & 255;
556
558 (char*)str, p-str, (char*)ret, 2, locinfo->lc_codepage, 0))
559 {
560 case 0:
561 return c;
562 case 1:
563 return ret[0];
564 default:
565 return ret[0] + (ret[1]<<8);
566 }
567}
int *CDECL _errno(void)
Definition: errno.c:215
#define EILSEQ
Definition: errno.h:62
int CDECL __crtLCMapStringA(LCID lcid, DWORD mapflags, const char *src, int srclen, char *dst, int dstlen, unsigned int codepage, int xflag)
Definition: locale.c:877
return ret
Definition: mutex.c:146
GLfloat GLfloat p
Definition: glext.h:8902
const WCHAR * str
#define LCMAP_LOWERCASE
Definition: winnls.h:197

Referenced by _mbslwr_l(), _mbslwr_s_l(), _memicmp_l(), _strlwr_s_l(), _strnicmp_l(), _strtoi64_l(), _strtoui64_l(), test__tolower_l(), and tolower().

◆ _toupper()

int CDECL _toupper ( int  c)

Definition at line 524 of file ctype.c.

525{
526 return c - 0x20; /* sic */
527}

◆ _toupper_l()

int CDECL _toupper_l ( int  c,
_locale_t  locale 
)

Definition at line 474 of file ctype.c.

475{
477 unsigned char str[2], *p = str, ret[2];
478
479 if(!locale)
481 else
482 locinfo = locale->locinfo;
483
484 if((unsigned)c < 256)
485 {
486 if(locinfo->pctype[c] & _LEADBYTE)
487 return c;
488 return locinfo->pcumap[c];
489 }
490
491 if(locinfo->pctype[(c>>8)&255] & _LEADBYTE)
492 *p++ = (c>>8) & 255;
493 else {
494 *_errno() = EILSEQ;
495 str[1] = 0;
496 }
497 *p++ = c & 255;
498
500 (char*)str, p-str, (char*)ret, 2, locinfo->lc_codepage, 0))
501 {
502 case 0:
503 return c;
504 case 1:
505 return ret[0];
506 default:
507 return ret[0] + (ret[1]<<8);
508 }
509}
#define LCMAP_UPPERCASE
Definition: winnls.h:198

Referenced by _mbsupr_l(), _mbsupr_s_l(), _strupr_s_l(), and toupper().

◆ isalnum()

◆ isalpha()

int CDECL isalpha ( int  c)

Definition at line 230 of file ctype.c.

231{
232 return _isctype( c, _ALPHA );
233}

◆ isblank()

int CDECL isblank ( int  c)

Definition at line 409 of file ctype.c.

410{
411 return c == '\t' || _isctype( c, _BLANK );
412}

◆ iscntrl()

◆ isdigit()

int CDECL isdigit ( int  c)

Definition at line 262 of file ctype.c.

263{
264 return _isctype( c, _DIGIT );
265}

◆ isgraph()

int CDECL isgraph ( int  c)

Definition at line 278 of file ctype.c.

279{
280 return _isctype( c, _ALPHA | _DIGIT | _PUNCT );
281}

Referenced by _ismbbgraph(), compress_block(), and gen_codes().

◆ isleadbyte()

int CDECL isleadbyte ( int  c)

Definition at line 294 of file ctype.c.

295{
296 return _isctype( c, _LEADBYTE );
297}

◆ islower()

int CDECL islower ( int  c)

Definition at line 310 of file ctype.c.

311{
312 return _isctype( c, _LOWER );
313}

◆ isprint()

int CDECL isprint ( int  c)

Definition at line 326 of file ctype.c.

327{
328 return _isctype( c, _ALPHA | _DIGIT | _BLANK | _PUNCT );
329}

◆ ispunct()

int CDECL ispunct ( int  c)

Definition at line 334 of file ctype.c.

335{
336 return _isctype( c, _PUNCT );
337}

Referenced by _Locale_init(), and UnDosLine().

◆ isspace()

int CDECL isspace ( int  c)

Definition at line 358 of file ctype.c.

359{
360 return _isctype( c, _SPACE );
361}

◆ isupper()

int CDECL isupper ( int  c)

Definition at line 374 of file ctype.c.

375{
376 return _isctype( c, _UPPER );
377}

◆ iswascii()

int CDECL iswascii ( wchar_t  c)

Definition at line 434 of file ctype.c.

435{
436 return ((unsigned)c < 0x80);
437}

◆ isxdigit()

int CDECL isxdigit ( int  c)

Definition at line 390 of file ctype.c.

391{
392 return _isctype( c, _HEX );
393}

◆ tolower()

◆ toupper()

int CDECL toupper ( int  c)

Definition at line 514 of file ctype.c.

515{
517 return c>='a' && c<='z' ? c-'a'+'A' : c;
518 return _toupper_l(c, NULL);
519}
int CDECL _toupper_l(int c, _locale_t locale)
Definition: ctype.c:474

Referenced by _getdiskfree(), _ILCreateDrive(), _Locale_toupper(), _main(), _mbbtoupper(), _mbsicmp(), _mbsicoll(), _mbsupr(), _memicmp(), _stricmp(), _strnicmp(), _strupr(), _Success_(), AcpiNsBuildInternalName(), AcpiNsRepair_HID(), AcpiUtStrupr(), Addhost(), change_section_attribs(), Close(), ConvertPathCase(), DliHook(), DosIfCharYesNo(), DosToUpper(), DosToUpperStrN(), DosToUpperStrZ(), EtfspCompareNames(), ExceptionFilter(), FD31_WMInitDialog(), file_cvt(), find_str(), Format(), format_apicontract_macro(), getbyte(), GetExpandedNameA(), getVKNum(), InteractiveConsole(), FileTypeManager::is_exe_file(), iso9660_file_length(), KdbSymInit(), Link(), main(), MCICDA_Open(), mmioStringToFOURCCA(), NPAddConnection3(), Open(), parseArguments(), PathMatchSingleMaskA(), PeLdrpCompareDllName(), PrintDriveLetter(), ProcessCmdLine(), Protect(), put_resource_id(), read_rcfile(), regdump(), RepairIntroPage(), Save(), SdbMakeIndexKeyFromString(), ServeOneClient(), ShimLib_StrAEqualsWNC(), str_to_enum(), StrCmpPath(), SymMatchFileName(), test_C_locale(), test_GetDrive(), test_GetVolumeInformationA(), test_PathNameA(), test_query_dos_deviceA(), test_RtlIsNameLegalDOS8Dot3(), to_upper(), toupper_str(), UpgradeRepairPage(), VfdBroadcastLink(), VfdGetLocalLink(), VfdSetGlobalLink(), VfdSetLocalLink(), WelcomePage(), wtstrcasecmp(), XCOPY_DoCopy(), XCOPY_ParseCommandLine(), XCOPY_ProcessDestParm(), xkeymap_read(), xmlAddEncodingAlias(), xmlFindCharEncodingHandler(), xmlGetEncodingAlias(), xmlNewCharEncodingHandler(), and xmlParseCharEncoding().

Variable Documentation

◆ MSVCRT__ctype

WORD MSVCRT__ctype[257]
Initial value:
= {
0, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _C_, _S_|_C_, _S_|_C_,
_P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_, _P_,
_U_, _U_, _U_, _U_, _U_, _U_, _U_, _U_, _U_, _U_, _U_, _U_, _U_, _U_,
_L_, _L_, _L_, _L_, _L_, _L_, _L_, _L_, _L_, _L_, _P_, _P_, _P_, _P_,
_C_, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
#define _D_
Definition: ctype.c:29
#define _P_
Definition: ctype.c:28
#define _L_
Definition: ctype.c:32
#define _C_
Definition: ctype.c:26
#define _U_
Definition: ctype.c:31
#define _S_
Definition: ctype.c:27
#define _H_
Definition: ctype.c:30

Definition at line 34 of file ctype.c.

Referenced by create_locinfo().

◆ MSVCRT__pwctype

WORD* MSVCRT__pwctype = MSVCRT__wctype + 1

Definition at line 128 of file ctype.c.

Referenced by __p__pwctype(), __pwctype_func(), and _iswctype_l().

◆ MSVCRT__wctype

WORD MSVCRT__wctype[257]

Definition at line 75 of file ctype.c.