/*  PCSX2 - PS2 Emulator for PCs
 *  Copyright (C) 2002-2021  PCSX2 Dev Team
 *
 *  PCSX2 is free software: you can redistribute it and/or modify it under the terms
 *  of the GNU Lesser General Public License as published by the Free Software Found-
 *  ation, either version 3 of the License, or (at your option) any later version.
 *
 *  PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 *  PURPOSE.  See the GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License along with PCSX2.
 *  If not, see <http://www.gnu.org/licenses/>.
 */

#include "PrecompiledHeader.h"

#include "NetLib.h"

#ifdef _WIN32
#include "winsock.h"
#else
#include <arpa/inet.h>
#endif

namespace PacketReader::NetLib
{
	void WriteByte08(u8* data, int* index, u8 value)
	{
		data[*index] = value;
		*index += sizeof(u8);
	}
	void WriteUInt16(u8* data, int* index, u16 value)
	{
		*(u16*)&data[*index] = htons(value);
		*index += sizeof(u16);
	}
	void WriteUInt32(u8* data, int* index, u32 value)
	{
		*(u32*)&data[*index] = htonl(value);
		*index += sizeof(u32);
	}

	//Special
	void WriteByteArray(u8* data, int* index, int length, u8* value)
	{
		memcpy(&data[*index], value, length);
		*index += length;
	}


	//Read
	void ReadByte08(u8* data, int* index, u8* value)
	{
		*value = data[*index];
		*index += sizeof(u8);
	}
	void ReadUInt16(u8* data, int* index, u16* value)
	{
		*value = ntohs(*(u16*)&data[*index]);
		*index += sizeof(u16);
	}
	void ReadUInt32(u8* data, int* index, u32* value)
	{
		*value = ntohl(*(u32*)&data[*index]);
		*index += sizeof(u32);
	}

	//Special
	void ReadByteArray(u8* data, int* index, int length, u8* value)
	{
		memcpy(value, &data[*index], length);
		*index += length;
	}
} // namespace PacketReader::NetLib
