= Формат файлов !FileList (*.flist) = Версия №2. '''В процессе проектирования'''. Более старые версии: * [wiki:FileListFormat_v1 1]. ---- Назначение формата - хранение списка файлов с абсолютными или относительными путями + при необходимости их чексум по определенному алгоритму. Сюда-же записывается информация о принадлежности файла к некоей определенной группе - это может быть использовано для хранения в одном списке информации о файлах с одинаковыми именами и расположением, но физически и по содержанию - разных. Например для языковых пакетов. Формат представляет из себя гибрид *.ini-файла с нестандартной секцией [files] - содержимое секции читается по строкам и содержит пути к файлам и их чексуммы. Внутри есть секции: * [Main] * [Files] ---- == [Main] == Внутри есть параметры: * !FormatName (string) - имя формата. * !FormatVersion (integer) - версия формата. * !PathsAreAbsolute (bool) - используются ли абсолютные пути. Если false - то используются пути относительно места где лежит данный *.flist * !AddSize (bool) - добавлять ли инфу о размере файла. * AddCRC32 (bool) - добавлять ли crc32 файла. * !FilesNum (integer) - количество файлов в списке. * !UseGroups (bool) - используются ли группы файлов. По умолчанию false. * !UsedGroups (string) - имена всех используемых групп файлов, через запятую, по умолчанию пустая строка, но вообще это значение используется для оптимизации и исключения необходимости парсеру каждый раз при открытии нового списка просматривать весь список файлов для получения списка всех групп - поэтому реализация обязана поддерживать актуальность информации в данном параметре после любого изменения собственно списка файлов. ---- == [Files] == Нестандартная для обычного ini секция. Внутри список файлов - по 1 строке на каждый файл. Строка вида: Parameter1 : Value1; Parameter2 : Value2; ... ; ParameterN : ValueN Обязательные параметры: * File - путь к файлу или папке. * Type - тип - файл или папка - значение либо File либо Dir. Также возможны параметры: * Size с числовым значением в байтах - размер; * CRC32 со значением чексуммы. * Group с текстовым значением - именем группы файла. Если [Main]->!UseGroups == true то этот параметр обязателен. Если файл не принадлежит явно какой-либо группе - то устанавливается значение "none" (без кавычек, ессно) - например при чтении списка в формате более старой версии, когда еще не было групп.