mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
[Enums, Structs] Add proper header skip parts
This commit is contained in:
@@ -111,4 +111,37 @@
|
|||||||
Internal,
|
Internal,
|
||||||
External,
|
External,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Determines the header skip operation
|
||||||
|
/// </summary>
|
||||||
|
public enum HeaderSkipOperation
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Bitswap,
|
||||||
|
Byteswap,
|
||||||
|
Wordswap,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Determines the type of test to be done
|
||||||
|
/// </summary>
|
||||||
|
public enum HeaderSkipTest
|
||||||
|
{
|
||||||
|
Data = 0,
|
||||||
|
Or,
|
||||||
|
Xor,
|
||||||
|
And,
|
||||||
|
File,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Determines the operator to be used in a file test
|
||||||
|
/// </summary>
|
||||||
|
public enum HeaderSkipTestFileOperator
|
||||||
|
{
|
||||||
|
Equal = 0,
|
||||||
|
Less,
|
||||||
|
Greater,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,4 +149,29 @@ namespace SabreTools.Helper
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Intermediate struct for holding header skipper rule information
|
||||||
|
/// </summary>
|
||||||
|
public struct SkipperRule
|
||||||
|
{
|
||||||
|
long? StartOffset; // null is EOF
|
||||||
|
long? EndOffset; // null if EOF
|
||||||
|
HeaderSkipOperation Operation;
|
||||||
|
List<SkipperTest> Tests;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Intermediate struct for holding header test information
|
||||||
|
/// </summary>
|
||||||
|
public struct SkipperTest
|
||||||
|
{
|
||||||
|
HeaderSkipTest Type;
|
||||||
|
long? Offset; // null is EOF
|
||||||
|
byte[] Value;
|
||||||
|
bool Result;
|
||||||
|
byte[] Mask;
|
||||||
|
long? Size; // null is PO2, "power of 2" filesize
|
||||||
|
HeaderSkipTestFileOperator Operator;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user