1 //
2 // Copyright (c) 2010-2018 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 System;
9 using System.Collections.Generic;
10 using Sprache;
11 
12 namespace Antmicro.Renode.PlatformDescription
13 {
14 
15     public sealed class DeclarationPlace
16     {
DeclarationPlace()17         static DeclarationPlace()
18         {
19             BuiltinOrAlreadyRegistered = new DeclarationPlace();
20         }
21 
22         public static DeclarationPlace BuiltinOrAlreadyRegistered { get; private set; }
23 
DeclarationPlace(Position position, string file)24         public DeclarationPlace(Position position, string file)
25         {
26             Position = position;
27             File = file;
28         }
29 
DeclarationPlace()30         private DeclarationPlace()
31         {
32         }
33 
GetFriendlyDescription()34         public string GetFriendlyDescription()
35         {
36             if(this == BuiltinOrAlreadyRegistered)
37             {
38                 return "builtin";
39             }
40             return string.Format("at {2}{0}:{1}", Position.Line, Position.Column, File == "" ? "" : File + ':');
41         }
42 
ToString()43         public override string ToString()
44         {
45             return string.Format("[DeclarationPlace: Position={0}, File={1}]", Position, File);
46         }
47 
48         public Position Position { get; private set; }
49         public string File { get; private set; }
50     }
51 
52 }
53