~ruther/NosSmooth

ref: 762fc34c97e8b1f6e9290426b8bc2a78122e28ba NosSmooth/Data/NosSmooth.Data.NOSFiles/Parsers/Dat/DatEntry.cs -rw-r--r-- 1.4 KiB
762fc34c — Rutherther Merge pull request #82 from Rutherther/feat/serialize-stackalloc 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//
//  DatEntry.cs
//
//  Copyright (c) František Boháček. All rights reserved.
//  Licensed under the MIT license. See LICENSE file in the project root for full license information.

namespace NosSmooth.Data.NOSFiles.Parsers.Dat;

/// <summary>
/// An entry for a <see cref="DatItem"/>.
/// </summary>
public struct DatEntry
{
    private readonly IReadOnlyList<string> _data;

    /// <summary>
    /// Initializes a new instance of the <see cref="DatEntry"/> struct.
    /// </summary>
    /// <param name="key">The key of the entry.</param>
    /// <param name="data">The data of the entry.</param>
    public DatEntry(string key, IReadOnlyList<string> data)
    {
        Key = key;
        _data = data;
    }

    /// <summary>
    /// Gets the key of the entry.
    /// </summary>
    public string Key { get; }

    /// <summary>
    /// Read a value on the given index.
    /// </summary>
    /// <param name="index">The index to read at.</param>
    /// <typeparam name="T">The type.</typeparam>
    /// <returns>Read value.</returns>
    public T Read<T>(int index)
    {
        return (T)Convert.ChangeType(_data[index], typeof(T));
    }

    /// <summary>
    /// Get the values of the current entry.
    /// </summary>
    /// <remarks>
    /// Skips the header.
    /// </remarks>
    /// <returns>An array with the values.</returns>
    public string[] GetValues()
    {
        return _data.Skip(1).ToArray();
    }
}
Do not follow this link