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