blob: 3088bba7f4263aabeffc1274db3b59a14462db93 [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) :
Jim Inghamda26bd22012-06-08 21:56:10 +000032 CommandObjectParsed (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
Jim Inghamda26bd22012-06-08 21:56:10 +000042CommandObjectCrossref::DoExecute (Args& command, CommandReturnObject &result)
Chris Lattner24943d22010-06-08 16:52:24 +000043{
44 if (m_crossref_object_types.GetArgumentCount() == 0)
45 {
46 result.AppendErrorWithFormat ("There are no objects for which you can call '%s'.\n", GetCommandName());
47 result.SetStatus (eReturnStatusFailed);
48 }
49 else
50 {
51 GenerateHelpText (result);
52 }
53 return result.Succeeded();
54}
55
56void
57CommandObjectCrossref::AddObject (const char *obj_name)
58{
59 m_crossref_object_types.AppendArgument (obj_name);
60}
61
62const char **
63CommandObjectCrossref::GetObjectTypes () const
64{
65 return m_crossref_object_types.GetConstArgumentVector();
66}
67
68void
69CommandObjectCrossref::GenerateHelpText (CommandReturnObject &result)
70{
71 result.AppendMessage ("This command can be called on the following types of objects:");
72
Greg Clayton54e7afa2010-07-09 20:39:50 +000073 const size_t count = m_crossref_object_types.GetArgumentCount();
74 for (size_t i = 0; i < count; ++i)
Chris Lattner24943d22010-06-08 16:52:24 +000075 {
76 const char *obj_name = m_crossref_object_types.GetArgumentAtIndex(i);
77 result.AppendMessageWithFormat (" %s (e.g. '%s %s')\n", obj_name,
78 obj_name, GetCommandName());
79 }
80
81 result.SetStatus (eReturnStatusSuccessFinishNoResult);
82}
83
84bool
85CommandObjectCrossref::IsCrossRefObject ()
86{
87 return true;
88}