1/* 2 * Copyright 2012, Rene Gollent, rene@gollent.com. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 7#include "CliVariablesCommand.h" 8 9#include <stdio.h> 10 11#include <AutoLocker.h> 12 13#include "CliContext.h" 14#include "Team.h" 15#include "ValueNode.h" 16#include "ValueNodeContainer.h" 17#include "ValueNodeManager.h" 18 19 20CliVariablesCommand::CliVariablesCommand() 21 : 22 CliCommand("show current frame variables", 23 "%s\n" 24 "Prints the parameters and variables of the current frame, if " 25 " available.") 26{ 27} 28 29 30void 31CliVariablesCommand::Execute(int argc, const char* const* argv, 32 CliContext& context) 33{ 34 if (argc > 1) { 35 PrintUsage(argv[0]); 36 return; 37 } 38 39 ValueNodeManager* manager = context.GetValueNodeManager(); 40 41 ValueNodeContainer* container = manager->GetContainer(); 42 AutoLocker<ValueNodeContainer> containerLocker(container); 43 if (container == NULL || container->CountChildren() == 0) { 44 printf("No variables available.\n"); 45 return; 46 } 47 48 printf("Variables:\n"); 49 for (int32 i = 0; ValueNodeChild* child = container->ChildAt(i); i++) { 50 printf(" %s\n", child->Name().String()); 51 } 52} 53