21 #if !defined(ZIPARCHIVE_BYTESWRITER_DOT_H)
22 #define ZIPARCHIVE_BYTESWRITER_DOT_H
30 namespace ZipArchiveLib
40 #ifndef _ZIP_BIG_ENDIAN
53 static void ReadBytes(WORD& uDestination,
const char* pSource,
int iCount = 2)
56 memcpy(&uDestination, pSource, iCount);
59 static void ReadBytes(DWORD& uDestination,
const char* pSource,
int iCount = 4)
62 memcpy(&uDestination, pSource, iCount);
66 #ifndef _ZIP_STRICT_U16
67 static void ReadBytes(
int& iDestination,
const char* pSource,
int iCount)
70 memcpy(&iDestination, pSource, iCount);
75 static void WriteBytes(
char* pDestination, WORD uSource)
77 memcpy(pDestination, &uSource, 2);
92 static void WriteBytes(
char* pDestination, DWORD uSource,
int iCount = 4)
94 memcpy(pDestination, &uSource, iCount);
97 #ifndef _ZIP_STRICT_U16
98 static void WriteBytes(
char* pDestination,
int uSource,
int iCount)
100 memcpy(pDestination, &uSource, iCount);
106 static void ReadBytes(
char* pDestination,
const char* pSource,
int iDestSize,
int iCount)
108 int i = iCount - iDestSize;
114 for (; i < iCount; i++)
115 (pDestination)[i] = pSource[iCount - i - 1];
118 static void ReadBytes(WORD& uDestination,
const char* pSource,
int iCount = 2)
120 ReadBytes((
char*)&uDestination, pSource, 2, iCount);
123 static void ReadBytes(DWORD& uDestination,
const char* pSource,
int iCount = 4)
125 ReadBytes((
char*)&uDestination, pSource, 4, iCount);
129 #ifndef _ZIP_STRICT_U16
130 static void ReadBytes(
int& iDestination,
const char* pSource,
int iCount)
132 ReadBytes((
char*)&iDestination, pSource,
sizeof(
int), iCount);
137 static void WriteBytes(
char* pDestination, WORD uSource)
139 for (
int i = 0; i < 2; i++)
140 pDestination[i] = ((
char*)&uSource)[2 - i - 1];
143 static void WriteBytes(
char* pDestination, DWORD uSource,
int iCount = 4)
145 for (
int i = 0; i < iCount; i++)
146 pDestination[i] = ((
char*)&uSource)[4 - i - 1];
149 #ifndef _ZIP_STRICT_U16
150 static void WriteBytes(
char* pDestination,
int iSource,
int iCount)
152 for (
int i = 0; i < iCount; i++)
153 pDestination[i] = ((
char*)&iSource)[
sizeof(int) - i - 1];
159 static DWORD WriteSafeU32(DWORD uValue)
164 #ifdef _ZIP_STRICT_U16
165 static WORD WriteSafeU16(WORD uValue)
170 static WORD WriteSafeU16(
int uValue)