magellan/Lucidiot.Raima/FileEntry.cs

53 lines
1.1 KiB
C#

using System;
using System.Runtime.InteropServices;
namespace Lucidiot.Raima {
public enum FileStatus : byte {
Open = (byte)'o',
Closed = (byte)'c',
}
public enum FileType : byte {
CompressedData = (byte)'c',
Data = (byte)'d',
Key = (byte)'k',
Overflow = (byte)'o',
}
[Flags]
public enum FileEntryOptions : ushort {
None = 0x0000,
Static = 0x0002,
Local = 0x0004,
Compressed = 0x0040,
}
[StructLayout(LayoutKind.Explicit, Size = 60)]
public struct FileEntry {
[FieldOffset(0)]
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 48)]
public string Name;
[FieldOffset(48)]
public short Descriptor;
[FieldOffset(50)]
public FileStatus Status;
[FieldOffset(51)]
public FileType Type;
[FieldOffset(52)]
public short Slots;
[FieldOffset(54)]
public short SlotSize;
[FieldOffset(56)]
public short PageSize;
[FieldOffset(58)]
public FileEntryOptions Options;
}
}