diff --git a/SabreTools.Helper/Data/Enums.cs b/SabreTools.Helper/Data/Enums.cs index 08966a83..44673e43 100644 --- a/SabreTools.Helper/Data/Enums.cs +++ b/SabreTools.Helper/Data/Enums.cs @@ -111,4 +111,37 @@ Internal, External, } + + /// + /// Determines the header skip operation + /// + public enum HeaderSkipOperation + { + None = 0, + Bitswap, + Byteswap, + Wordswap, + } + + /// + /// Determines the type of test to be done + /// + public enum HeaderSkipTest + { + Data = 0, + Or, + Xor, + And, + File, + } + + /// + /// Determines the operator to be used in a file test + /// + public enum HeaderSkipTestFileOperator + { + Equal = 0, + Less, + Greater, + } } diff --git a/SabreTools.Helper/Data/Structs.cs b/SabreTools.Helper/Data/Structs.cs index 16a62d76..a60ca828 100644 --- a/SabreTools.Helper/Data/Structs.cs +++ b/SabreTools.Helper/Data/Structs.cs @@ -149,4 +149,29 @@ namespace SabreTools.Helper }; } } + + /// + /// Intermediate struct for holding header skipper rule information + /// + public struct SkipperRule + { + long? StartOffset; // null is EOF + long? EndOffset; // null if EOF + HeaderSkipOperation Operation; + List Tests; + } + + /// + /// Intermediate struct for holding header test information + /// + 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; + } }