summaryrefslogblamecommitdiffstats
path: root/private/crt32/h/mbstring.h
blob: 5b05f36905e73a2c3e0379d371786379b088c39b (plain) (tree)


































































































































































































































                                                                                       
/***
* 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