/** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory * FILE: sdk/xtdk/rtltypes.h * DESCRIPTION: Runtime library structures definitions * DEVELOPERS: Rafal Kupiec */ #ifndef __XTDK_RTLTYPES_H #define __XTDK_RTLTYPES_H #include #include /* UUID string lengths */ #define GUID_STRING_LENGTH 38 #define PARTUUID_STRING_LENGTH 13 /* Maximum integer value string length */ #define MAX_INTEGER_STRING_SIZE 25 /* Floating point definitions */ #define DOUBLE_EXPONENT_MASK 0x7FF0000000000000ULL #define DOUBLE_EXPONENT_SHIFT 0x34 #define DOUBLE_EXPONENT_BIAS 0x3FF /* Runtime Library routine callbacks */ typedef XTSTATUS (*PWRITE_CHARACTER)(IN CHAR Character); typedef XTSTATUS (*PWRITE_WIDE_CHARACTER)(IN WCHAR Character); /* Variable types enumeration list */ typedef enum _RTL_VARIABLE_TYPE { Unknown, AnsiString, Boolean, Char, Float, Guid, Integer, String, UnicodeString, WideChar, WideString } RTL_VARIABLE_TYPE, *PRTL_VARIABLE_TYPE; /* Runtime Library print context structure definition */ typedef struct _RTL_PRINT_CONTEXT { PWRITE_CHARACTER WriteCharacter; PWRITE_WIDE_CHARACTER WriteWideCharacter; ULONG CharactersWritten; } RTL_PRINT_CONTEXT, *PRTL_PRINT_CONTEXT; /* Runtime Library print format properties structure definition */ typedef struct _RTL_PRINT_FORMAT_PROPERTIES { RTL_VARIABLE_TYPE VariableType; ULONG Radix; LONG FieldWidth; LONG IntegerSize; LONG Precision; BOOLEAN AlwaysPrintSign; BOOLEAN LongDouble; BOOLEAN LongInteger; BOOLEAN LeftJustified; BOOLEAN PrintUpperCase; BOOLEAN PrintLeadingZeroes; BOOLEAN PrintRadix; BOOLEAN SpaceForPlus; BOOLEAN ThousandsGrouping; BOOLEAN UnsignedValue; BOOLEAN FloatFormat; BOOLEAN ScientificFormat; BOOLEAN SignificantDigitPrecision; } RTL_PRINT_FORMAT_PROPERTIES, *PRTL_PRINT_FORMAT_PROPERTIES; #endif /* __XTDK_RTLTYPES_H */