added FileSystem infrastructure.

This commit is contained in:
morkt
2015-06-08 19:58:51 +04:00
parent 7f8b091d05
commit 50eb805cd2
4 changed files with 324 additions and 2 deletions

View File

@@ -143,6 +143,16 @@ namespace GameRes
return m_interface.OpenEntry (this, entry);
}
/// <summary>
/// Open specified <paramref name="entry"/> as memory-mapped view.
/// </summary>
public ArcView OpenView (Entry entry)
{
var stream = OpenEntry (entry);
uint size = stream.CanSeek ? (uint)stream.Length : entry.Size;
return new ArcView (stream, entry.Name, size);
}
/// <summary>
/// Open specified <paramref name="entry"/> as a seekable Stream.
/// </summary>
@@ -168,6 +178,14 @@ namespace GameRes
return ArchiveFormat.CreateFile (entry.Name);
}
public IFileSystem CreateFileSystem ()
{
if (m_interface.IsHierarchic)
return new ArchiveFileSystem (this);
else
return new FlatArchiveFileSystem (this);
}
#region IDisposable Members
bool disposed = false;