| 45 | QStringList templateParams(CXCursor cursor); |
| 46 | |
| 47 | CXChildVisitResult templateParamsHelper(CXCursor cursor, CXCursor /*parent*/, CXClientData data) |
| 48 | { |
| 49 | CXCursorKind kind = clang_getCursorKind(cursor); |
| 50 | auto& params = *static_cast<QStringList*>(data); |
| 51 | if (kind == CXCursor_TemplateTypeParameter) { |
| 52 | auto paramName = ClangString(clang_getCursorSpelling(cursor)).toString(); |
| 53 | auto param = QStringLiteral("typename"); |
| 54 | if (!paramName.isEmpty()) { |
| 55 | param += QLatin1Char(' ') + paramName; |
| 56 | } |
| 57 | params.append(param); |
| 58 | } else if (kind == CXCursor_NonTypeTemplateParameter) { |
| 59 | auto param = ClangString(clang_getTypeSpelling(clang_getCursorType(cursor))).toString(); |
| 60 | auto paramName = ClangString(clang_getCursorSpelling(cursor)).toString(); |
| 61 | if (!paramName.isEmpty()) { |
| 62 | param += QLatin1Char(' ') + paramName; |
| 63 | } |
| 64 | params.append(param); |
| 65 | } else if (kind == CXCursor_TemplateTemplateParameter) { |
| 66 | auto paramName = ClangString(clang_getCursorSpelling(cursor)).toString(); |
| 67 | auto templateTypes = templateParams(cursor); |
| 68 | QString param = QLatin1String("template<") + templateTypes.join(QLatin1String(", ")) + QLatin1String("> class ") + paramName ; |
| 69 | params.append(param); |
| 70 | } |
| 71 | return CXChildVisit_Continue; |
| 72 | } |
| 73 | |
| 74 | QStringList templateParams(CXCursor cursor) |
| 75 | { |
nothing calls this directly
no test coverage detected