using System;
using System.Collections.Generic;
using System.IO;
namespace Compression.BSA
{
public interface IBSAReader : IDisposable
{
///
/// The files defined by the archive
///
IEnumerable Files { get; }
ArchiveStateObject State { get; }
}
public interface IBSABuilder : IDisposable
{
void AddFile(FileStateObject state, Stream src);
void Build(string filename);
}
public class ArchiveStateObject
{
public virtual IBSABuilder MakeBuilder()
{
throw new NotImplementedException();
}
}
public class FileStateObject
{
public int Index { get; set; }
public string Path { get; set; }
}
public interface IFile
{
///
/// The path of the file inside the archive
///
string Path { get; }
///
/// The uncompressed file size
///
uint Size { get; }
///
/// Get the metadata for the file.
///
FileStateObject State { get; }
///
/// Copies this entry to the given stream. 100% thread safe, the .bsa will be opened multiple times
/// in order to maintain thread-safe access.
///
///
void CopyDataTo(Stream output);
}
}