The Pedigree Project 0.1
DebuggerIO.h
1/*
2 * Copyright (c) 2008-2014, Pedigree Developers
3 *
4 * Please see the CONTRIB file in the root of the source tree for a full
5 * list of contributors.
6 *
7 * Permission to use, copy, modify, and distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 */
19
20#ifndef DEBUGGER_IO_H
21#define DEBUGGER_IO_H
22#include "pedigree/kernel/processor/types.h"
23#include "pedigree/kernel/utilities/StaticString.h"
24
25#include <config.h>
26
30#define COMMAND_MAX 256
31class DebuggerCommand;
32
50 public:
54 enum Colour {
55 Black = 0,
56 Blue = 1,
57 Green = 2,
58 Cyan = 3,
59 Red = 4,
60 Magenta = 5,
61 Orange = 6,
62 LightGrey = 7,
63 DarkGrey = 8,
64 LightBlue = 9,
65 LightGreen = 10,
66 LightCyan = 11,
67 LightRed = 12,
68 LightMagenta = 13,
69 Yellow = 14,
70 White = 15
71 };
72
77 virtual ~DebuggerIO() {}
78
79 virtual void initialise() = 0;
80 virtual void destroy() = 0;
81
87 virtual void setCliUpperLimit(size_t nlines) = 0;
88 virtual void setCliLowerLimit(size_t nlines) = 0;
89
90 virtual void cls() = 0;
91
92 virtual char getCharNonBlock() = 0;
93
98 virtual void enableCli() = 0;
99 virtual void disableCli() = 0;
100
105 virtual void writeCli(const char* str, Colour foreColour, Colour backColour);
106 virtual void writeCli(char ch, DebuggerIO::Colour foreColour, DebuggerIO::Colour backColour);
113 virtual bool readCli(HugeStaticString& str, DebuggerCommand* pAutoComplete);
114
120 virtual void drawHorizontalLine(char c, size_t row, size_t colStart, size_t colEnd,
121 Colour foreColour, Colour backColour) = 0;
122 virtual void drawVerticalLine(char c, size_t col, size_t rowStart, size_t rowEnd,
123 Colour foreColour, Colour backColour) = 0;
124
129 virtual void drawString(const char* str, size_t row, size_t col, Colour foreColour,
130 Colour backColour) = 0;
131
135 virtual size_t getWidth() = 0;
136 virtual size_t getHeight() = 0;
137
142 virtual void enableRefreshes() = 0;
143 virtual void disableRefreshes() = 0;
144 virtual void forceRefresh() = 0;
145
146 virtual void readDimensions() = 0;
147
152 virtual char getChar() = 0;
153
154 protected:
155 virtual void putChar(char c, DebuggerIO::Colour foreColour, DebuggerIO::Colour backColour) = 0;
156
160 virtual void scroll() = 0;
161
165 virtual void moveCursor() = 0;
166
171
175 char m_pCommand[COMMAND_MAX];
176
181};
182
185#endif
virtual void enableCli()=0
virtual void enableRefreshes()=0
char m_pCommand[COMMAND_MAX]
Definition DebuggerIO.h:175
virtual bool readCli(HugeStaticString &str, DebuggerCommand *pAutoComplete)
Definition DebuggerIO.cc:25
virtual void setCliUpperLimit(size_t nlines)=0
virtual void scroll()=0
virtual void drawString(const char *str, size_t row, size_t col, Colour foreColour, Colour backColour)=0
virtual void moveCursor()=0
bool m_bReady
Definition DebuggerIO.h:170
virtual size_t getWidth()=0
virtual void writeCli(const char *str, Colour foreColour, Colour backColour)
bool m_bRefreshesEnabled
Definition DebuggerIO.h:180
virtual void drawHorizontalLine(char c, size_t row, size_t colStart, size_t colEnd, Colour foreColour, Colour backColour)=0
virtual char getChar()=0