#define NDEBUG
#include <ntdll/ntdll.h>
+
+extern PUSHORT NlsUnicodeUpcaseTable;
+extern PUSHORT NlsUnicodeLowercaseTable;
+
+WCHAR RtlDowncaseUnicodeChar(IN WCHAR Source);
+
/* FUNCTIONS *****************************************************************/
-WCHAR
-STDCALL
-RtlAnsiCharToUnicodeChar(
- IN CHAR AnsiChar)
+WCHAR STDCALL
+RtlAnsiCharToUnicodeChar (IN CHAR AnsiChar)
{
- ULONG Size;
- WCHAR UnicodeChar;
+ ULONG Size;
+ WCHAR UnicodeChar;
- Size = 1;
+ Size = 1;
#if 0
- Size = (NlsLeadByteInfo[AnsiChar] == 0) ? 1 : 2;
+ Size = (NlsLeadByteInfo[AnsiChar] == 0) ? 1 : 2;
#endif
- RtlMultiByteToUnicodeN (&UnicodeChar,
- sizeof(WCHAR),
- NULL,
- &AnsiChar,
- Size);
+ RtlMultiByteToUnicodeN (&UnicodeChar,
+ sizeof(WCHAR),
+ NULL,
+ &AnsiChar,
+ Size);
- return UnicodeChar;
+ return UnicodeChar;
}
-ULONG
-STDCALL
-RtlAnsiStringToUnicodeSize(
- IN PANSI_STRING AnsiString)
+/*
+ * @implemented
+ */
+ULONG STDCALL
+RtlAnsiStringToUnicodeSize (IN PANSI_STRING AnsiString)
{
- ULONG Size;
+ ULONG Size;
- RtlMultiByteToUnicodeSize (&Size,
- AnsiString->Buffer,
- AnsiString->Length);
+ RtlMultiByteToUnicodeSize (&Size,
+ AnsiString->Buffer,
+ AnsiString->Length);
- return Size;
+ return Size;
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlAnsiStringToUnicodeString(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlAppendAsciizToString(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlAppendStringToString(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlAppendUnicodeStringToString(
IN OUT PUNICODE_STRING Destination,
IN PUNICODE_STRING Source)
{
- PWCHAR Src;
- PWCHAR Dest;
- ULONG i;
if ((Source->Length + Destination->Length) >= Destination->MaximumLength)
return STATUS_BUFFER_TOO_SMALL;
- Src = Source->Buffer;
- Dest = Destination->Buffer + (Destination->Length / sizeof (WCHAR));
- for (i = 0; i < (Source->Length / sizeof(WCHAR)); i++)
- {
- *Dest = *Src;
- Dest++;
- Src++;
- }
- *Dest = 0;
-
- Destination->Length += Source->Length;
+ memcpy((PVOID)Destination->Buffer + Destination->Length, Source->Buffer, Source->Length);
+ Destination->Length += Source->Length;
+ Destination->Buffer[Destination->Length / sizeof(WCHAR)] = 0;
return STATUS_SUCCESS;
}
+/*
+ * @implemented
+ */
NTSTATUS STDCALL
RtlAppendUnicodeToString(IN OUT PUNICODE_STRING Destination,
IN PWSTR Source)
{
- PWCHAR Src;
- PWCHAR Dest;
- ULONG i;
ULONG slen;
slen = wcslen(Source) * sizeof(WCHAR);
if (Destination->Length + slen >= Destination->MaximumLength)
return(STATUS_BUFFER_TOO_SMALL);
- Src = Source;
- Dest = Destination->Buffer + (Destination->Length / sizeof(WCHAR));
-
- for (i = 0; i < (slen / sizeof(WCHAR)); i++)
- {
- *Dest = *Src;
- Dest++;
- Src++;
- }
- *Dest = 0;
-
+ memcpy((PVOID)Destination->Buffer + Destination->Length, Source, slen);
Destination->Length += slen;
+ Destination->Buffer[Destination->Length / sizeof(WCHAR)] = 0;
return(STATUS_SUCCESS);
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlCharToInteger(
}
+/*
+ * @implemented
+ */
LONG
STDCALL
RtlCompareString(
}
+/*
+ * @implemented
+ */
LONG
STDCALL
RtlCompareUnicodeString(
}
+/*
+ * @implemented
+ */
VOID
STDCALL
RtlCopyString(
IN OUT PSTRING DestinationString,
IN PSTRING SourceString)
{
- ULONG copylen, i;
- PCHAR Src, Dest;
+ ULONG copylen;
if (SourceString == NULL)
{
copylen = min (DestinationString->MaximumLength - sizeof(CHAR),
SourceString->Length);
- Src = SourceString->Buffer;
- Dest = DestinationString->Buffer;
-
- for (i = 0; i < copylen; i++)
- {
- *Dest = *Src;
- Dest++;
- Src++;
- }
- *Dest = 0;
-
+ memcpy(DestinationString->Buffer, SourceString->Buffer, copylen);
DestinationString->Length = copylen;
+ DestinationString->Buffer[copylen] = 0;
}
+/*
+ * @implemented
+ */
VOID
STDCALL
RtlCopyUnicodeString(
IN OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString)
{
- ULONG copylen, i;
- PWCHAR Src, Dest;
+ ULONG copylen;
if (SourceString == NULL)
{
copylen = min (DestinationString->MaximumLength - sizeof(WCHAR),
SourceString->Length);
- Src = SourceString->Buffer;
- Dest = DestinationString->Buffer;
-
- for (i = 0; i < (copylen / sizeof (WCHAR)); i++)
- {
- *Dest = *Src;
- Dest++;
- Src++;
- }
- *Dest = 0;
-
+ memcpy(DestinationString->Buffer, SourceString->Buffer, copylen);
+ DestinationString->Buffer[copylen / sizeof(WCHAR)] = 0;
DestinationString->Length = copylen;
}
+/*
+ * @implemented
+ */
BOOLEAN
STDCALL
RtlCreateUnicodeString(
}
+/*
+ * @implemented
+ */
BOOLEAN
STDCALL
RtlCreateUnicodeStringFromAsciiz(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlDowncaseUnicodeString(
}
else
{
- /* FIXME: characters above 'Z' */
- *Dest = *Src;
+ *Dest = RtlDowncaseUnicodeChar(*Src);
}
Dest++;
}
+/*
+ * @implemented
+ */
BOOLEAN
STDCALL
RtlEqualComputerName(
}
+/*
+ * @implemented
+ */
BOOLEAN
STDCALL
RtlEqualDomainName (
}
+/*
+ * @implemented
+ */
BOOLEAN
STDCALL
RtlEqualString(
}
+/*
+ * @implemented
+ */
BOOLEAN
STDCALL
RtlEqualUnicodeString(
}
+/*
+ * @implemented
+ */
VOID
STDCALL
RtlEraseUnicodeString(
}
+/*
+ * @implemented
+ */
VOID
STDCALL
RtlFreeAnsiString(
}
+/*
+ * @implemented
+ */
VOID
STDCALL
RtlFreeOemString(
}
+/*
+ * @implemented
+ */
VOID
STDCALL
RtlFreeUnicodeString(
}
+/*
+ * @implemented
+ */
VOID
STDCALL
RtlInitAnsiString(
}
+/*
+ * @implemented
+ */
VOID
STDCALL
RtlInitString(
}
+/*
+ * @implemented
+ */
VOID
STDCALL
RtlInitUnicodeString(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlIntegerToChar(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlIntegerToUnicodeString(
#define ITU_IMPLEMENTED_TESTS (IS_TEXT_UNICODE_ODD_LENGTH|IS_TEXT_UNICODE_SIGNATURE)
+/*
+ * @implemented
+ */
ULONG STDCALL
RtlIsTextUnicode (PVOID Buffer,
ULONG Length,
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlLargeIntegerToChar(
}
+/*
+ * @implemented
+ */
ULONG
STDCALL
RtlOemStringToUnicodeSize(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlOemStringToUnicodeString(
}
+/*
+ * @implemented
+ */
BOOLEAN
STDCALL
RtlPrefixString(
}
+/*
+ * @implemented
+ */
BOOLEAN
STDCALL
RtlPrefixUnicodeString(
}
+/*
+ * @implemented
+ */
ULONG
STDCALL
RtlUnicodeStringToAnsiSize(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlUnicodeStringToAnsiString(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlUnicodeStringToInteger(
}
+/*
+ * @implemented
+ */
ULONG
STDCALL
RtlUnicodeStringToOemSize(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlUnicodeStringToCountedOemString(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlUnicodeStringToOemString(
}
-WCHAR
-STDCALL
-RtlUpcaseUnicodeChar(IN WCHAR Source)
-{
- if (Source < L'a')
- return Source;
-
- if (Source <= L'z')
- return (Source - (L'a' - L'A'));
-
- /* FIXME: characters above 'z' */
-
- return Source;
-}
-
-
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlUpcaseUnicodeString(
IN OUT PUNICODE_STRING DestinationString,
- IN PUNICODE_STRING SourceString,
+ IN PCUNICODE_STRING SourceString,
IN BOOLEAN AllocateDestinationString)
{
ULONG i;
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlUpcaseUnicodeStringToAnsiString(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlUpcaseUnicodeStringToCountedOemString(
}
+/*
+ * @implemented
+ */
NTSTATUS
STDCALL
RtlUpcaseUnicodeStringToOemString (
}
-CHAR
-STDCALL
-RtlUpperChar (
- IN CHAR Source
- )
-{
- WCHAR Unicode;
- CHAR Destination;
-
- if (NlsMbCodePageTag == FALSE)
- {
- /* single-byte code page */
- /* ansi->unicode */
- Unicode = (WCHAR)Source;
-#if 0
- Unicode = NlsAnsiToUnicodeData[Source];
-#endif
-
- /* upcase conversion */
- Unicode = RtlUpcaseUnicodeChar (Unicode);
-
- /* unicode -> ansi */
- Destination = (CHAR)Unicode;
-#if 0
- Destination = NlsUnicodeToAnsiData[Unicode];
-#endif
- }
- else
- {
- /* single-byte code page */
- /* FIXME: implement the multi-byte stuff!! */
- Destination = Source;
- }
-
- return Destination;
-}
-
-
-VOID
-STDCALL
-RtlUpperString(
- IN OUT PSTRING DestinationString,
- IN PSTRING SourceString)
+/*
+ * @implemented
+ */
+VOID STDCALL
+RtlUpperString (IN OUT PSTRING DestinationString,
+ IN PSTRING SourceString)
{
ULONG Length;
ULONG i;
}
-ULONG
-STDCALL
-RtlxAnsiStringToUnicodeSize(IN PANSI_STRING AnsiString)
+/*
+ * @implemented
+ */
+ULONG STDCALL
+RtlxAnsiStringToUnicodeSize (IN PANSI_STRING AnsiString)
{
- return RtlAnsiStringToUnicodeSize(AnsiString);
+ return RtlAnsiStringToUnicodeSize (AnsiString);
}
-ULONG
-STDCALL
-RtlxOemStringToUnicodeSize(IN POEM_STRING OemString)
+/*
+ * @implemented
+ */
+ULONG STDCALL
+RtlxOemStringToUnicodeSize (IN POEM_STRING OemString)
{
- return RtlAnsiStringToUnicodeSize((PANSI_STRING)OemString);
+ return RtlAnsiStringToUnicodeSize ((PANSI_STRING)OemString);
}
-ULONG
-STDCALL
-RtlxUnicodeStringToAnsiSize(IN PUNICODE_STRING UnicodeString)
+/*
+ * @implemented
+ */
+ULONG STDCALL
+RtlxUnicodeStringToAnsiSize (IN PUNICODE_STRING UnicodeString)
{
- return RtlUnicodeStringToAnsiSize(UnicodeString);
+ return RtlUnicodeStringToAnsiSize (UnicodeString);
}
-ULONG
-STDCALL
-RtlxUnicodeStringToOemSize(IN PUNICODE_STRING UnicodeString)
+/*
+ * @implemented
+ */
+ULONG STDCALL
+RtlxUnicodeStringToOemSize (IN PUNICODE_STRING UnicodeString)
{
- return RtlUnicodeStringToAnsiSize(UnicodeString);
+ return RtlUnicodeStringToAnsiSize (UnicodeString);
}
/* EOF */