1 //
2 // Copyright (c) 2010-2024 Antmicro
3 //
4 // This file is licensed under the MIT License.
5 // Full license text is available in 'licenses/MIT.txt'.
6 //
7 
8 using Sprache;
9 using System.Collections.Generic;
10 using System.Linq;
11 
12 namespace Antmicro.Renode.PlatformDescription.Syntax
13 {
14 
15     public sealed class EnumValue : Value
16     {
EnumValue(IEnumerable<string> elements)17         public EnumValue(IEnumerable<string> elements)
18         {
19             var nameSpaceAndType = new Stack<string>();
20             foreach(var element in elements)
21             {
22                 nameSpaceAndType.Push(element);
23             }
24             Value = nameSpaceAndType.Pop();
25             TypeName = nameSpaceAndType.Pop();
26             ReversedNamespace = nameSpaceAndType;
27         }
28 
ToString()29         public override string ToString()
30         {
31             return string.Format("[EnumValue: {0}]", ToShortString());
32         }
33 
ToShortString()34         public string ToShortString()
35         {
36             return ReversedNamespace.Reverse().Concat(new[] { TypeName, Value }).Aggregate((x, y) => x + '.' + y);
37         }
38 
39         public IEnumerable<string> ReversedNamespace { get; private set; }
40         public string Value { get; private set; }
41         public string TypeName { get; }
42     }
43 }
44