summaryrefslogtreecommitdiffstats
path: root/kdbg/xsldbgdriver.h
blob: b4e2f434d7924fed1b9769785798864c712ed7d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/*
 * Copyright Johannes Sixt, Keith Isdale
 * This file is licensed under the GNU General Public License Version 2.
 * See the file COPYING in the toplevel directory of the source directory.
 */

#ifndef XSLDBGDRIVER_H
#define XSLDBGDRIVER_H

#include "dbgdriver.h"
#include "ntqregexp.h"


class XsldbgDriver:public DebuggerDriver {
  Q_OBJECT public:
    XsldbgDriver();
    ~XsldbgDriver();

    virtual TQString driverName() const;
    virtual TQString defaultInvocation() const;
    virtual TQStringList boolOptionList() const;
    static TQString defaultXsldbg();
    virtual bool startup(TQString cmdStr);
    virtual void commandFinished(CmdQueueItem * cmd);
    void slotReceiveOutput(TDEProcess * process, char *buffer, int buflen);

    virtual CmdQueueItem *executeCmd(DbgCommand, bool clearLow = false);
    virtual CmdQueueItem *executeCmd(DbgCommand, TQString strArg,
                                     bool clearLow = false);
    virtual CmdQueueItem *executeCmd(DbgCommand, int intArg,
                                     bool clearLow = false);
    virtual CmdQueueItem *executeCmd(DbgCommand, TQString strArg,
                                     int intArg, bool clearLow = false);
    virtual CmdQueueItem *executeCmd(DbgCommand, TQString strArg1,
                                     TQString strArg2, bool clearLow =
                                     false);
    virtual CmdQueueItem *executeCmd(DbgCommand, int intArg1, int intArg2,
                                     bool clearLow = false);
    virtual CmdQueueItem *queueCmd(DbgCommand, QueueMode mode);
    virtual CmdQueueItem *queueCmd(DbgCommand, TQString strArg,
                                   QueueMode mode);
    virtual CmdQueueItem *queueCmd(DbgCommand, int intArg, QueueMode mode);
    virtual CmdQueueItem *queueCmd(DbgCommand, TQString strArg, int intArg,
                                   QueueMode mode);
    virtual CmdQueueItem *queueCmd(DbgCommand, TQString strArg1,
                                   TQString strArg2, QueueMode mode);

    virtual void terminate();
    virtual void detachAndTerminate();
    virtual void interruptInferior();

    virtual void setPrintTQStringDataCmd(const char* cmd);
    /**
     * Parses the output as an array of TQChars.
     */
    virtual ExprValue *parseTQCharArray(const char *output,
                                     bool wantErrorValue, bool qt3like);

    virtual void parseBackTrace(const char *output,
                                std::list < StackFrame > &stack);
    virtual bool parseFrameChange(const char *output, int &frameNo,
                                  TQString & file, int &lineNo,
                                  DbgAddr & address);
    virtual bool parseBreakList(const char *output,
                                std::list < Breakpoint > &brks);
    virtual std::list<ThreadInfo> parseThreadList(const char *output);
    virtual bool parseBreakpoint(const char *output, int &id,
                                 TQString & file, int &lineNo, TQString& address);
    virtual void parseLocals(const char *output,
                             std::list < ExprValue* > &newVars);
    virtual ExprValue * parsePrintExpr(const char *output, bool wantErrorValue);
    virtual bool parseChangeWD(const char *output, TQString & message);
    virtual bool parseChangeExecutable(const char *output,
                                       TQString & message);
    virtual bool parseCoreFile(const char *output);
    virtual uint parseProgramStopped(const char *output,
                                     TQString & message);
    virtual TQStringList parseSharedLibs(const char *output);
    virtual bool parseFindType(const char *output, TQString & type);
    virtual std::list<RegisterInfo> parseRegisters(const char *output);
    virtual bool parseInfoLine(const char *output, TQString & addrFrom,
                               TQString & addrTo);
    virtual std::list<DisassembledCode> parseDisassemble(const char *output);
    virtual TQString parseMemoryDump(const char *output,
                                    std::list < MemoryDump > &memdump);
    virtual TQString parseSetVariable(const char* output);

  protected:
    int m_gdbMajor, m_gdbMinor;
    TQString m_programWD;        /* just an intermediate storage */
    TQString m_xslFile;		/* needed to display it initially */
    bool m_haveDataFile;       /* have we set the XML data file to use? */ 
    TQString m_redirect;         /* redirection to /dev/null */
    bool m_haveCoreFile;
    TQRegExp m_markerRE;

    TQString makeCmdString(DbgCommand cmd, TQString strArg);
    TQString makeCmdString(DbgCommand cmd, int intArg);
    TQString makeCmdString(DbgCommand cmd, TQString strArg, int intArg);
    TQString makeCmdString(DbgCommand cmd, TQString strArg1,
                          TQString strArg2);
    TQString makeCmdString(DbgCommand cmd, int intArg1, int intArg2);
    void parseMarker();
};

#endif // XSLDBGDRIVER_H