blob: 27b66379e87468b0f47b2f75f3178d2e6e358a00 [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(
27 const char *name,
28 const char *help,
29 const char *syntax
30) :
31 CommandObject (name, help, syntax),
32 m_crossref_object_types()
33{
34}
35
36CommandObjectCrossref::~CommandObjectCrossref ()
37{
38}
39
40bool
41CommandObjectCrossref::Execute
42(
43 Args& command,
44 CommandContext *context,
45 CommandInterpreter *interpreter,
46 CommandReturnObject &result
47)
48{
49 if (m_crossref_object_types.GetArgumentCount() == 0)
50 {
51 result.AppendErrorWithFormat ("There are no objects for which you can call '%s'.\n", GetCommandName());
52 result.SetStatus (eReturnStatusFailed);
53 }
54 else
55 {
56 GenerateHelpText (result);
57 }
58 return result.Succeeded();
59}
60
61void
62CommandObjectCrossref::AddObject (const char *obj_name)
63{
64 m_crossref_object_types.AppendArgument (obj_name);
65}
66
67const char **
68CommandObjectCrossref::GetObjectTypes () const
69{
70 return m_crossref_object_types.GetConstArgumentVector();
71}
72
73void
74CommandObjectCrossref::GenerateHelpText (CommandReturnObject &result)
75{
76 result.AppendMessage ("This command can be called on the following types of objects:");
77
78 for (int i = 0; i < m_crossref_object_types.GetArgumentCount(); ++i)
79 {
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}