add some C escaping to relevant MI commands

This commit is contained in:
Oswald Buddenhagen
2009-05-05 15:53:17 +02:00
parent f0c1244cbe
commit 57a93374cd
3 changed files with 29 additions and 10 deletions

View File

@@ -250,12 +250,18 @@ void GdbMi::dumpChildren(QByteArray * str, bool multiline, int indent) const
}
}
QByteArray GdbMi::escapeCString(const QByteArray &ba)
class MyString : public QString {
public:
ushort at(int i) const { return constData()[i].unicode(); }
};
template<class ST, typename CT>
inline ST escapeCStringTpl(const ST &ba)
{
QByteArray ret;
ST ret;
ret.reserve(ba.length() * 2);
for (int i = 0; i < ba.length(); ++i) {
uchar c = ba.at(i);
CT c = ba.at(i);
switch (c) {
case '\\': ret += "\\\\"; break;
case '\a': ret += "\\a"; break;
@@ -280,6 +286,16 @@ QByteArray GdbMi::escapeCString(const QByteArray &ba)
return ret;
}
QString GdbMi::escapeCString(const QString &ba)
{
return escapeCStringTpl<MyString, ushort>(static_cast<const MyString &>(ba));
}
QByteArray GdbMi::escapeCString(const QByteArray &ba)
{
return escapeCStringTpl<QByteArray, uchar>(ba);
}
QByteArray GdbMi::toString(bool multiline, int indent) const
{
QByteArray result;