#nullable enable using System; using System.Diagnostics.CodeAnalysis; using T3.Core.DataTypes.DataSet; namespace T3.IoServices; /// /// Resolves any file that can serve as a DataClip source (.data recordings, MIDI /// files) to a shared, cached . Central extension dispatch so UI code /// showing clip content doesn't hard-code per-format rules. /// public static class DataClipFiles { public static bool TryGetDataSetForFile(string path, string absolutePath, [NotNullWhen(true)] out DataSet? dataSet, out string failureReason) { if (path.EndsWith(".data", StringComparison.OrdinalIgnoreCase)) { return DataSetCache.TryGet(absolutePath, out dataSet, out failureReason); } if (path.EndsWith(".mid", StringComparison.OrdinalIgnoreCase) || path.EndsWith(".midi", StringComparison.OrdinalIgnoreCase)) { return MidiFileToDataSet.TryGet(absolutePath, out dataSet, out failureReason); } dataSet = null; failureReason = $"Not a data-clip file format: {path}"; return false; } }