dml: Fix a problem that would have only been apparent on big-endian PCs

This commit is contained in:
Joshua Scott 2018-03-30 21:40:05 +01:00
parent 6883cae2ae
commit a1689a142c
9 changed files with 19 additions and 19 deletions

View File

@ -14,7 +14,7 @@ namespace dml
ValueBytes<DBL> data; ValueBytes<DBL> data;
data.value = m_value; data.value = m_value;
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&data.buff[0], &data.buff[7]); std::reverse(&data.buff[0], &data.buff[8]);
ostream.write(data.buff, sizeof(DBL)); ostream.write(data.buff, sizeof(DBL));
} }
@ -26,7 +26,7 @@ namespace dml
ValueBytes<DBL> data; ValueBytes<DBL> data;
istream.read(data.buff, sizeof(DBL)); istream.read(data.buff, sizeof(DBL));
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&data.buff[0], &data.buff[3]); std::reverse(&data.buff[0], &data.buff[8]);
m_value = data.value; m_value = data.value;
} }

View File

@ -14,7 +14,7 @@ namespace dml
ValueBytes<FLT> data; ValueBytes<FLT> data;
data.value = m_value; data.value = m_value;
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&data.buff[0], &data.buff[3]); std::reverse(&data.buff[0], &data.buff[4]);
ostream.write(data.buff, sizeof(FLT)); ostream.write(data.buff, sizeof(FLT));
} }
@ -26,7 +26,7 @@ namespace dml
ValueBytes<FLT> data; ValueBytes<FLT> data;
istream.read(data.buff, sizeof(FLT)); istream.read(data.buff, sizeof(FLT));
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&data.buff[0], &data.buff[3]); std::reverse(&data.buff[0], &data.buff[4]);
m_value = data.value; m_value = data.value;
} }

View File

@ -12,7 +12,7 @@ namespace dml
ValueBytes<GID> data; ValueBytes<GID> data;
data.value = m_value; data.value = m_value;
if (data.buff[0] == ((m_value & 0xFF00000000000000) >> 56)) if (data.buff[0] == ((m_value & 0xFF00000000000000) >> 56))
std::reverse(&data.buff[0], &data.buff[7]); std::reverse(&data.buff[0], &data.buff[8]);
ostream.write(data.buff, sizeof(GID)); ostream.write(data.buff, sizeof(GID));
} }
@ -24,7 +24,7 @@ namespace dml
ValueBytes<GID> data; ValueBytes<GID> data;
istream.read(data.buff, sizeof(GID)); istream.read(data.buff, sizeof(GID));
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&data.buff[0], &data.buff[7]); std::reverse(&data.buff[0], &data.buff[8]);
m_value = data.value; m_value = data.value;
} }

View File

@ -12,7 +12,7 @@ namespace dml
ValueBytes<INT> data; ValueBytes<INT> data;
data.value = m_value; data.value = m_value;
if (data.buff[0] == ((m_value & 0xFF000000) >> 24)) if (data.buff[0] == ((m_value & 0xFF000000) >> 24))
std::reverse(&data.buff[0], &data.buff[3]); std::reverse(&data.buff[0], &data.buff[4]);
ostream.write(data.buff, sizeof(INT)); ostream.write(data.buff, sizeof(INT));
} }
@ -24,7 +24,7 @@ namespace dml
ValueBytes<INT> data; ValueBytes<INT> data;
istream.read(data.buff, sizeof(INT)); istream.read(data.buff, sizeof(INT));
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&data.buff[0], &data.buff[3]); std::reverse(&data.buff[0], &data.buff[4]);
m_value = data.value; m_value = data.value;
} }

View File

@ -12,7 +12,7 @@ namespace dml
ValueBytes<SHRT> data; ValueBytes<SHRT> data;
data.value = m_value; data.value = m_value;
if (data.buff[0] == ((m_value & 0xFF00) >> 8)) if (data.buff[0] == ((m_value & 0xFF00) >> 8))
std::reverse(&data.buff[0], &data.buff[1]); std::reverse(&data.buff[0], &data.buff[2]);
ostream.write(data.buff, sizeof(SHRT)); ostream.write(data.buff, sizeof(SHRT));
} }
@ -24,7 +24,7 @@ namespace dml
ValueBytes<SHRT> data; ValueBytes<SHRT> data;
istream.read(data.buff, sizeof(SHRT)); istream.read(data.buff, sizeof(SHRT));
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&data.buff[0], &data.buff[1]); std::reverse(&data.buff[0], &data.buff[2]);
m_value = data.value; m_value = data.value;
} }

View File

@ -12,7 +12,7 @@ namespace dml
ValueBytes<USHRT> data; ValueBytes<USHRT> data;
data.value = m_value.length(); data.value = m_value.length();
if (data.buff[0] == ((m_value.length() & 0xFF00) >> 8)) if (data.buff[0] == ((m_value.length() & 0xFF00) >> 8))
std::reverse(&data.buff[0], &data.buff[1]); std::reverse(&data.buff[0], &data.buff[2]);
ostream.write(data.buff, sizeof(USHRT)); ostream.write(data.buff, sizeof(USHRT));
ostream.write(m_value.c_str(), m_value.length()); ostream.write(m_value.c_str(), m_value.length());
} }
@ -26,7 +26,7 @@ namespace dml
ValueBytes<USHRT> length_data; ValueBytes<USHRT> length_data;
istream.read(length_data.buff, sizeof(USHRT)); istream.read(length_data.buff, sizeof(USHRT));
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&length_data.buff[0], &length_data.buff[1]); std::reverse(&length_data.buff[0], &length_data.buff[2]);
// Read the data into a buffer // Read the data into a buffer
char *data = new char[length_data.value + 1] { 0 }; char *data = new char[length_data.value + 1] { 0 };

View File

@ -12,7 +12,7 @@ namespace dml
ValueBytes<UINT> data; ValueBytes<UINT> data;
data.value = m_value; data.value = m_value;
if (data.buff[0] == ((m_value & 0xFF000000) >> 24)) if (data.buff[0] == ((m_value & 0xFF000000) >> 24))
std::reverse(&data.buff[0], &data.buff[3]); std::reverse(&data.buff[0], &data.buff[4]);
ostream.write(data.buff, sizeof(UINT)); ostream.write(data.buff, sizeof(UINT));
} }
@ -24,7 +24,7 @@ namespace dml
ValueBytes<UINT> data; ValueBytes<UINT> data;
istream.read(data.buff, sizeof(UINT)); istream.read(data.buff, sizeof(UINT));
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&data.buff[0], &data.buff[3]); std::reverse(&data.buff[0], &data.buff[4]);
m_value = data.value; m_value = data.value;
} }

View File

@ -12,7 +12,7 @@ namespace dml
ValueBytes<USHRT> data; ValueBytes<USHRT> data;
data.value = m_value; data.value = m_value;
if (data.buff[0] == ((m_value & 0xFF00) >> 8)) if (data.buff[0] == ((m_value & 0xFF00) >> 8))
std::reverse(&data.buff[0], &data.buff[1]); std::reverse(&data.buff[0], &data.buff[2]);
ostream.write(data.buff, sizeof(USHRT)); ostream.write(data.buff, sizeof(USHRT));
} }
@ -24,7 +24,7 @@ namespace dml
ValueBytes<USHRT> data; ValueBytes<USHRT> data;
istream.read(data.buff, sizeof(USHRT)); istream.read(data.buff, sizeof(USHRT));
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&data.buff[0], &data.buff[1]); std::reverse(&data.buff[0], &data.buff[2]);
m_value = data.value; m_value = data.value;
} }

View File

@ -12,7 +12,7 @@ namespace dml
ValueBytes<USHRT> data; ValueBytes<USHRT> data;
data.value = m_value.length(); data.value = m_value.length();
if (data.buff[0] == ((m_value.length() & 0xFF00) >> 8)) if (data.buff[0] == ((m_value.length() & 0xFF00) >> 8))
std::reverse(&data.buff[0], &data.buff[1]); std::reverse(&data.buff[0], &data.buff[2]);
ostream.write(data.buff, sizeof(USHRT)); ostream.write(data.buff, sizeof(USHRT));
ostream.write((char *)m_value.c_str(), m_value.length() * sizeof(char16_t)); ostream.write((char *)m_value.c_str(), m_value.length() * sizeof(char16_t));
} }
@ -26,7 +26,7 @@ namespace dml
ValueBytes<USHRT> length_data; ValueBytes<USHRT> length_data;
istream.read(length_data.buff, sizeof(USHRT)); istream.read(length_data.buff, sizeof(USHRT));
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&length_data.buff[0], &length_data.buff[1]); std::reverse(&length_data.buff[0], &length_data.buff[2]);
// Read the data into a buffer // Read the data into a buffer
size_t length = length_data.value * sizeof(char16_t); size_t length = length_data.value * sizeof(char16_t);
@ -35,7 +35,7 @@ namespace dml
for (int i = 0; i < length; i += 2) for (int i = 0; i < length; i += 2)
{ {
if (endianness_check.buff[0] == 0x01) if (endianness_check.buff[0] == 0x01)
std::reverse(&data[i], &data[i + 1]); std::reverse(&data[i], &data[i + 2]);
} }
m_value = WSTR((char16_t *)data); m_value = WSTR((char16_t *)data);
delete[] data; delete[] data;