Changeset View
Changeset View
Standalone View
Standalone View
kdev-pg/kdev-pg-debug-visitor-gen.cpp
Show All 34 Lines | 28 | { | |||
---|---|---|---|---|---|
35 | GenerateDebugVisitorRule gen(out); | 35 | GenerateDebugVisitorRule gen(out); | ||
36 | for( World::SymbolSet::iterator it = globalSystem.symbols.begin(); | 36 | for( World::SymbolSet::iterator it = globalSystem.symbols.begin(); | ||
37 | it != globalSystem.symbols.end(); ++it ) | 37 | it != globalSystem.symbols.end(); ++it ) | ||
38 | { | 38 | { | ||
39 | gen(qMakePair(it.key(), *it)); | 39 | gen(qMakePair(it.key(), *it)); | ||
40 | } | 40 | } | ||
41 | 41 | | |||
42 | out << "private:" << endl; | 42 | out << "private:" << endl; | ||
43 | out << "void printToken(AstNode *node, const QString &mType, const QString &mName = QString())" << endl; | 43 | out << "void printToken(const AstNode *node, const QString &mType, const QString &mName = QString())" << endl; | ||
44 | out << "{" << endl; | 44 | out << "{" << endl; | ||
45 | out << " KDevPG::TokenStream::Token startToken;" << endl; | ||||
46 | out << " KDevPG::TokenStream::Token endToken;" << endl; | ||||
47 | out << " qint64 line, column;" << endl; | ||||
48 | out << " const bool isValidStartToken = (0 <= node->startToken && node->startToken < m_str->size());" << endl; | ||||
49 | out << " QString startTokenString;" << endl; | ||||
50 | out << " if (isValidStartToken) {" << endl; | ||||
51 | out << " startToken = m_str->at(node->startToken);" << endl; | ||||
52 | out << " m_str->startPosition(node->startToken, &line, &column);" << endl; | ||||
53 | out << " startTokenString = QString::number(startToken.begin) + QLatin1String(\", \") + QString::number(line) + QLatin1String(\", \") + QString::number(column);" << endl; | ||||
54 | out << " } else {" << endl; | ||||
55 | out << " startTokenString = QLatin1String(\"invalid token index: \") + QString::number(node->startToken);" << endl; | ||||
56 | out << " }" << endl; | ||||
57 | out << " const bool isValidEndToken = (0 <= node->endToken && node->endToken < m_str->size());" << endl; | ||||
58 | out << " QString endTokenString;" << endl; | ||||
59 | out << " if (isValidEndToken) {" << endl; | ||||
60 | out << " endToken = m_str->at(node->endToken);" << endl; | ||||
61 | out << " m_str->startPosition(node->endToken, &line, &column);" << endl; | ||||
62 | out << " endTokenString = QString::number(endToken.begin) + QLatin1String(\", \") + QString::number(line) + QLatin1String(\", \") + QString::number(column);" << endl; | ||||
63 | out << " } else {" << endl; | ||||
64 | out << " endTokenString = QLatin1String(\"invalid token index: \") + QString::number(node->endToken);" << endl; | ||||
65 | out << " }" << endl; | ||||
45 | out << " QString tokenString;" << endl; | 66 | out << " QString tokenString;" << endl; | ||
46 | out << " if (!m_content.isEmpty()) {" << endl; | 67 | out << " if (!m_content.isEmpty() && isValidStartToken && isValidEndToken) {" << endl; | ||
47 | out << " " << globalSystem.tokenStream << "::Token startToken = m_str->at(node->startToken);" << endl; | 68 | out << " const int begin = startToken.begin;" << endl; | ||
48 | out << " " << globalSystem.tokenStream << "::Token endToken = m_str->at(node->endToken);" << endl; | 69 | out << " const int end = endToken.end;" << endl; | ||
49 | out << " int begin = startToken.begin;" << endl; | | |||
50 | out << " int end = endToken.end;" << endl; | | |||
51 | out << " if (end-begin > 30) {" << endl; | 70 | out << " if (end-begin > 30) {" << endl; | ||
52 | out << " tokenString = m_content.mid(begin, 10);" << endl; | 71 | out << " tokenString = m_content.mid(begin, 10);" << endl; | ||
53 | out << " tokenString += QStringLiteral(\" ...\");" << endl; | 72 | out << " tokenString += QStringLiteral(\" ...\");" << endl; | ||
54 | out << " tokenString += QStringLiteral(\"%1 more\").arg(end-begin-20);" << endl; | 73 | out << " tokenString += QStringLiteral(\"%1 more\").arg(end-begin-20);" << endl; | ||
55 | out << " tokenString += QStringLiteral(\"... \");" << endl; | 74 | out << " tokenString += QStringLiteral(\"... \");" << endl; | ||
56 | out << " tokenString += m_content.midRef(end-10, 10);" << endl; | 75 | out << " tokenString += m_content.midRef(end-10, 10);" << endl; | ||
57 | out << " } else {" << endl; | 76 | out << " }" << endl; | ||
77 | out << " else {" << endl; | ||||
58 | out << " tokenString = m_content.mid(begin, end-begin+1);" << endl; | 78 | out << " tokenString = m_content.mid(begin, end-begin+1);" << endl; | ||
59 | out << " }" << endl; | 79 | out << " }" << endl; | ||
60 | out << " tokenString = tokenString.replace('\\n', QStringLiteral(\"\\\\n\"));" << endl; | 80 | out << " tokenString.replace('\\n', QStringLiteral(\"\\\\n\"));" << endl; | ||
61 | out << " tokenString = tokenString.replace('\\r', QStringLiteral(\"\\\\r\"));" << endl; | 81 | out << " tokenString.replace('\\r', QStringLiteral(\"\\\\r\"));" << endl; | ||
62 | out << " }" << endl; | 82 | out << " }" << endl; | ||
63 | out << " qint64 beginLine,endLine,beginCol,endCol;" << endl; | 83 | out << " qDebug() <<" | ||
64 | out << " m_str->startPosition(node->startToken, &beginLine, &beginCol);" << endl; | 84 | << " QString(QString().fill(QLatin1Char(' '), m_indent) +" | ||
65 | out << "m_str->endPosition(node->endToken, &endLine, &endCol);" << endl; | 85 | << " mName + QLatin1String(!mName.isEmpty() ? \"->\" : \"\") + mType +" | ||
66 | out << "qDebug() << QString().fill(' ', m_indent) + mName + (!mName.isEmpty() ? \"->\" : \"\") + mType + \"[\" << m_str->at( node->startToken ).begin" | 86 | << " QLatin1Char('[') + startTokenString + QLatin1String(\"] --- [\") + endTokenString + QLatin1String(\"] \")).toUtf8().constData()" | ||
67 | << " << \",\" << beginLine << \",\" << beginCol << " | 87 | << " << tokenString;" << endl; | ||
68 | << "\"] --- [\" << m_str->at( node->endToken ).end <<" | | |||
69 | << " \",\" << endLine << \",\" << endCol " | | |||
70 | << "<< \"] \"" | | |||
71 | << " << tokenString" | | |||
72 | << ";"; | | |||
73 | out << "}" << endl; | 88 | out << "}" << endl; | ||
74 | out << globalSystem.tokenStream << " *m_str;" << endl; | 89 | out << globalSystem.tokenStream << " *m_str;" << endl; | ||
75 | out << "int m_indent;" << endl; | 90 | out << "int m_indent;" << endl; | ||
76 | out << "QString m_content;" << endl; | 91 | out << "QString m_content;" << endl; | ||
77 | out << "};" << endl; | 92 | out << "};" << endl; | ||
78 | } | 93 | } | ||
79 | 94 | | |||
80 | void GenerateDebugVisitorRule::operator()(QPair<QString, | 95 | void GenerateDebugVisitorRule::operator()(QPair<QString, | ||
▲ Show 20 Lines • Show All 105 Lines • Show Last 20 Lines |