using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hack.Xenosaga.Common
{
public static class Extension
{
///
/// Ecrit un bloc d'octet dans le flux actuel en utilisant des données lues dans une mémoire tampon (la position du flux actuel reste inchangée).
///
/// Mémoire tamon dans laquelle lire les données
/// Dans buffer, offset d'octet de base zéro d'où commencer la copie des octets dans le flux actuel
/// Nombre maximal d'octets à écrire
/// Position dans le flux actuel où écrire les données
public static void Write(this MemoryStream ms, byte[] buffer, int offset, int count, long position)
{
long pos = ms.Position;
ms.Position = position;
ms.Write(buffer, offset, count);
ms.Position = pos;
}
///
/// Lit une séquence de 4 octets à partir du flux actuel et avance la position dans le flux du nombre d'octets lus.
///
/// Valeur lue
public static UInt32 Read(this MemoryStream ms)
{
UInt32 value = 0;
for (int i = 0; i < 4; i++)
value += (UInt32)(ms.ReadByte() << (i * 8) );
return value;
}
}
}