1 // 2 // Copyright (c) 2010-2022 Antmicro 3 // 4 // This file is licensed under the MIT License. 5 // Full license text is available in 'licenses/MIT.txt'. 6 // 7 using System; 8 using System.Collections.Generic; 9 10 namespace Antmicro.Renode.Utilities.RESD 11 { 12 public struct MetadataValue 13 { MetadataValueAntmicro.Renode.Utilities.RESD.MetadataValue14 public MetadataValue(object value) 15 { 16 innerValue = value; 17 } 18 TryAsAntmicro.Renode.Utilities.RESD.MetadataValue19 public bool TryAs<T>(out T value) 20 { 21 value = default(T); 22 if(innerValue is T) 23 { 24 value = As<T>(); 25 return true; 26 } 27 return false; 28 } 29 AsAntmicro.Renode.Utilities.RESD.MetadataValue30 public T As<T>() 31 { 32 return (T)innerValue; 33 } 34 ToStringAntmicro.Renode.Utilities.RESD.MetadataValue35 public override string ToString() 36 { 37 return innerValue.ToString(); 38 } 39 40 public Type InnerType => innerValue.GetType(); 41 42 private object innerValue; 43 } 44 45 public enum MetadataValueType 46 { 47 Reserved = 0x00, 48 Int8 = 0x01, 49 UInt8 = 0x02, 50 Int16 = 0x03, 51 UInt16 = 0x04, 52 Int32 = 0x05, 53 UInt32 = 0x06, 54 Int64 = 0x07, 55 UInt64 = 0x08, 56 Float = 0x09, 57 Double = 0x0A, 58 String = 0x0B, 59 Blob = 0x0C, 60 } 61 } 62