File indexing completed on 2024-04-28 05:38:33
0001 /* 0002 SPDX-FileCopyrightText: 2015 Klarälvdalens Datakonsult AB a KDAB Group company info@kdab.com 0003 SPDX-FileContributor: Sérgio Martins <sergio.martins@kdab.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef CLAZY_QT4_QSTRING_FROM_ARRAY_H 0009 #define CLAZY_QT4_QSTRING_FROM_ARRAY_H 0010 0011 #include "checkbase.h" 0012 0013 #include <string> 0014 #include <vector> 0015 0016 class ClazyContext; 0017 0018 namespace clang 0019 { 0020 class Stmt; 0021 class FixItHint; 0022 class CXXConstructExpr; 0023 class CXXOperatorCallExpr; 0024 class Expr; 0025 class CXXMemberCallExpr; 0026 } 0027 0028 /** 0029 * Replaces QString(char*) or QString(QByteArray) calls with QString::fromLatin1(). 0030 * 0031 * Run only in Qt 4 code. 0032 */ 0033 class Qt4QStringFromArray : public CheckBase 0034 { 0035 public: 0036 explicit Qt4QStringFromArray(const std::string &name, ClazyContext *context); 0037 void VisitStmt(clang::Stmt *stmt) override; 0038 0039 private: 0040 std::vector<clang::FixItHint> fixCtorCall(clang::CXXConstructExpr *ctorExpr); 0041 std::vector<clang::FixItHint> fixOperatorCall(clang::CXXOperatorCallExpr *ctorExpr); 0042 std::vector<clang::FixItHint> fixMethodCallCall(clang::CXXMemberCallExpr *memberExpr); 0043 std::vector<clang::FixItHint> fixitReplaceWithFromLatin1(clang::CXXConstructExpr *ctorExpr); 0044 std::vector<clang::FixItHint> fixitInsertFromLatin1(clang::CXXConstructExpr *ctorExpr); 0045 }; 0046 0047 #endif