blob: 461c7e85de815fc592de713445592535842b43ea [file] [log] [blame]
Chris Lattner24943d22010-06-08 16:52:24 +00001//===-- CommandObjectCrossref.cpp -------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "lldb/Interpreter/CommandObjectCrossref.h"
11
12// C Includes
13// C++ Includes
14// Other libraries and framework includes
15// Project includes
16#include "lldb/Interpreter/CommandReturnObject.h"
17
18using namespace lldb;
19using namespace lldb_private;
20
21//-------------------------------------------------------------------------
22// CommandObjectCrossref
23//-------------------------------------------------------------------------
24
25CommandObjectCrossref::CommandObjectCrossref
26(
Greg Clayton238c0a12010-09-18 01:14:36 +000027 CommandInterpreter &interpreter,
Chris Lattner24943d22010-06-08 16:52:24 +000028 const char *name,
29 const char *help,
30 const char *syntax
31) :
Greg Clayton238c0a12010-09-18 01:14:36 +000032 CommandObject (interpreter, name, help, syntax),
Chris Lattner24943d22010-06-08 16:52:24 +000033 m_crossref_object_types()
34{
35}
36
37CommandObjectCrossref::~CommandObjectCrossref ()
38{
39}
40
41bool
42CommandObjectCrossref::Execute
43(
44 Args& command,
Chris Lattner24943d22010-06-08 16:52:24 +000045 CommandReturnObject &result
46)
47{
48 if (m_crossref_object_types.GetArgumentCount() == 0)
49 {
50 result.AppendErrorWithFormat ("There are no objects for which you can call '%s'.\n", GetCommandName());
51 result.SetStatus (eReturnStatusFailed);
52 }
53 else
54 {
55 GenerateHelpText (result);
56 }
57 return result.Succeeded();
58}
59
60void
61CommandObjectCrossref::AddObject (const char *obj_name)
62{
63 m_crossref_object_types.AppendArgument (obj_name);
64}
65
66const char **
67CommandObjectCrossref::GetObjectTypes () const
68{
69 return m_crossref_object_types.GetConstArgumentVector();
70}
71
72void
73CommandObjectCrossref::GenerateHelpText (CommandReturnObject &result)
74{
75 result.AppendMessage ("This command can be called on the following types of objects:");
76
Greg Clayton54e7afa2010-07-09 20:39:50 +000077 const size_t count = m_crossref_object_types.GetArgumentCount();
78 for (size_t i = 0; i < count; ++i)
Chris Lattner24943d22010-06-08 16:52:24 +000079 {
80 const char *obj_name = m_crossref_object_types.GetArgumentAtIndex(i);
81 result.AppendMessageWithFormat (" %s (e.g. '%s %s')\n", obj_name,
82 obj_name, GetCommandName());
83 }
84
85 result.SetStatus (eReturnStatusSuccessFinishNoResult);
86}
87
88bool
89CommandObjectCrossref::IsCrossRefObject ()
90{
91 return true;
92}