- Use DDK macros to speed up size calculations on single-byte codepages.

svn path=/trunk/; revision=17700
This commit is contained in:
Alex Ionescu 2005-09-06 17:33:56 +00:00
parent a2af287dd8
commit 31a759e85c
3 changed files with 60 additions and 72 deletions

View file

@ -764,12 +764,18 @@ RtlUlonglongByteSwap(IN ULONGLONG Source);
/* /*
* Unicode->Ansi String Functions * Unicode->Ansi String Functions
*/ */
/* FIXME: Use macro */
#undef RtlUnicodeStringToAnsiSize
NTSYSAPI NTSYSAPI
ULONG ULONG
NTAPI NTAPI
RtlUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString); RtlxUnicodeStringToAnsiSize(IN PCUNICODE_STRING UnicodeString);
#ifdef NTOS_MODE_USER
#define RtlUnicodeStringToAnsiSize(STRING) ( \
NLS_MB_CODE_PAGE_TAG ? \
RtlxUnicodeStringToAnsiSize(STRING) : \
((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
)
#endif
NTSYSAPI NTSYSAPI
NTSTATUS NTSTATUS
@ -821,12 +827,21 @@ RtlUpcaseUnicodeToOemN(
ULONG UnicodeSize ULONG UnicodeSize
); );
/* FIXME: Use macro */
#undef RtlUnicodeStringToOemSize
NTSYSAPI NTSYSAPI
ULONG ULONG
NTAPI NTAPI
RtlUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString); RtlxUnicodeStringToOemSize(IN PCUNICODE_STRING UnicodeString);
#ifdef NTOS_MODE_USER
#define RtlUnicodeStringToOemSize(STRING) ( \
NLS_MB_OEM_CODE_PAGE_TAG ? \
RtlxUnicodeStringToOemSize(STRING) : \
((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
)
#define RtlUnicodeStringToCountedOemSize(STRING) ( \
(ULONG)(RtlUnicodeStringToOemSize(STRING) - sizeof(UNICODE_NULL)) \
)
#endif
NTSYSAPI NTSYSAPI
NTSTATUS NTSTATUS
@ -873,15 +888,24 @@ RtlUnicodeToMultiByteSize(
ULONG UnicodeSize ULONG UnicodeSize
); );
/*
* OEM to Unicode Functions
*/
/* FIXME: Use macro */
#undef RtlOemStringToUnicodeSize
NTSYSAPI NTSYSAPI
ULONG ULONG
NTAPI NTAPI
RtlOemStringToUnicodeSize(POEM_STRING AnsiString); RtlxOemStringToUnicodeSize(IN PCOEM_STRING OemString);
/*
* OEM to Unicode Functions
*/
#ifdef NTOS_MODE_USER
#define RtlOemStringToUnicodeSize(STRING) ( \
NLS_MB_OEM_CODE_PAGE_TAG ? \
RtlxOemStringToUnicodeSize(STRING) : \
((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
)
#define RtlOemStringToCountedUnicodeSize(STRING) ( \
(ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL)) \
)
#endif
NTSYSAPI NTSYSAPI
NTSTATUS NTSTATUS
@ -915,14 +939,13 @@ RtlAnsiStringToUnicodeString(
BOOLEAN AllocateDestinationString BOOLEAN AllocateDestinationString
); );
/* FIXME: Use macro */ #ifdef NTOS_MODE_USER
#undef RtlAnsiStringToUnicodeSize #define RtlAnsiStringToUnicodeSize(STRING) ( \
NTSYSAPI NLS_MB_CODE_PAGE_TAG ? \
ULONG RtlxAnsiStringToUnicodeSize(STRING) : \
NTAPI ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
RtlAnsiStringToUnicodeSize( )
PANSI_STRING AnsiString #endif
);
NTSYSAPI NTSYSAPI
BOOLEAN BOOLEAN

View file

@ -66,7 +66,7 @@ RtlAnsiCharToUnicodeChar (IN CHAR AnsiChar)
*/ */
ULONG ULONG
STDCALL STDCALL
RtlxAnsiStringToUnicodeSize(IN PANSI_STRING AnsiString) RtlxAnsiStringToUnicodeSize(IN PCANSI_STRING AnsiString)
{ {
ULONG Size; ULONG Size;
@ -884,7 +884,7 @@ RtlUnicodeStringToInteger(
ULONG ULONG
STDCALL STDCALL
RtlxUnicodeStringToOemSize( RtlxUnicodeStringToOemSize(
IN PUNICODE_STRING UnicodeString) IN PCUNICODE_STRING UnicodeString)
{ {
ULONG Size; ULONG Size;
@ -1830,7 +1830,7 @@ RtlUpcaseUnicodeStringToOemString (
*/ */
ULONG ULONG
STDCALL STDCALL
RtlxOemStringToUnicodeSize(IN POEM_STRING OemString) RtlxOemStringToUnicodeSize(IN PCOEM_STRING OemString)
{ {
ULONG Size; ULONG Size;
@ -1894,7 +1894,7 @@ RtlStringFromGUID (IN REFGUID Guid,
ULONG ULONG
STDCALL STDCALL
RtlxUnicodeStringToAnsiSize( RtlxUnicodeStringToAnsiSize(
IN PUNICODE_STRING UnicodeString) IN PCUNICODE_STRING UnicodeString)
{ {
ULONG Size; ULONG Size;
@ -2256,47 +2256,6 @@ RtlUpperString(PSTRING DestinationString,
DestinationString->Length = SourceString->Length; DestinationString->Length = SourceString->Length;
} }
/*
* @implemented
*/
ULONG STDCALL
RtlAnsiStringToUnicodeSize(IN PANSI_STRING AnsiString)
{
return RtlxAnsiStringToUnicodeSize(AnsiString);
}
/*
* @implemented
*/
ULONG STDCALL
RtlOemStringToUnicodeSize(IN POEM_STRING OemString)
{
return RtlxOemStringToUnicodeSize(OemString);
}
/*
* @implemented
*/
ULONG STDCALL
RtlUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString)
{
return RtlxUnicodeStringToAnsiSize(UnicodeString);
}
/*
* @implemented
*/
ULONG STDCALL
RtlUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString)
{
return RtlxUnicodeStringToOemSize(UnicodeString);
}
/* /*
* @implemented * @implemented
* *

View file

@ -5099,8 +5099,14 @@ InterlockedPushEntrySList(
NTOSAPI NTOSAPI
ULONG ULONG
DDKAPI DDKAPI
RtlAnsiStringToUnicodeSize( RtlxAnsiStringToUnicodeSize(
IN PANSI_STRING AnsiString); IN PCANSI_STRING AnsiString);
#define RtlAnsiStringToUnicodeSize(STRING) ( \
NLS_MB_CODE_PAGE_TAG ? \
RtlxAnsiStringToUnicodeSize(STRING) : \
((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR) \
)
NTOSAPI NTOSAPI
NTSTATUS NTSTATUS
@ -5720,11 +5726,11 @@ DDKFASTAPI
RtlUlonglongByteSwap( RtlUlonglongByteSwap(
IN ULONGLONG Source); IN ULONGLONG Source);
NTOSAPI #define RtlUnicodeStringToAnsiSize(STRING) ( \
ULONG NLS_MB_CODE_PAGE_TAG ? \
DDKAPI RtlxUnicodeStringToAnsiSize(STRING) : \
RtlUnicodeStringToAnsiSize( ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
IN PUNICODE_STRING UnicodeString); )
NTOSAPI NTOSAPI
NTSTATUS NTSTATUS