/***************************************************************************** * BitConverter.h * * * * XFX BitConverter definition file * * Copyright (c) XFX Team. All Rights Reserved * *****************************************************************************/ #ifndef _SYSTEM_BITCONVERTER_ #define _SYSTEM_BITCONVERTER_ #include "Types.h" namespace System { // Converts base data types to an array of bytes, and an array of bytes to base data types. class BitConverter { private: static byte* GetBytes(byte *ptr, int count) NONNULL(1); static bool AmIBigOrLittleEndian(); static bool SwappedWordsInDouble(); BitConverter(); //! private constructor to prevent instantiation public: static const bool IsLittleEndian; static byte* GetBytes(bool value); static byte* GetBytes(char value); static byte* GetBytes(double value); static byte* GetBytes(short value); static byte* GetBytes(int value); static byte* GetBytes(long long value); static byte* GetBytes(float value); static byte* GetBytes(ushort value); static byte* GetBytes(uint value); static byte* GetBytes(ulong value); static bool ToBoolean(byte value[], int startIndex) NONNULL(1); static char ToChar(byte value[], int startIndex) NONNULL(1); static double ToDouble(byte value[], int startIndex) NONNULL(1); static short ToInt16(byte value[], int startIndex) NONNULL(1); static int ToInt32(byte value[], int startIndex) NONNULL(1); static long long ToInt64(byte value[], int startIndex) NONNULL(1); static float ToSingle(byte value[], int startIndex) NONNULL(1); static ushort ToUInt16(byte value[], int startIndex) NONNULL(1); static uint ToUInt32(byte value[], int startIndex) NONNULL(1); static ulong ToUInt64(byte value[], int startIndex) NONNULL(1); }; } #endif //_SYSTEM_BITCONVERTER_