// /*************************************************************************** // Aaru Data Preservation Suite // ---------------------------------------------------------------------------- // // Filename : Constants.cs // Author(s) : Natalia Portillo // // Component : Disk image plugins. // // --[ Description ] ---------------------------------------------------------- // // Contains constants for cdrdao cuesheets (toc/bin). // // --[ License ] -------------------------------------------------------------- // // This library is free software; you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as // published by the Free Software Foundation; either version 2.1 of the // License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, see . // // ---------------------------------------------------------------------------- // Copyright © 2011-2025 Natalia Portillo // ****************************************************************************/ using System.Text.RegularExpressions; namespace Aaru.Images; public sealed partial class Cdrdao { /// Audio track, 2352 bytes/sector const string CDRDAO_TRACK_TYPE_AUDIO = "AUDIO"; /// Mode 1 track, cooked, 2048 bytes/sector const string CDRDAO_TRACK_TYPE_MODE1 = "MODE1"; /// Mode 1 track, raw, 2352 bytes/sector const string CDRDAO_TRACK_TYPE_MODE1_RAW = "MODE1_RAW"; /// Mode 2 mixed formless, cooked, 2336 bytes/sector const string CDRDAO_TRACK_TYPE_MODE2 = "MODE2"; /// Mode 2 form 1 track, cooked, 2048 bytes/sector const string CDRDAO_TRACK_TYPE_MODE2_FORM1 = "MODE2_FORM1"; /// Mode 2 form 2 track, cooked, 2324 bytes/sector const string CDRDAO_TRACK_TYPE_MODE2_FORM2 = "MODE2_FORM2"; /// Mode 2 mixed forms track, cooked, 2336 bytes/sector const string CDRDAO_TRACK_TYPE_MODE2_MIX = "MODE2_FORM_MIX"; /// Mode 2 track, raw, 2352 bytes/sector const string CDRDAO_TRACK_TYPE_MODE2_RAW = "MODE2_RAW"; const string REGEX_COMMENT = @"^\s*\/{2}(?.+)$"; const string REGEX_COPY = @"^\s*(?NO)?\s*COPY"; const string REGEX_DISCTYPE = @"^\s*(?(CD_DA|CD_ROM_XA|CD_ROM|CD_I))"; const string REGEX_EMPHASIS = @"^\s*(?NO)?\s*PRE_EMPHASIS"; const string REGEX_FILE_AUDIO = """^\s*(AUDIO)?FILE\s*"(?.+)"\s*(#(?\d+))?\s*((?[\d]+:[\d]+:[\d]+)|(?\d+))\s*(?[\d]+:[\d]+:[\d]+)?"""; const string REGEX_FILE_DATA = """^\s*DATAFILE\s*"(?.+)"\s*(#(?\d+))?\s*(?[\d]+:[\d]+:[\d]+)?"""; const string REGEX_INDEX = @"^\s*INDEX\s*(?
\d+:\d+:\d+)"; const string REGEX_ISRC = """ ^\s*ISRC\s*"(?[A-Z0-9]{5,5}[0-9]{7,7})" """; const string REGEX_MCN = """ ^\s*CATALOG\s*"(?[\x21-\x7F]{13,13})" """; const string REGEX_PREGAP = @"^\s*START\s*(?
\d+:\d+:\d+)?"; const string REGEX_STEREO = @"^\s*(?(TWO|FOUR))_CHANNEL_AUDIO"; const string REGEX_TRACK = @"^\s*TRACK\s*(?(AUDIO|MODE1_RAW|MODE1|MODE2_FORM1|MODE2_FORM2|MODE2_FORM_MIX|MODE2_RAW|MODE2))\s*(?(RW_RAW|RW))?"; const string REGEX_ZERO_AUDIO = @"^\s*SILENCE\s*(?\d+:\d+:\d+)"; const string REGEX_ZERO_DATA = @"^\s*ZERO\s*(?\d+:\d+:\d+)"; const string REGEX_ZERO_PREGAP = @"^\s*PREGAP\s*(?\d+:\d+:\d+)"; // CD-Text const string REGEX_ARRANGER = """ ^\s*ARRANGER\s*"(?.+)" """; const string REGEX_COMPOSER = """ ^\s*COMPOSER\s*"(?.+)" """; const string REGEX_DISC_ID = """ ^\s*DISC_ID\s*"(?.+)" """; const string REGEX_MESSAGE = """ ^\s*MESSAGE\s*"(?.+)" """; const string REGEX_PERFORMER = """ ^\s*PERFORMER\s*"(?.+)" """; const string REGEX_SONGWRITER = """ ^\s*SONGWRITER\s*"(?.+)" """; const string REGEX_TITLE = """ ^\s*TITLE\s*"(?.+)" """; const string REGEX_UPC = """ ^\s*UPC_EAN\s*"(?<catalog>[\d]{13,13})" """; // Unused const string REGEX_CD_TEXT = @"^\s*CD_TEXT\s*\{"; const string REGEX_CLOSURE = @"^\s*\}"; const string REGEX_LANGUAGE = @"^\s*LANGUAGE\s*(?<code>\d+)\s*\{"; const string REGEX_LANGUAGE_MAP = @"^\s*LANGUAGE_MAP\s*\{"; const string REGEX_LANGUAGE_MAPPING = @"^\s*(?<code>\d+)\s?\:\s?(?<language>\d+|\w+)"; [GeneratedRegex(REGEX_COMMENT)] private static partial Regex CommentRegex(); [GeneratedRegex(REGEX_DISCTYPE)] private static partial Regex DiscTypeRegex(); [GeneratedRegex(REGEX_MCN)] private static partial Regex McnRegex(); [GeneratedRegex(REGEX_TRACK)] private static partial Regex TrackRegex(); [GeneratedRegex(REGEX_COPY)] private static partial Regex CopyRegex(); [GeneratedRegex(REGEX_EMPHASIS)] private static partial Regex EmphasisRegex(); [GeneratedRegex(REGEX_STEREO)] private static partial Regex StereoRegex(); [GeneratedRegex(REGEX_ISRC)] private static partial Regex IsrcRegex(); [GeneratedRegex(REGEX_INDEX)] private static partial Regex IndexRegex(); [GeneratedRegex(REGEX_PREGAP)] private static partial Regex PregapRegex(); [GeneratedRegex(REGEX_ZERO_PREGAP)] private static partial Regex ZeroPregapRegex(); [GeneratedRegex(REGEX_ZERO_DATA)] private static partial Regex ZeroDataRegex(); [GeneratedRegex(REGEX_ZERO_AUDIO)] private static partial Regex ZeroAudioRegex(); [GeneratedRegex(REGEX_FILE_AUDIO)] private static partial Regex FileAudioRegex(); [GeneratedRegex(REGEX_FILE_DATA)] private static partial Regex FileDataRegex(); [GeneratedRegex(REGEX_TITLE)] private static partial Regex TitleRegex(); [GeneratedRegex(REGEX_PERFORMER)] private static partial Regex PerformerRegex(); [GeneratedRegex(REGEX_SONGWRITER)] private static partial Regex SongwriterRegex(); [GeneratedRegex(REGEX_COMPOSER)] private static partial Regex ComposerRegex(); [GeneratedRegex(REGEX_ARRANGER)] private static partial Regex ArrangerRegex(); [GeneratedRegex(REGEX_MESSAGE)] private static partial Regex MessageRegex(); [GeneratedRegex(REGEX_DISC_ID)] private static partial Regex DiscIdRegex(); [GeneratedRegex(REGEX_UPC)] private static partial Regex UpcRegex(); [GeneratedRegex(REGEX_CD_TEXT)] private static partial Regex CdTextRegex(); [GeneratedRegex(REGEX_LANGUAGE)] private static partial Regex LanguageRegex(); [GeneratedRegex(REGEX_CLOSURE)] private static partial Regex ClosureRegex(); [GeneratedRegex(REGEX_LANGUAGE_MAP)] private static partial Regex LanguageMapRegex(); [GeneratedRegex(REGEX_LANGUAGE_MAPPING)] private static partial Regex LanguageMappingRegex(); }