diff --git a/Program.cs b/Program.cs index 4a71d26..19ccacc 100644 --- a/Program.cs +++ b/Program.cs @@ -1,11 +1,5 @@ using System; -using System.Collections.Generic; -using System.Linq; using System.Text; -using System.Threading.Tasks; - -using DevelPlatform.OneCEUtils.V8Formats; -using System.IO; namespace DevelPlatform { @@ -63,7 +57,7 @@ namespace DevelPlatform } else if (cur_mode == "-inflate" || cur_mode == "-i" || cur_mode == "-und" || cur_mode == "-undeflate") { - OneCEUtils.V8Formats.V8Formats.V8File V8File = new OneCEUtils.V8Formats.V8Formats.V8File(); + OneCEUtils.V8Formats.V8Formats.V8File V8File = new OneCEUtils.V8Formats.V8Formats.V8File(); V8File.Inflate(args[1], args[2], true); } else if (cur_mode == "-deflate" || cur_mode == "-d") diff --git a/V8FormatsLibrary/V8Formats.cs b/V8FormatsLibrary/V8Formats.cs index 683d4b7..41eb0d0 100644 --- a/V8FormatsLibrary/V8Formats.cs +++ b/V8FormatsLibrary/V8Formats.cs @@ -8,37 +8,61 @@ using DevelPlatform.SpecialTypes; namespace DevelPlatform.OneCEUtils.V8Formats { public class V8Formats - { - public static readonly string V8P_VERSION = "1.0"; + { + /// + /// Текущая версия библиотеки V8Formats. + /// + public static readonly string V8P_VERSION = "1.0.3"; + /// + /// Авторы библиотеки. + /// public static readonly string V8P_RIGHT = "YPermitin (ypermitin@yandex.ru) www.develplatform.ru\n PSPlehanov (psplehanov@mail.ru)"; public class V8File : IDisposable { #region global - - // Максимальный размер блока в памяти. - // Используется если режим работы установлен в OPTIMAL. - // В случае, если размер обрабатываемого блока превышает заданную величину, - // то данные сохраняются во временный файл. - // По умолчанию 1 МБ - public const int MAX_BLOCK_SIZE_IN_MEMORY_BYTES = 1048576; - public const int MAX_FILE_SIZE = 209715200; - public static UInt32 V8_DEFAULT_PAGE_SIZE = 512; + /// + /// Максимальный размер блока в памяти. + /// Используется если режим работы установлен в OPTIMAL. + /// В случае, если размер обрабатываемого блока превышает заданную величину, + /// то данные сохраняются во временный файл. + /// По умолчанию 1 МБ + /// + public const int MAX_BLOCK_SIZE_IN_MEMORY_BYTES = 1048576; + /// + /// Максимальный размер файла для обработки в оперативной памяти. + /// Если входящий файл имеет больший размер, то + /// автоматически режим работы (OperationMode) переключается + /// в FileSystem + /// + public const int MAX_FILE_SIZE = 209715200; + /// + /// Стандартный размер блока данных в байтах для форматов файлов CF, EPF и ERF. + /// + public static UInt32 V8_DEFAULT_PAGE_SIZE = 512; + /// + /// Константа, обозначающая некую «пустоту» – это число 0x7fffffff. + /// Когда мы собираем документ из блоков, то смотрим в заголовке на адрес следующего блока. Если он равен 0x7fffffff, то «следующего» блока нет, этот – последний. + /// private static UInt32 V8_FF_SIGNATURE = 0x7fffffff; - + #endregion #region variables - + + /// + /// Режим обработки входящих данных + /// public Mode OperationMode { set; get; } - stFileHeader FileHeader; - List ElemsAddrs; - List Elems; - bool IsDataPacked; + + private stFileHeader FileHeader; + private List ElemsAddrs; + private List Elems; + private bool IsDataPacked; private V8File _parentV8File; - public V8File ParentV8File + private V8File ParentV8File { get { @@ -46,7 +70,7 @@ namespace DevelPlatform.OneCEUtils.V8Formats } } private Guid _objectId; - public Guid ObjectId + private Guid ObjectId { get { @@ -54,7 +78,7 @@ namespace DevelPlatform.OneCEUtils.V8Formats } } private string _tmpFolder; - public string tmpFolder + private string tmpFolder { get { @@ -76,7 +100,7 @@ namespace DevelPlatform.OneCEUtils.V8Formats #region structures - struct stFileHeader + private struct stFileHeader { byte[] next_page_addr; byte[] page_size; @@ -120,7 +144,7 @@ namespace DevelPlatform.OneCEUtils.V8Formats } }; - public struct stElemAddr + private struct stElemAddr { public UInt32 elem_header_addr; public UInt32 elem_data_addr; @@ -166,7 +190,7 @@ namespace DevelPlatform.OneCEUtils.V8Formats } }; - struct stBlockHeader + private struct stBlockHeader { public byte EOL_0D; public byte EOL_0A; @@ -358,6 +382,9 @@ namespace DevelPlatform.OneCEUtils.V8Formats #region publicMethods + /// + /// Распаковка произвольных файлов + /// public void Inflate(string in_filename, string out_filename, bool enableNewCode = true) { if (!File.Exists(in_filename)) @@ -384,6 +411,9 @@ namespace DevelPlatform.OneCEUtils.V8Formats } } + /// + /// Сжатие произвольных файлов + /// public void Deflate(string in_filename, string out_filename, bool enableNewCode = true) { if (!File.Exists(in_filename)) @@ -410,6 +440,9 @@ namespace DevelPlatform.OneCEUtils.V8Formats } } + /// + /// Распаковка файла в файловую структуру с минимальной детализацией + /// public void UnpackToFolder(string filenameIn, string dirName, string UnpackElemWithName = null, bool printProgress = false, bool enableNewCode = true) { @@ -480,6 +513,9 @@ namespace DevelPlatform.OneCEUtils.V8Formats ClearTempData(); } + /// + /// Упаковка файла из файловой структуры с минимальной детализацией + /// public void PackFromFolder(string dirname, string outFileName, bool enableNewCode = true) { string filename; @@ -528,6 +564,9 @@ namespace DevelPlatform.OneCEUtils.V8Formats ClearTempData(); } + /// + /// Распаковка файла в файловую структуру с подробной детализацией детализацией + /// public void Parse(string filename, string dirname, int level = 0, bool enableNewCode = true) { FileInfo filePath = new FileInfo(filename); @@ -548,6 +587,9 @@ namespace DevelPlatform.OneCEUtils.V8Formats ClearTempData(); } + /// + /// Упаковка файла из файловой структуры с подробной детализацией детализацией + /// public void Build(string dirName, string filename, int level = 0, bool enableNewCode = true) { LoadFileFromFolder(dirName, true); @@ -1705,10 +1747,32 @@ namespace DevelPlatform.OneCEUtils.V8Formats #endregion } + /// + /// Варианты работы с входящими данными. + /// public enum Mode { + /// + /// Режим обработки данных выбирается автоматически (в памяти или через файловую систему). + /// Если размер входных данных больше 200 МБ, то работа выполняется через временные файлы, + /// иначе по максимуму используется оперативная память. + /// При обработке блоков также выполняется проверка. Если размер блока больше 1МБ, + /// то для его обработки будет использована файловая система. Это значение по умолчанию. + /// Optimal, + + /// + /// Все операции выполняются только в оперативной памятьи. + /// + /// ВНИМАНИЕ: При очень больших обрабатываемых объемах данных + /// приложению просто может не хватить выделяемого объема памяти! + /// MemoryUsage, + + /// + /// Все операции выполняются только в файловой системе. + /// Оперативная память используется по минимум. + /// FileSystem } @@ -1755,14 +1819,16 @@ namespace DevelPlatform.OneCEUtils.V8Formats #endregion } - public class GRS + #region inDevelop + private class GRS { // Класс находится в разработке... } - public class MXL + private class MXL { // Класс находится в разработке... } + #endregion } } diff --git a/V8FormatsLibrary/V8FormatsLibrary.csproj b/V8FormatsLibrary/V8FormatsLibrary.csproj index 7b9bf22..92cb005 100644 --- a/V8FormatsLibrary/V8FormatsLibrary.csproj +++ b/V8FormatsLibrary/V8FormatsLibrary.csproj @@ -37,8 +37,6 @@ - -