blob: 0d11369c6e764a18220bb8a6377cd3f2ae411b0a [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(
Greg Clayton63094e02010-06-23 01:19:29 +000043 CommandInterpreter &interpreter,
Chris Lattner24943d22010-06-08 16:52:24 +000044 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
77 for (int i = 0; i < m_crossref_object_types.GetArgumentCount(); ++i)
78 {
79 const char *obj_name = m_crossref_object_types.GetArgumentAtIndex(i);
80 result.AppendMessageWithFormat (" %s (e.g. '%s %s')\n", obj_name,
81 obj_name, GetCommandName());
82 }
83
84 result.SetStatus (eReturnStatusSuccessFinishNoResult);
85}
86
87bool
88CommandObjectCrossref::IsCrossRefObject ()
89{
90 return true;
91}