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