mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.0 KiB
94 lines
2.0 KiB
/*++
|
|
|
|
Copyright (c) 1993 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
spstring.h
|
|
|
|
Abstract:
|
|
|
|
Header file for functions to manipulate strings.
|
|
These functions would ordinarily be performed by C Runtime routines
|
|
except that we want to avoid linking this device driver with
|
|
the kernel crt.
|
|
|
|
Author:
|
|
|
|
Ted Miller (tedm) 15-Jan-1994
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
//
|
|
// Character types.
|
|
//
|
|
#define _SP_NONE 0x00
|
|
#define _SP_SPACE 0x01
|
|
#define _SP_DIGIT 0x02
|
|
#define _SP_XDIGIT 0x04
|
|
#define _SP_UPPER 0x08
|
|
#define _SP_LOWER 0x10
|
|
|
|
//
|
|
// Optimize the size of the types array by noting that no characters
|
|
// above 'z' have any attributes we care about.
|
|
//
|
|
#define CTSIZE ('z'+1)
|
|
extern UCHAR _SpCharTypes[CTSIZE];
|
|
|
|
//
|
|
// Be careful using these as they evaluate their arguments more than once.
|
|
//
|
|
#define SpIsSpace(c) (((c) < CTSIZE) ? (_SpCharTypes[(c)] & _SP_SPACE) : FALSE)
|
|
#define SpIsDigit(c) (((c) < CTSIZE) ? (_SpCharTypes[(c)] & _SP_DIGIT) : FALSE)
|
|
#define SpIsXDigit(c) (((c) < CTSIZE) ? (_SpCharTypes[(c)] & _SP_XDIGIT) : FALSE)
|
|
#define SpIsUpper(c) (((c) < CTSIZE) ? (_SpCharTypes[(c)] & _SP_UPPER) : FALSE)
|
|
#define SpIsLower(c) (((c) < CTSIZE) ? (_SpCharTypes[(c)] & _SP_LOWER) : FALSE)
|
|
#define SpIsAlpha(c) (SpIsUpper(c) || SpIsLower(c))
|
|
#define SpToUpper(c) ((WCHAR)(SpIsLower(c) ? ((c)-(L'a'-L'A')) : (c)))
|
|
#define SpToLower(c) ((WCHAR)(SpIsUpper(c) ? ((c)+(L'a'-L'A')) : (c)))
|
|
|
|
VOID
|
|
SpStringToUpper(
|
|
IN PWSTR String
|
|
);
|
|
|
|
VOID
|
|
SpStringToLower(
|
|
IN PWSTR String
|
|
);
|
|
|
|
PWCHAR
|
|
SpFindCharFromListInString(
|
|
PWSTR String,
|
|
PWSTR CharList
|
|
);
|
|
|
|
unsigned
|
|
SpMultiByteStringToUnsigned(
|
|
IN PUCHAR String,
|
|
OUT PUCHAR *CharThatStoppedScan OPTIONAL
|
|
);
|
|
|
|
LONG
|
|
SpStringToLong(
|
|
IN PWSTR String,
|
|
OUT PWCHAR *EndOfValue,
|
|
IN unsigned Radix
|
|
);
|
|
|
|
PCHAR
|
|
SpConvertMultiSzWstrToStr(
|
|
IN PWCHAR Source,
|
|
IN ULONG Length
|
|
);
|
|
|
|
PWCHAR
|
|
SpConvertMultiSzStrToWstr(
|
|
IN PCHAR Source,
|
|
IN ULONG Length
|
|
);
|
|
|