You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/languages/cpp/debugger/gdbcommand.cpp

143 lines
3.1 KiB

/***************************************************************************
begin : Sun Aug 8 1999
copyright : (C) 1999 by John Birch
email : jbb@kdevelop.org
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "gdbcommand.h"
#include "breakpoint.h"
#include "variablewidget.h"
namespace GDBDebugger
{
GDBCommand::GDBCommand(const TQString &command)
: command_(command), run(false), handler_this(0)
{
}
TQString GDBCommand::cmdToSend()
{
return initialString() + "\n";
}
TQString GDBCommand::initialString() const
{
return command_;
}
bool GDBCommand::isUserCommand() const
{
return false;
}
bool
GDBCommand::invokeHandler(const GDBMI::ResultRecord& r)
{
if (handler_this) {
(handler_this->*handler_method)(r);
return true;
}
else {
return false;
}
}
void GDBCommand::newOutput(const TQString& line)
{
lines.push_back(line);
}
const TQValueVector<TQString>& GDBCommand::allStreamOutput() const
{
return lines;
}
bool GDBCommand::handlesError() const
{
return handlesError_;
}
GDBCommand::~GDBCommand()
{
}
bool GDBCommand::isRun() const
{
return run;
}
void GDBCommand::setRun(bool run)
{
this->run = run;
}
UserCommand::UserCommand(const TQString& s)
: GDBCommand(s)
{
}
bool UserCommand::isUserCommand() const
{
return true;
}
ModifyBreakpointCommand::ModifyBreakpointCommand(
const TQString& command, const Breakpoint* bp)
: GDBCommand(command.local8Bit()),
bp_(bp)
{}
QString
ModifyBreakpointCommand::cmdToSend()
{
if (bp_->dbgId() > 0)
{
TQString s(initialString());
s = s.arg(bp_->dbgId()) + "\n";
return s.local8Bit();
}
else
{
// The ID can be -1 either if breakpoint set command
// failed, or if breakpoint is somehow already deleted.
// In either case, should not do anything.
return "";
}
}
bool CliCommand::invokeHandler(const GDBMI::ResultRecord& r)
{
// On error, do nothing.
if (r.reason != "done")
return true;
if (cli_handler_this) {
(cli_handler_this->*cli_handler_method)(allStreamOutput());
return true;
}
else {
return false;
}
}
/***************************************************************************/
/***************************************************************************/
/***************************************************************************/
}