Migrate RTL subsystem to C++
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ar.hh
|
||||
* DESCRIPTION:
|
||||
* DESCRIPTION: Architecture Library
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ex.hh
|
||||
* DESCRIPTION:
|
||||
* DESCRIPTION: Kernel Executive
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
|
25
xtoskrnl/includes/rtl.hh
Normal file
25
xtoskrnl/includes/rtl.hh
Normal file
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl.hh
|
||||
* DESCRIPTION: Runtime Library
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_HH
|
||||
#define __XTOSKRNL_RTL_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
#include <rtl/atomic.hh>
|
||||
#include <rtl/bitmap.hh>
|
||||
#include <rtl/dispatch.hh>
|
||||
#include <rtl/endian.hh>
|
||||
#include <rtl/guid.hh>
|
||||
#include <rtl/llist.hh>
|
||||
#include <rtl/math.hh>
|
||||
#include <rtl/memory.hh>
|
||||
#include <rtl/string.hh>
|
||||
#include <rtl/widestr.hh>
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_HH */
|
97
xtoskrnl/includes/rtl/atomic.hh
Normal file
97
xtoskrnl/includes/rtl/atomic.hh
Normal file
@@ -0,0 +1,97 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl/atomic.hh
|
||||
* DESCRIPTION: Atomic operations support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_ATOMIC_HH
|
||||
#define __XTOSKRNL_RTL_ATOMIC_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Runtime Library */
|
||||
namespace RTL
|
||||
{
|
||||
class Atomic
|
||||
{
|
||||
public:
|
||||
STATIC XTFASTCALL CHAR And8(IN PCHAR Address,
|
||||
IN CHAR Mask);
|
||||
STATIC XTFASTCALL SHORT And16(IN PSHORT Address,
|
||||
IN SHORT Mask);
|
||||
STATIC XTFASTCALL LONG And32(IN PLONG Address,
|
||||
IN LONG Mask);
|
||||
STATIC XTFASTCALL LONG_PTR And64(IN PLONG_PTR Address,
|
||||
IN LONG_PTR Mask);
|
||||
STATIC XTFASTCALL UCHAR BitTestAndSet(IN PLONG Base,
|
||||
IN LONG Offset);
|
||||
STATIC XTFASTCALL UCHAR BitTestAndSet64(IN PLONGLONG Base,
|
||||
IN LONGLONG Offset);
|
||||
STATIC XTFASTCALL CHAR CompareExchange8(IN PCHAR Address,
|
||||
IN CHAR Comperand,
|
||||
IN CHAR Exchange);
|
||||
STATIC XTFASTCALL SHORT CompareExchange16(IN PSHORT Address,
|
||||
IN SHORT Comperand,
|
||||
IN SHORT Exchange);
|
||||
STATIC XTFASTCALL LONG CompareExchange32(IN PLONG Address,
|
||||
IN LONG Comperand,
|
||||
IN LONG Exchange);
|
||||
STATIC XTFASTCALL LONG_PTR CompareExchange64(IN PLONG_PTR Address,
|
||||
IN LONG_PTR Comperand,
|
||||
IN LONG_PTR Exchange);
|
||||
STATIC XTFASTCALL PVOID CompareExchangePointer(IN PVOID *Address,
|
||||
IN PVOID Comperand,
|
||||
IN PVOID Exchange);
|
||||
STATIC XTFASTCALL CHAR Decrement8(IN PCHAR Address);
|
||||
STATIC XTFASTCALL SHORT Decrement16(IN PSHORT Address);
|
||||
STATIC XTFASTCALL LONG Decrement32(IN PLONG Address);
|
||||
STATIC XTFASTCALL LONG_PTR Decrement64(IN PLONG_PTR Address);
|
||||
STATIC XTFASTCALL CHAR Exchange8(IN PCHAR Address,
|
||||
IN CHAR Exchange);
|
||||
STATIC XTFASTCALL SHORT Exchange16(IN PSHORT Address,
|
||||
IN SHORT Exchange);
|
||||
STATIC XTFASTCALL LONG Exchange32(IN PLONG Address,
|
||||
IN LONG Exchange);
|
||||
STATIC XTFASTCALL LONG_PTR Exchange64(IN PLONG_PTR Address,
|
||||
IN LONG_PTR Exchange);
|
||||
STATIC XTFASTCALL CHAR ExchangeAdd8(IN PCHAR Address,
|
||||
IN CHAR Value);
|
||||
STATIC XTFASTCALL SHORT ExchangeAdd16(IN PSHORT Address,
|
||||
IN SHORT Value);
|
||||
STATIC XTFASTCALL LONG ExchangeAdd32(IN PLONG Address,
|
||||
IN LONG Value);
|
||||
STATIC XTFASTCALL LONG_PTR ExchangeAdd64(IN PLONG_PTR Address,
|
||||
IN LONG_PTR Value);
|
||||
STATIC XTFASTCALL PVOID ExchangePointer(IN PVOID *Address,
|
||||
IN PVOID Exchange);
|
||||
STATIC XTFASTCALL PSINGLE_LIST_ENTRY FlushSingleList(IN PSINGLE_LIST_HEADER Header);
|
||||
STATIC XTFASTCALL CHAR Increment8(IN PCHAR Address);
|
||||
STATIC XTFASTCALL SHORT Increment16(IN PSHORT Address);
|
||||
STATIC XTFASTCALL LONG Increment32(IN PLONG Address);
|
||||
STATIC XTFASTCALL LONG_PTR Increment64(IN PLONG_PTR Address);
|
||||
STATIC XTFASTCALL CHAR Or8(IN PCHAR Address,
|
||||
IN CHAR Mask);
|
||||
STATIC XTFASTCALL SHORT Or16(IN PSHORT Address,
|
||||
IN SHORT Mask);
|
||||
STATIC XTFASTCALL LONG Or32(IN PLONG Address,
|
||||
IN LONG Mask);
|
||||
STATIC XTFASTCALL LONG_PTR Or64(IN PLONG_PTR Address,
|
||||
IN LONG_PTR Mask);
|
||||
STATIC XTFASTCALL XTFASTCALL PSINGLE_LIST_ENTRY PopEntrySingleList(IN PSINGLE_LIST_HEADER Header);
|
||||
STATIC XTFASTCALL PSINGLE_LIST_ENTRY PushEntrySingleList(IN PSINGLE_LIST_HEADER Header,
|
||||
IN PSINGLE_LIST_ENTRY Entry);
|
||||
STATIC XTFASTCALL CHAR Xor8(IN PCHAR Address,
|
||||
IN CHAR Mask);
|
||||
STATIC XTFASTCALL SHORT Xor16(IN PSHORT Address,
|
||||
IN SHORT Mask);
|
||||
STATIC XTFASTCALL LONG Xor32(IN PLONG Address,
|
||||
IN LONG Mask);
|
||||
STATIC XTFASTCALL LONG_PTR Xor64(IN PLONG_PTR Address,
|
||||
IN LONG_PTR Mask);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_ATOMIC_HH */
|
64
xtoskrnl/includes/rtl/bitmap.hh
Normal file
64
xtoskrnl/includes/rtl/bitmap.hh
Normal file
@@ -0,0 +1,64 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl/bitmap.hh
|
||||
* DESCRIPTION: Bit maps support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_BITMAP_HH
|
||||
#define __XTOSKRNL_RTL_BITMAP_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Runtime Library */
|
||||
namespace RTL
|
||||
{
|
||||
class BitMap
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI VOID ClearAllBits(IN PRTL_BITMAP BitMap);
|
||||
STATIC XTAPI VOID ClearBit(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR Bit);
|
||||
STATIC XTAPI VOID ClearBits(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR StartingIndex,
|
||||
IN ULONG_PTR Length);
|
||||
STATIC XTAPI ULONG ClearSetBits(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR Length,
|
||||
IN ULONG_PTR Index);
|
||||
STATIC XTAPI VOID DumpBitMap(IN PRTL_BITMAP BitMap);
|
||||
STATIC XTAPI ULONG_PTR FindClearBits(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR Length,
|
||||
IN ULONG_PTR Index);
|
||||
STATIC XTAPI ULONG_PTR FindSetBits(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR Length,
|
||||
IN ULONG_PTR Index);
|
||||
STATIC XTAPI VOID InitializeBitMap(IN PRTL_BITMAP BitMap,
|
||||
IN PULONG_PTR Buffer,
|
||||
IN ULONG Size);
|
||||
STATIC XTAPI VOID SetAllBits(IN PRTL_BITMAP BitMap);
|
||||
STATIC XTAPI VOID SetBit(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR Bit);
|
||||
STATIC XTAPI VOID SetBits(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR StartingIndex,
|
||||
IN ULONG_PTR Length);
|
||||
STATIC XTAPI ULONG SetClearBits(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR Length,
|
||||
IN ULONG_PTR Index);
|
||||
STATIC XTAPI BOOLEAN TestBit(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR Bit);
|
||||
|
||||
private:
|
||||
STATIC XTAPI ULONG_PTR CountBits(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR Length,
|
||||
IN ULONG_PTR StartingIndex,
|
||||
IN BOOLEAN SetBits);
|
||||
STATIC XTAPI ULONG_PTR FindBits(IN PRTL_BITMAP BitMap,
|
||||
IN ULONG_PTR Length,
|
||||
IN ULONG_PTR StartingIndex,
|
||||
IN BOOLEAN SetBits);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_BITMAP_HH */
|
26
xtoskrnl/includes/rtl/dispatch.hh
Normal file
26
xtoskrnl/includes/rtl/dispatch.hh
Normal file
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl/dispatch.hh
|
||||
* DESCRIPTION: Dispatching support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_DISPATCH_HH
|
||||
#define __XTOSKRNL_RTL_DISPATCH_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Runtime Library */
|
||||
namespace RTL
|
||||
{
|
||||
class Dispatcher
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI VOID GetStackLimits(OUT PULONG_PTR StackBase,
|
||||
OUT PULONG_PTR StackLimit);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_DISPATCH_HH */
|
27
xtoskrnl/includes/rtl/endian.hh
Normal file
27
xtoskrnl/includes/rtl/endian.hh
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl/endian.hh
|
||||
* DESCRIPTION: Endian conversion routines
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_ENDIAN_HH
|
||||
#define __XTOSKRNL_RTL_ENDIAN_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Runtime Library */
|
||||
namespace RTL
|
||||
{
|
||||
class Endianness
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI USHORT SwapByte16(IN USHORT Source);
|
||||
STATIC XTAPI ULONG SwapByte32(IN ULONG Source);
|
||||
STATIC XTAPI ULONGLONG SwapByte64(IN ULONGLONG Source);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_ENDIAN_HH */
|
26
xtoskrnl/includes/rtl/guid.hh
Normal file
26
xtoskrnl/includes/rtl/guid.hh
Normal file
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl/gui.hh
|
||||
* DESCRIPTION: Endian conversion routines
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_GUID_HH
|
||||
#define __XTOSKRNL_RTL_GUID_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Runtime Library */
|
||||
namespace RTL
|
||||
{
|
||||
class Guid
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI BOOLEAN CompareGuids(IN PGUID Guid1,
|
||||
IN PGUID Guid2);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_GUID_HH */
|
33
xtoskrnl/includes/rtl/llist.hh
Normal file
33
xtoskrnl/includes/rtl/llist.hh
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl/llist.hh
|
||||
* DESCRIPTION: Linked list manipulation routines
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_LLIST_HH
|
||||
#define __XTOSKRNL_RTL_LLIST_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Runtime Library */
|
||||
namespace RTL
|
||||
{
|
||||
class LinkedList
|
||||
{
|
||||
public:
|
||||
STATIC XTCDECL VOID InitializeListHead(IN PLIST_ENTRY ListHead);
|
||||
STATIC XTCDECL VOID InitializeListHead32(IN PLIST_ENTRY32 ListHead);
|
||||
STATIC XTCDECL VOID InsertHeadList(IN OUT PLIST_ENTRY ListHead,
|
||||
IN PLIST_ENTRY Entry);
|
||||
STATIC XTCDECL VOID InsertTailList(IN OUT PLIST_ENTRY ListHead,
|
||||
IN PLIST_ENTRY Entry);
|
||||
STATIC XTCDECL BOOLEAN ListEmpty(IN PLIST_ENTRY ListHead);
|
||||
STATIC XTCDECL BOOLEAN ListLoop(IN PLIST_ENTRY ListHead);
|
||||
STATIC XTCDECL VOID RemoveEntryList(IN PLIST_ENTRY Entry);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_LLIST_HH */
|
51
xtoskrnl/includes/rtl/math.hh
Normal file
51
xtoskrnl/includes/rtl/math.hh
Normal file
@@ -0,0 +1,51 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl/math.hh
|
||||
* DESCRIPTION: Kernel math support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_MATH_HH
|
||||
#define __XTOSKRNL_RTL_MATH_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Runtime Library */
|
||||
namespace RTL
|
||||
{
|
||||
class Math
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI LARGE_INTEGER ConvertToLargeInteger32(IN LONG Value);
|
||||
STATIC XTAPI LARGE_INTEGER ConvertToLargeIntegerUnsigned32(IN ULONG Value);
|
||||
STATIC XTAPI INT CountLeadingZeroes32(IN ULONG Value);
|
||||
STATIC XTAPI INT CountLeadingZeroes64(IN ULONGLONG Value);
|
||||
STATIC XTAPI INT CountTrailingZeroes32(IN ULONG Value);
|
||||
STATIC XTAPI INT CountTrailingZeroes64(IN ULONGLONG Value);
|
||||
STATIC XTAPI LONGLONG Divide32(IN LONG Dividend,
|
||||
IN LONG Divisor,
|
||||
OUT PLONG Remainder);
|
||||
STATIC XTAPI LONGLONG Divide64(IN LONGLONG Dividend,
|
||||
IN LONGLONG Divisor,
|
||||
OUT PLONGLONG Remainder);
|
||||
STATIC XTAPI ULONGLONG DivideUnsigned32(IN ULONG Dividend,
|
||||
IN ULONG Divisor,
|
||||
OUT PULONG Remainder);
|
||||
STATIC XTAPI ULONGLONG DivideUnsigned64(IN ULONGLONG Dividend,
|
||||
IN ULONGLONG Divisor,
|
||||
OUT PULONGLONG Remainder);
|
||||
STATIC XTAPI LARGE_INTEGER DivideLargeInteger(IN LARGE_INTEGER Dividend,
|
||||
IN ULONG Divisor,
|
||||
OUT PULONG Remainder);
|
||||
STATIC XTAPI LONG GetBaseExponent(IN DOUBLE Value,
|
||||
OUT PDOUBLE PowerOfTen);
|
||||
STATIC XTAPI BOOLEAN InfiniteDouble(IN DOUBLE Value);
|
||||
STATIC XTAPI LARGE_INTEGER MultiplyLargeInteger(IN LARGE_INTEGER Multiplicand,
|
||||
IN LONG Multiplier);
|
||||
STATIC XTAPI BOOLEAN NanDouble(IN DOUBLE Value);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_MATH_HH */
|
41
xtoskrnl/includes/rtl/memory.hh
Normal file
41
xtoskrnl/includes/rtl/memory.hh
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl/memory.hh
|
||||
* DESCRIPTION: Memory related routines
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_MEMORY_HH
|
||||
#define __XTOSKRNL_RTL_MEMORY_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Runtime Library */
|
||||
namespace RTL
|
||||
{
|
||||
class Memory
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI SIZE_T CompareMemory(IN PCVOID LeftBuffer,
|
||||
IN PCVOID RightBuffer,
|
||||
IN SIZE_T Length);
|
||||
STATIC XTAPI VOID CopyMemory(OUT PVOID Destination,
|
||||
IN PCVOID Source,
|
||||
IN SIZE_T Length);
|
||||
STATIC XTAPI VOID MoveMemory(OUT PVOID Destination,
|
||||
IN PCVOID Source,
|
||||
IN SIZE_T Length);
|
||||
STATIC XTAPI BOOLEAN SameMemory(IN PCVOID LeftBuffer,
|
||||
IN PCVOID RightBuffer,
|
||||
IN SIZE_T Length);
|
||||
STATIC XTAPI VOID SetMemory(OUT PVOID Destination,
|
||||
IN UCHAR Byte,
|
||||
IN SIZE_T Length);
|
||||
STATIC XTAPI VOID ZeroMemory(OUT PVOID Destination,
|
||||
IN SIZE_T Length);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_MEMORY_HH */
|
55
xtoskrnl/includes/rtl/string.hh
Normal file
55
xtoskrnl/includes/rtl/string.hh
Normal file
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl/string.hh
|
||||
* DESCRIPTION: String support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_STRING_HH
|
||||
#define __XTOSKRNL_RTL_STRING_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Runtime Library */
|
||||
namespace RTL
|
||||
{
|
||||
class String
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI SIZE_T CompareString(IN PCSTR String1,
|
||||
IN PCSTR String2,
|
||||
IN SIZE_T Length);
|
||||
STATIC XTAPI SIZE_T CompareStringInsensitive(IN PCSTR String1,
|
||||
IN PCSTR String2,
|
||||
IN SIZE_T Length);
|
||||
STATIC XTAPI PCHAR ConcatenateString(OUT PCHAR Destination,
|
||||
IN PCHAR Source,
|
||||
IN SIZE_T Count);
|
||||
STATIC XTAPI VOID CopyString(IN PCHAR Destination,
|
||||
IN PCSTR Source,
|
||||
IN ULONG Length);
|
||||
STATIC XTAPI PCSTR FindString(IN PCSTR Source,
|
||||
IN PCSTR Search);
|
||||
STATIC XTAPI PCSTR FindStringInsensitive(IN PCSTR Source,
|
||||
IN PCSTR Search);
|
||||
STATIC XTAPI VOID ReverseString(IN OUT PCHAR String,
|
||||
IN ULONG Length);
|
||||
STATIC XTAPI SIZE_T StringLength(IN PCSTR String,
|
||||
IN SIZE_T MaxLength);
|
||||
STATIC XTAPI SIZE_T StringToWideString(OUT PWCHAR Destination,
|
||||
IN PCSTR *Source,
|
||||
IN SIZE_T Length);
|
||||
STATIC XTAPI PCHAR TokenizeString(IN PCHAR String,
|
||||
IN PCSTR Delimiter,
|
||||
IN OUT PCHAR *SavePtr);
|
||||
STATIC XTAPI CHAR ToLowerCharacter(IN CHAR Character);
|
||||
STATIC XTAPI CHAR ToUpperCharacter(IN CHAR Character);
|
||||
STATIC XTAPI PCHAR TrimLeftString(IN PCHAR String);
|
||||
STATIC XTAPI PCHAR TrimRightString(IN PCHAR String);
|
||||
STATIC XTAPI PCHAR TrimString(IN PCHAR String);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_STRING_HH */
|
87
xtoskrnl/includes/rtl/widestr.hh
Normal file
87
xtoskrnl/includes/rtl/widestr.hh
Normal file
@@ -0,0 +1,87 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/rtl/widestr.hh
|
||||
* DESCRIPTION: Wide string support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_RTL_WIDESTR_HH
|
||||
#define __XTOSKRNL_RTL_WIDESTR_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Runtime Library */
|
||||
namespace RTL
|
||||
{
|
||||
class WideString
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI SIZE_T CompareWideString(IN PCWSTR String1,
|
||||
IN PCWSTR String2,
|
||||
IN SIZE_T Length);
|
||||
STATIC XTAPI SIZE_T CompareWideStringInsensitive(IN PCWSTR String1,
|
||||
IN PCWSTR String2,
|
||||
IN SIZE_T Length);
|
||||
STATIC XTAPI PWCHAR ConcatenateWideString(OUT PWCHAR Destination,
|
||||
IN PWCHAR Source,
|
||||
IN SIZE_T Count);
|
||||
STATIC XTAPI VOID CopyWideString(IN PWCHAR Destination,
|
||||
IN PCWSTR Source,
|
||||
IN ULONG Length);
|
||||
STATIC XTAPI PCWSTR FindWideString(IN PCWSTR Source,
|
||||
IN PCWSTR Search);
|
||||
STATIC XTAPI PCWSTR FindWideStringInsensitive(IN PCWSTR Source,
|
||||
IN PCWSTR Search);
|
||||
STATIC XTAPI XTSTATUS FormatWideString(IN PRTL_PRINT_CONTEXT Context,
|
||||
IN PCWSTR Format,
|
||||
IN VA_LIST ArgumentList);
|
||||
STATIC XTAPI VOID ReverseWideString(IN OUT PWCHAR String,
|
||||
IN ULONG Length);
|
||||
STATIC XTAPI PWCHAR TokenizeWideString(IN PWCHAR String,
|
||||
IN PCWSTR Delimiter,
|
||||
IN OUT PWCHAR *SavePtr);
|
||||
STATIC XTAPI WCHAR ToLowerWideCharacter(IN WCHAR Character);
|
||||
STATIC XTAPI WCHAR ToUpperWideCharacter(IN WCHAR Character);
|
||||
STATIC XTAPI PWCHAR TrimLeftWideString(IN PWCHAR String);
|
||||
STATIC XTAPI PWCHAR TrimRightWideString(IN PWCHAR String);
|
||||
STATIC XTAPI PWCHAR TrimWideString(IN PWCHAR String);
|
||||
STATIC XTAPI SIZE_T WideStringLength(IN PCWSTR String,
|
||||
IN SIZE_T MaxLength);
|
||||
|
||||
private:
|
||||
STATIC XTAPI XTSTATUS FormatArgumentSpecifier(IN PRTL_PRINT_CONTEXT Context,
|
||||
IN PCWSTR Format,
|
||||
IN PVA_LIST ArgumentList,
|
||||
IN OUT PULONG Index);
|
||||
STATIC XTAPI ULONGLONG GetArgument(IN PVA_LIST ArgumentList,
|
||||
IN ULONG ArgumentNumber,
|
||||
IN LONG ArgumentSize);
|
||||
STATIC XTAPI ULONGLONG GetSpecifierValue(IN PWCHAR *Format);
|
||||
STATIC XTAPI XTSTATUS WriteWideCharacter(IN PRTL_PRINT_CONTEXT Context,
|
||||
IN WCHAR Character);
|
||||
STATIC XTCDECL XTSTATUS WriteCustomValue(IN PRTL_PRINT_CONTEXT Context,
|
||||
IN PCWSTR Format,
|
||||
IN ...);
|
||||
STATIC XTAPI XTSTATUS WriteDoubleValue(IN PRTL_PRINT_CONTEXT Context,
|
||||
IN PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
|
||||
IN DOUBLE Value);
|
||||
STATIC XTAPI XTSTATUS WriteHexDoubleValue(IN PRTL_PRINT_CONTEXT Context,
|
||||
IN PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
|
||||
IN DOUBLE Double);
|
||||
STATIC XTAPI XTSTATUS WriteIntegerValue(IN PRTL_PRINT_CONTEXT Context,
|
||||
IN PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
|
||||
IN ULONGLONG Integer);
|
||||
STATIC XTAPI XTSTATUS WriteStringValue(PRTL_PRINT_CONTEXT Context,
|
||||
PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
|
||||
PCSTR String,
|
||||
SIZE_T StringLength);
|
||||
STATIC XTAPI XTSTATUS WriteValue(PRTL_PRINT_CONTEXT Context,
|
||||
PRTL_PRINT_FORMAT_PROPERTIES FormatProperties,
|
||||
PCWSTR String,
|
||||
SIZE_T StringLength);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_RTL_WIDESTR_HH */
|
@@ -28,4 +28,6 @@ extern "C" {
|
||||
|
||||
#include <ar.hh>
|
||||
#include <ex.hh>
|
||||
#include <hl.hh>
|
||||
#include <ke.hh>
|
||||
#include <rtl.hh>
|
||||
|
Reference in New Issue
Block a user