summaryrefslogtreecommitdiffstats
path: root/private/crt32/h/mbstring.h
blob: 5b05f36905e73a2c3e0379d371786379b088c39b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
/***
* mbstring.h - MBCS string manipulation macros and functions
*
*	Copyright (c) 1990-1993, Microsoft Corporation.  All rights reserved.
*
*Purpose:
*	This file contains macros and function declarations for the MBCS
*	string manipulation functions.
*
*Revision History:
*	11-19-92  KRS	Ported from 16-bit sources.
*	02-23-93  SKS	Update copyright to 1993
*	05-24-93  KRS	Added new functions from Ikura.
*	07-09-93  KRS	Put proper switches around _ismbblead/trail.
*	07-14-93  KRS	Add new mbsnbxxx functions: byte-count versions.
*	08-12-93  CFW   Fix ifstrip macro name.
*
*******************************************************************************/

#include <string.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _INTERNAL_IFSTRIP_
#ifdef COMBOINC
#if defined(_DLL) && !defined(MTHREAD)
#error Cannot define _DLL without MTHREAD
#endif
#endif

#endif	/* !_INTERNAL_IFSTRIP */

/*
 * Conditional macro definition for function calling type and variable type
 * qualifiers.
 */
#if   ( (_MSC_VER >= 800) && (_M_IX86 >= 300) )

/*
 * Definitions for MS C8-32 (386/486) compiler
 */
#define _CRTAPI1 __cdecl
#define _CRTAPI2 __cdecl

#else

/*
 * Other compilers (e.g., MIPS)
 */
#define _CRTAPI1
#define _CRTAPI2

#endif

#ifndef _SIZE_T_DEFINED
typedef unsigned int size_t;
#define _SIZE_T_DEFINED
#endif

#ifndef _MBCS
/*
 * SBCS - Single Byte Character Set
 */

#define _mbscat     strcat
#define _mbschr     strchr
#define _mbscmp     strcmp
#define _mbscpy     strcpy
#define _mbscspn    strcspn
#define _mbsdec     _strdec
#define _mbsdup     _strdup
#define _mbsicmp    _stricmp
#define _mbsinc     _strinc
#define _mbslen     strlen
#define _mbslwr     strlwr
#define _mbsnbcat   strncat
#define _mbsnbcmp   strncmp
#define _mbsnbcnt   _strncnt
#define _mbsnbcpy   strncpy
#define _mbsnbicmp  _strnicmp
#define _mbsnbset   _strnset
#define _mbsncat    strncat
#define _mbsnccnt   _strncnt
#define _mbsncmp    strncmp
#define _mbsncpy    strncpy
#define _mbsnextc   _strnextc
#define _mbsnicmp   _strnicmp
#define _mbsninc    _strninc
#define _mbsnset    _strnset
#define _mbsrchr    strrchr
#define _mbsrev     _strrev
#define _mbspbrk    strpbrk
#define _mbsset     _strset
#define _mbsspn     strspn
#define _mbsspnp    _strspnp
#define _mbsstr     strstr
#define _mbstok     strtok
#define _mbsupr     _strupr

#define _mbclen(_cpc)    (1)
#define _mbccpy(_pc1, _cpc2)    (*(_pc1) = *(_cpc2))
#define _mbccmp(_cpc1, _cpc2)	(((unsigned char)*(_cpc1)) - ((unsigned char)*(_cpc2)))

/*  Character function mappings.    */

#define _ismbcalpha isalpha
#define _ismbcdigit isdigit
#define _ismbclegal(_c) (1)
#define _ismbclower islower
#define _ismbcprint isprint
#define _ismbcspace isspace
#define _ismbcupper isupper

#define _ismbblead(_c) (0)
#define _ismbbtrail(_c) (0)
#define _ismbslead(_s,_c) (0)
#define _ismbstrail(_s,_c) (0)

/* SBCS routines needed for MBCS mappings */

unsigned char * _CRTAPI1 _strdec(const unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _strinc(const unsigned char *);
size_t _CRTAPI1 _strncnt(const unsigned char *, size_t);
unsigned int _CRTAPI1 _strnextc(const unsigned char *);
unsigned char * _CRTAPI1 _strninc(const unsigned char *, size_t);
unsigned char * _CRTAPI1 _strspnp(const unsigned char *, const unsigned char *);

#else
/*
 * MBCS - Multi-Byte Character Set
 */

#ifndef _MBSTRING_DEFINED

/* function prototypes */

unsigned int _CRTAPI1 _mbbtombc(unsigned int);
int _CRTAPI1 _mbbtype(unsigned char, int);
unsigned int _CRTAPI1 _mbctombb(unsigned int);
int _CRTAPI1 _mbsbtype(const unsigned char *, size_t);
unsigned char * _CRTAPI1 _mbscat(unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _mbschr(const unsigned char *, unsigned int);
int _CRTAPI1 _mbscmp(const unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _mbscpy(unsigned char *, const unsigned char *);
size_t _CRTAPI1 _mbscspn(const unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _mbsdec(const unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _mbsdup(const unsigned char *);
int _CRTAPI1 _mbsicmp(const unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _mbsinc(const unsigned char *);
size_t _CRTAPI1 _mbslen(const unsigned char *);
unsigned char * _CRTAPI1 _mbslwr(unsigned char *);
unsigned char * _CRTAPI1 _mbsnbcat(unsigned char *, const unsigned char *, size_t);
int _CRTAPI1 _mbsnbcmp(const unsigned char *, const unsigned char *, size_t);
size_t _CRTAPI1 _mbsnbcnt(const unsigned char *, size_t);
unsigned char * _CRTAPI1 _mbsnbcpy(unsigned char *, const unsigned char *, size_t);
int _CRTAPI1 _mbsnbicmp(const unsigned char *, const unsigned char *, size_t);
unsigned char * _CRTAPI1 _mbsnbset(unsigned char *, unsigned int, size_t);
unsigned char * _CRTAPI1 _mbsncat(unsigned char *, const unsigned char *, size_t);
size_t _CRTAPI1 _mbsnccnt(const unsigned char *, size_t);
int _CRTAPI1 _mbsncmp(const unsigned char *, const unsigned char *, size_t);
unsigned char * _CRTAPI1 _mbsncpy(unsigned char *, const unsigned char *, size_t);
unsigned int _CRTAPI1 _mbsnextc (const unsigned char *);
int _CRTAPI1 _mbsnicmp(const unsigned char *, const unsigned char *, size_t);
unsigned char * _CRTAPI1 _mbsninc(const unsigned char *, size_t);
unsigned char * _CRTAPI1 _mbsnset(unsigned char *, unsigned int, size_t);
unsigned char * _CRTAPI1 _mbspbrk(const unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _mbsrchr(const unsigned char *, unsigned int);
unsigned char * _CRTAPI1 _mbsrev(unsigned char *);
unsigned char * _CRTAPI1 _mbsset(unsigned char *, unsigned int);
size_t _CRTAPI1 _mbsspn(const unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _mbsspnp(const unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _mbsstr(const unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _mbstok(unsigned char *, const unsigned char *);
unsigned char * _CRTAPI1 _mbsupr(unsigned char *);

size_t _CRTAPI1 _mbclen(const unsigned char *);
void _CRTAPI1 _mbccpy(unsigned char *, const unsigned char *);
#define _mbccmp(_cpc1, _cpc2) _mbsncmp((_cpc1),(_cpc2),1)

/* character routines */

int _CRTAPI1 _ismbcalpha(unsigned int);
int _CRTAPI1 _ismbcdigit(unsigned int);
int _CRTAPI1 _ismbclegal(unsigned int);
int _CRTAPI1 _ismbclower(unsigned int);
int _CRTAPI1 _ismbcprint(unsigned int);
int _CRTAPI1 _ismbcspace(unsigned int);
int _CRTAPI1 _ismbcupper(unsigned int);

unsigned int _CRTAPI1 _mbctolower(unsigned int);
unsigned int _CRTAPI1 _mbctoupper(unsigned int);

#define _MBSTRING_DEFINED
#endif

#ifndef _MBLEADTRAIL_DEFINED
int _CRTAPI1 _ismbblead( unsigned int );
int _CRTAPI1 _ismbbtrail( unsigned int );
int _CRTAPI1 _ismbslead( const unsigned char *, const unsigned char *);
int _CRTAPI1 _ismbstrail( const unsigned char *, const unsigned char *);
#define _MBLEADTRAIL_DEFINED
#endif

#ifdef _KANJI

/*  Kanji specific prototypes.	*/

int _CRTAPI1 _ismbchira(unsigned int);
int _CRTAPI1 _ismbckata(unsigned int);
int _CRTAPI1 _ismbcsymbol(unsigned int);
int _CRTAPI1 _ismbcl0(unsigned int);
int _CRTAPI1 _ismbcl1(unsigned int);
int _CRTAPI1 _ismbcl2(unsigned int);
unsigned int _CRTAPI1 _mbcjistojms(unsigned int);
unsigned int _CRTAPI1 _mbcjmstojis(unsigned int);
unsigned int _CRTAPI1 _mbctohira(unsigned int);
unsigned int _CRTAPI1 _mbctokata(unsigned int);

#endif			/* KANJI */

#endif			/* MBCS */

#ifdef __cplusplus
}
#endif