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/ruby/debugger/dbgcontroller.h

162 lines
6.0 KiB

/***************************************************************************
begin : Sun Aug 8 1999
copyright : (C) 1999 by John Birch
email : jbb@kdevelop.org
Adapted for ruby debugging
--------------------------
begin : Mon Nov 1 2004
copyright : (C) 2004 by Richard Dale
email : Richard_Dale@tipitina.demon.co.uk
***************************************************************************/
/***************************************************************************
* *
* 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. *
* *
***************************************************************************/
#ifndef _DBGCONTROLLER_H_
#define _DBGCONTROLLER_H_
#include <tqobject.h>
#include <domutil.h>
class KProcess;
class QString;
class QStrList;
namespace RDBDebugger
{
class Breakpoint;
class DbgCommand;
class LazyFetchItem;
class VarItem;
/***************************************************************************/
/**
* @author jbb
*/
/***************************************************************************/
// sigh - namespace's don't work on some of the older compilers
enum DBGStateFlags
{
s_dbgNotStarted = 1 << 0,
s_appNotStarted = 1 << 1,
s_appBusy = 1 << 2,
s_waitForWrite = 1 << 3,
s_programExited = 1 << 4,
s_silent = 1 << 5,
s_fetchLocals = 1 << 6,
s_viewBT = 1 << 7,
s_viewBP = 1 << 8,
s_attached = 1 << 9,
s_fetchGlobals = 1 << 10,
s_waitTimer = 1 << 11,
s_shuttingDown = 1 << 12,
s_viewThreads = 1 << 13
};
enum RttiValues {
RTTI_WATCH_ROOT = 1001,
RTTI_GLOBAL_ROOT = 1002,
RTTI_VAR_FRAME_ROOT = 1003,
RTTI_LAZY_FETCH_ITEM = 1004,
RTTI_VAR_ITEM = 1005,
RTTI_WATCH_VAR_ITEM = 1006,
RTTI_THREAD_STACK_ITEM = 1007,
RTTI_FRAME_STACK_ITEM = 1008
};
/***************************************************************************/
/***************************************************************************/
/***************************************************************************/
class DbgController : public QObject
{
Q_OBJECT
public:
DbgController();
virtual ~DbgController();
virtual bool stateIsOn( int state ) = 0;
protected:
virtual void queueCmd(DbgCommand *cmd, bool executeNext) = 0;
virtual void parse(char *str) = 0;
public slots:
virtual void configure() = 0;
/**
* Start the debugger
* \param ruby_interpreter shell
* \param character_coding -K option
* \param run_directory Directory from where the program should be run
* \param debuggee_path Absolute path to debuggee.rb debugger script
* \param application Absolute path to application
* \param run_arguments Command line arguments to be passed to the application
* \param show_constants Show ruby constants in the variables view
*/
virtual void slotStart(const TQString& ruby_interpreter,
const TQString& character_coding,
const TQString& run_directory,
const TQString& debuggee_path,
const TQString& application,
const TQString& run_arguments,
bool show_constants,
bool trace_into_ruby) = 0;
virtual void slotStopDebugger() = 0;
virtual void slotRun() = 0;
virtual void slotRunUntil(const TQString &fileName, int lineNum) = 0;
virtual void slotStepInto() = 0;
virtual void slotStepOver() = 0;
virtual void slotStepOutOff() = 0;
virtual void slotBreakInto() = 0;
virtual void slotBPState(const Breakpoint&) = 0;
virtual void slotExpandItem(VarItem *parent,
const TQCString &userRequest) = 0;
virtual void slotSelectFrame(int frame, int thread,
const TQString& frameName) = 0;
virtual void slotFetchGlobals(bool fetch) = 0;
protected slots:
virtual void slotDbgStdout(KProcess *proc, char *buf, int buflen) = 0;
virtual void slotDbgStderr(KProcess*, char*, int) {} ;
virtual void slotDbgWroteStdin(KProcess *proc) = 0;
virtual void slotDbgProcessExited(KProcess *proc) = 0;
virtual void slotAcceptConnection(int passive_socket) = 0;
virtual void slotReadFromSocket(int socket) = 0;
signals:
void gotoSourcePosition (const TQString &fileName, int lineNum);
void rawRDBBreakpointList (char *buf);
void rawRDBBreakpointSet (char *buf, int key);
void ttyStdout (const char *output);
void ttyStderr (const char *output);
void rdbStdout (const char *output);
void rdbStderr (const char *output);
void showStepInSource (const TQString &fileName, int lineNum, const TQString &address);
void dbgStatus (const TQString &status, int statusFlag);
protected:
KProcess *dbgProcess_;
};
}
#endif