From b837688dd9bc27f9ad10a6072ee0ed0a3a48e925 Mon Sep 17 00:00:00 2001 From: Ruslan Nigmatullin Date: Mon, 17 Sep 2012 20:32:42 +0400 Subject: Added include parser support for ObjC++ and ObjC Change-Id: I749bee8a6ad3f03a6fa63432d88ccf4c322fad6d Reviewed-by: Joerg Bornemann --- src/plugins/scanner/cpp/cpp.cpp | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'src/plugins/scanner/cpp') diff --git a/src/plugins/scanner/cpp/cpp.cpp b/src/plugins/scanner/cpp/cpp.cpp index c7c5c510b..d29b7789b 100644 --- a/src/plugins/scanner/cpp/cpp.cpp +++ b/src/plugins/scanner/cpp/cpp.cpp @@ -55,6 +55,7 @@ using namespace CPlusPlus; #include #include #include +#include struct ScanResult { @@ -110,7 +111,8 @@ struct Opaq static void scanCppFile(void *opaq, Lexer &yylex, bool scanForFileTags) { - static const size_t lengthOfIncludeLiteral = strlen("include"); + const QLatin1Literal includeLiteral("include"); + const QLatin1Literal importLiteral("import"); Opaq *opaque = static_cast(opaq); Token tk; ScanResult scanResult; @@ -122,8 +124,10 @@ static void scanCppFile(void *opaq, Lexer &yylex, bool scanForFileTags) yylex(&tk); if (!scanForFileTags && !tk.newline() && tk.is(T_IDENTIFIER)) { - if (tk.length() >= lengthOfIncludeLiteral - && (strncmp(opaque->fileContent + tk.begin(), "include", lengthOfIncludeLiteral) == 0)) + if ((tk.length() >= includeLiteral.size() + && (strncmp(opaque->fileContent + tk.begin(), includeLiteral.data(), includeLiteral.size()) == 0)) + || (tk.length() >= importLiteral.size() + && (strncmp(opaque->fileContent + tk.begin(), importLiteral.data(), importLiteral.size()) == 0))) { yylex.setScanAngleStringLiteralTokens(true); yylex(&tk); @@ -284,6 +288,28 @@ ScannerPlugin cScanner = true }; +ScannerPlugin objcppScanner = +{ + "include_scanner", + "objcpp", + openScanner, + closeScanner, + next, + additionalFileTags, + true +}; + +ScannerPlugin objcScanner = +{ + "include_scanner", + "objc", + openScanner, + closeScanner, + next, + additionalFileTags, + true +}; + ScannerPlugin rcScanner = { "include_scanner", @@ -295,7 +321,7 @@ ScannerPlugin rcScanner = true }; -ScannerPlugin *theScanners[] = {&hppScanner, &cppScanner, &cScanner, &rcScanner, NULL}; +ScannerPlugin *theScanners[] = {&hppScanner, &cppScanner, &cScanner, &objcppScanner, &objcScanner, &rcScanner, NULL}; CPPSCANNER_EXPORT ScannerPlugin **getScanners() { -- cgit v1.2.3