1 //
2 // Copyright (c) 2010-2018 Antmicro
3 // Copyright (c) 2011-2015 Realtime Embedded
4 //
5 // This file is licensed under the MIT License.
6 // Full license text is available in 'licenses/MIT.txt'.
7 //
8 using System;
9 using System.Collections.Generic;
10 using Antmicro.Renode.UserInterface.Tokenizer;
11 using System.Reflection;
12 using AntShell.Commands;
13 
14 namespace Antmicro.Renode.UserInterface.Commands
15 {
16     public class AllowPrivatesCommand : AutoLoadCommand
17     {
PrintHelp(ICommandInteraction writer)18         public override void PrintHelp(ICommandInteraction writer)
19         {
20             base.PrintHelp(writer);
21             var allowed = (monitor.CurrentBindingFlags & BindingFlags.NonPublic) > 0;
22             writer.WriteLine();
23             writer.WriteLine(allowed ? "Private fields are available":"Private fields are not available");
24             return;
25         }
26 
27         [Runnable]
RunnableAttribute(ICommandInteraction writer, BooleanToken allow)28         public void RunnableAttribute(ICommandInteraction writer, BooleanToken allow)
29         {
30             if(allow.Value)
31             {
32                 monitor.CurrentBindingFlags |= BindingFlags.NonPublic;
33                 monitor.ClearCache();
34             }
35             else
36             {
37                 monitor.CurrentBindingFlags &= ~BindingFlags.NonPublic;
38                 monitor.ClearCache();
39             }
40         }
41 
AllowPrivatesCommand(Monitor monitor)42         public AllowPrivatesCommand(Monitor monitor):base(monitor, "allowPrivates","allow private fields and properties manipulation.", "privs")
43         {
44         }
45     }
46 }
47 
48