diff options
Diffstat (limited to 'lldb/source/Interpreter/CommandObjectCrossref.cpp')
-rw-r--r-- | lldb/source/Interpreter/CommandObjectCrossref.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/lldb/source/Interpreter/CommandObjectCrossref.cpp b/lldb/source/Interpreter/CommandObjectCrossref.cpp new file mode 100644 index 00000000000..27b66379e87 --- /dev/null +++ b/lldb/source/Interpreter/CommandObjectCrossref.cpp @@ -0,0 +1,92 @@ +//===-- CommandObjectCrossref.cpp -------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "lldb/Interpreter/CommandObjectCrossref.h" + +// C Includes +// C++ Includes +// Other libraries and framework includes +// Project includes +#include "lldb/Interpreter/CommandReturnObject.h" + +using namespace lldb; +using namespace lldb_private; + +//------------------------------------------------------------------------- +// CommandObjectCrossref +//------------------------------------------------------------------------- + +CommandObjectCrossref::CommandObjectCrossref +( + const char *name, + const char *help, + const char *syntax +) : + CommandObject (name, help, syntax), + m_crossref_object_types() +{ +} + +CommandObjectCrossref::~CommandObjectCrossref () +{ +} + +bool +CommandObjectCrossref::Execute +( + Args& command, + CommandContext *context, + CommandInterpreter *interpreter, + CommandReturnObject &result +) +{ + if (m_crossref_object_types.GetArgumentCount() == 0) + { + result.AppendErrorWithFormat ("There are no objects for which you can call '%s'.\n", GetCommandName()); + result.SetStatus (eReturnStatusFailed); + } + else + { + GenerateHelpText (result); + } + return result.Succeeded(); +} + +void +CommandObjectCrossref::AddObject (const char *obj_name) +{ + m_crossref_object_types.AppendArgument (obj_name); +} + +const char ** +CommandObjectCrossref::GetObjectTypes () const +{ + return m_crossref_object_types.GetConstArgumentVector(); +} + +void +CommandObjectCrossref::GenerateHelpText (CommandReturnObject &result) +{ + result.AppendMessage ("This command can be called on the following types of objects:"); + + for (int i = 0; i < m_crossref_object_types.GetArgumentCount(); ++i) + { + const char *obj_name = m_crossref_object_types.GetArgumentAtIndex(i); + result.AppendMessageWithFormat (" %s (e.g. '%s %s')\n", obj_name, + obj_name, GetCommandName()); + } + + result.SetStatus (eReturnStatusSuccessFinishNoResult); +} + +bool +CommandObjectCrossref::IsCrossRefObject () +{ + return true; +} |