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