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