diff --git a/Config.cmake b/Config.cmake index 1032ce379..b5394225d 100644 --- a/Config.cmake +++ b/Config.cmake @@ -87,7 +87,7 @@ set(ODBFLAGS --default-pointer "std::shared_ptr") # Set CXX standard -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/parser/src/pluginhandler.cpp b/parser/src/pluginhandler.cpp index 7fe6c91e1..e656e31de 100644 --- a/parser/src/pluginhandler.cpp +++ b/parser/src/pluginhandler.cpp @@ -44,7 +44,7 @@ void PluginHandler::loadPlugins(std::vector& skipParserList_) ++dirIter) { if (fs::is_regular_file(dirIter->status()) && - fs::extension(*dirIter) == util::DynamicLibrary::extension()) + fs::path(*dirIter).extension() == util::DynamicLibrary::extension()) { std::string filename = getPluginName(dirIter->path()); @@ -85,7 +85,7 @@ std::vector PluginHandler::getPluginNames() const ++dirIter) { if (fs::is_regular_file(dirIter->status()) && - fs::extension(*dirIter) == util::DynamicLibrary::extension()) + fs::path(*dirIter).extension() == util::DynamicLibrary::extension()) { plugins.push_back(getPluginName(dirIter->path())); } diff --git a/plugins/cpp/parser/include/cppparser/filelocutil.h b/plugins/cpp/parser/include/cppparser/filelocutil.h index 221f696c0..04e0734cd 100644 --- a/plugins/cpp/parser/include/cppparser/filelocutil.h +++ b/plugins/cpp/parser/include/cppparser/filelocutil.h @@ -91,7 +91,7 @@ class FileLocUtil if (fid.isInvalid()) return std::string(); - const clang::FileEntry* fileEntry = _clangSrcMan.getFileEntryForID(fid); + const clang::OptionalFileEntryRef fileEntry = _clangSrcMan.getFileEntryRefForID(fid); if (!fileEntry) return std::string(); diff --git a/plugins/cpp/parser/src/clangastvisitor.h b/plugins/cpp/parser/src/clangastvisitor.h index cfcaf8604..10683fd65 100644 --- a/plugins/cpp/parser/src/clangastvisitor.h +++ b/plugins/cpp/parser/src/clangastvisitor.h @@ -1735,7 +1735,7 @@ class ClangASTVisitor : public clang::RecursiveASTVisitor clang::DynTypedNodeList parents = _astContext.getParents(*expr_); - const clang::ast_type_traits::DynTypedNode& parent = parents[0]; + const clang::DynTypedNode& parent = parents[0]; if (const clang::BinaryOperator* op = parent.get()) { diff --git a/plugins/cpp/parser/src/cppparser.cpp b/plugins/cpp/parser/src/cppparser.cpp index 58620801c..ac7ac5d4b 100644 --- a/plugins/cpp/parser/src/cppparser.cpp +++ b/plugins/cpp/parser/src/cppparser.cpp @@ -159,7 +159,7 @@ bool CppParser::isSourceFile(const std::string& file_) const const std::vector cppExts{ ".c", ".cc", ".cpp", ".cxx", ".o", ".so", ".a"}; - std::string ext = fs::extension(file_); + std::string ext = fs::path(file_).extension().string(); std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower); return std::find(cppExts.begin(), cppExts.end(), ext) != cppExts.end(); @@ -209,7 +209,7 @@ std::map CppParser::extractInputOutputs( { for (const std::string& src : sources) { - std::string extension = fs::extension(src); + std::string extension = fs::path(src).extension().string(); inToOut[src] = src.substr(0, src.size() - extension.size() - 1) + ".o"; } } @@ -232,7 +232,7 @@ model::BuildActionPtr CppParser::addBuildAction( model::BuildActionPtr buildAction(new model::BuildAction); - std::string extension = fs::extension(command_.Filename); + std::string extension = fs::path(command_.Filename).extension().string(); buildAction->command = boost::algorithm::join(command_.CommandLine, " "); buildAction->type diff --git a/plugins/cpp/parser/src/doccommentformatter.cpp b/plugins/cpp/parser/src/doccommentformatter.cpp index 1d2439b1d..9d495dbfa 100644 --- a/plugins/cpp/parser/src/doccommentformatter.cpp +++ b/plugins/cpp/parser/src/doccommentformatter.cpp @@ -58,10 +58,10 @@ FullCommentParts::FullCommentParts( switch (child->getCommentKind()) { - case Comment::NoCommentKind: + case CommentKind::None: continue; - case Comment::ParagraphCommentKind: + case CommentKind::ParagraphComment: { const ParagraphComment* pc = llvm::cast(child); @@ -75,7 +75,7 @@ FullCommentParts::FullCommentParts( break; } - case Comment::BlockCommandCommentKind: + case CommentKind::BlockCommandComment: { const BlockCommandComment* bcc = llvm::cast(child); const CommandInfo* Info = traits_.getCommandInfo(bcc->getCommandID()); @@ -94,7 +94,7 @@ FullCommentParts::FullCommentParts( break; } - case Comment::ParamCommandCommentKind: + case CommentKind::ParamCommandComment: { const ParamCommandComment* pcc = llvm::cast(child); @@ -108,7 +108,7 @@ FullCommentParts::FullCommentParts( break; } - case Comment::TParamCommandCommentKind: + case CommentKind::TParamCommandComment: { const TParamCommandComment* tpcc = llvm::cast(child); @@ -123,11 +123,11 @@ FullCommentParts::FullCommentParts( break; } - case Comment::VerbatimBlockCommentKind: + case CommentKind::VerbatimBlockComment: _miscBlocks.push_back(cast(child)); break; - case Comment::VerbatimLineCommentKind: + case CommentKind::VerbatimLineComment: { const VerbatimLineComment* vlc = llvm::cast(child); const CommandInfo* Info = traits_.getCommandInfo(vlc->getCommandID()); @@ -251,22 +251,22 @@ void CommentToMarkdownConverter::visitInlineCommandComment( switch (c_->getRenderKind()) { - case InlineCommandComment::RenderNormal: + case InlineCommandRenderKind::Normal: for (unsigned i = 0, e = c_->getNumArgs(); i != e; ++i) _res << c_->getArgText(i).str() << ' '; return; - case InlineCommandComment::RenderBold: + case InlineCommandRenderKind::Bold: assert(c_->getNumArgs() == 1); _res << "**" << arg0.str() << "**"; return; - case InlineCommandComment::RenderMonospaced: + case InlineCommandRenderKind::Monospaced: assert(c_->getNumArgs() == 1); _res << '`' << arg0.str() << '`'; return; - case InlineCommandComment::RenderEmphasized: + case InlineCommandRenderKind::Emphasized: assert(c_->getNumArgs() == 1); _res << '*' << arg0.str() << '*'; return; @@ -336,9 +336,9 @@ void CommentToMarkdownConverter::visitParamCommandComment( { switch (c_->getDirection()) { - case ParamCommandComment::In: _res << "- *in*: "; break; - case ParamCommandComment::Out: _res << "- *out*: "; break; - case ParamCommandComment::InOut: _res << "- *in,out*: "; break; + case ParamCommandPassDirection::In: _res << "- *in*: "; break; + case ParamCommandPassDirection::Out: _res << "- *out*: "; break; + case ParamCommandPassDirection::InOut: _res << "- *in,out*: "; break; } _res << "**" << (c_->isParamIndexValid() diff --git a/plugins/cpp/parser/src/ppincludecallback.cpp b/plugins/cpp/parser/src/ppincludecallback.cpp index b163732fe..3aeb2a9ca 100644 --- a/plugins/cpp/parser/src/ppincludecallback.cpp +++ b/plugins/cpp/parser/src/ppincludecallback.cpp @@ -61,10 +61,11 @@ void PPIncludeCallback::InclusionDirective( clang::StringRef fileName_, bool, clang::CharSourceRange filenameRange_, - const clang::FileEntry*, + clang::OptionalFileEntryRef, clang::StringRef searchPath_, clang::StringRef, const clang::Module*, + bool, clang::SrcMgr::CharacteristicKind) { if (searchPath_.empty()) diff --git a/plugins/cpp/parser/src/ppincludecallback.h b/plugins/cpp/parser/src/ppincludecallback.h index df3a96676..abaf55871 100644 --- a/plugins/cpp/parser/src/ppincludecallback.h +++ b/plugins/cpp/parser/src/ppincludecallback.h @@ -38,10 +38,11 @@ class PPIncludeCallback : public clang::PPCallbacks clang::StringRef FileName, bool IsAngled, clang::CharSourceRange FilenameRange, - const clang::FileEntry *File, + clang::OptionalFileEntryRef File, clang::StringRef SearchPath, clang::StringRef RelativePath, const clang::Module *Imported, + bool ModuleImported, clang::SrcMgr::CharacteristicKind FileType) override; private: diff --git a/plugins/cpp/service/src/filediagram.cpp b/plugins/cpp/service/src/filediagram.cpp index 44c3bf788..47d195c3a 100644 --- a/plugins/cpp/service/src/filediagram.cpp +++ b/plugins/cpp/service/src/filediagram.cpp @@ -711,7 +711,7 @@ util::Graph::Node FileDiagram::addNode( } else if (fileInfo_.type == "CPP") { - std::string ext = boost::filesystem::extension(fileInfo_.path); + std::string ext = boost::filesystem::path(fileInfo_.path).extension().string(); std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower); if (ext == ".cpp" || ext == ".cxx" || ext == ".cc" || ext == ".c") diff --git a/plugins/dummy/parser/src/dummyparser.cpp b/plugins/dummy/parser/src/dummyparser.cpp index 9c3f2ff1e..1d8fa2346 100644 --- a/plugins/dummy/parser/src/dummyparser.cpp +++ b/plugins/dummy/parser/src/dummyparser.cpp @@ -17,7 +17,7 @@ DummyParser::DummyParser(ParserContext& ctx_): AbstractParser(ctx_) bool DummyParser::accept(const std::string& path_) { - std::string ext = boost::filesystem::extension(path_); + std::string ext = boost::filesystem::path(path_).string(); return ext == ".dummy"; } diff --git a/plugins/git/parser/src/gitparser.cpp b/plugins/git/parser/src/gitparser.cpp index 82c09edce..b33169cbe 100644 --- a/plugins/git/parser/src/gitparser.cpp +++ b/plugins/git/parser/src/gitparser.cpp @@ -164,7 +164,7 @@ util::DirIterCallback GitParser::getParserCallback() boost::property_tree::ptree pt; std::string repoFile(versionDataDir + "/repositories.txt"); - if (boost::filesystem::is_regular(repoFile)) + if (boost::filesystem::is_regular_file(repoFile)) boost::property_tree::read_ini(repoFile, pt); pt.put(repoId + ".name", path.filename().string()); diff --git a/plugins/git/service/src/gitservice.cpp b/plugins/git/service/src/gitservice.cpp index 88c8578fb..54f05f161 100644 --- a/plugins/git/service/src/gitservice.cpp +++ b/plugins/git/service/src/gitservice.cpp @@ -151,7 +151,7 @@ void GitServiceHandler::getRepositoryList(std::vector& return_) std::string repoFile(versionDataDir.string() + "/repositories.txt"); boost::property_tree::ptree pt; - if (!fs::is_regular(repoFile)) + if (!fs::is_regular_file(repoFile)) { LOG(warning) << "Repository file not found in data directory: " << repoFile; return; diff --git a/plugins/search/parser/src/searchparser.cpp b/plugins/search/parser/src/searchparser.cpp index 9306e04cd..cc5a97334 100644 --- a/plugins/search/parser/src/searchparser.cpp +++ b/plugins/search/parser/src/searchparser.cpp @@ -173,7 +173,7 @@ bool SearchParser::shouldHandle(const std::string& path_) { //--- The file is not regular. ---// - if (!fs::is_regular(path_)) + if (!fs::is_regular_file(path_)) return false; //--- The file is excluded by suffix. ---// diff --git a/service/workspace/src/workspaceservice.cpp b/service/workspace/src/workspaceservice.cpp index 1a88caa64..e395efd99 100644 --- a/service/workspace/src/workspaceservice.cpp +++ b/service/workspace/src/workspaceservice.cpp @@ -1,5 +1,6 @@ #include #include +#include namespace cc { diff --git a/util/include/util/hash.h b/util/include/util/hash.h index f7f308ada..60ca2b718 100644 --- a/util/include/util/hash.h +++ b/util/include/util/hash.h @@ -36,18 +36,18 @@ inline std::string sha1Hash(const std::string& data_) using namespace boost::uuids::detail; sha1 hasher; - unsigned int digest[5]; + unsigned char digest[20]; hasher.process_bytes(data_.c_str(), data_.size()); hasher.get_digest(digest); std::stringstream ss; ss.setf(std::ios::hex, std::ios::basefield); - ss.width(8); + ss.width(2); ss.fill('0'); - for (int i = 0; i < 5; ++i) - ss << digest[i]; + for (int i = 0; i < 20; ++i) + ss << (int)digest[i]; return ss.str(); } diff --git a/webserver/include/webserver/pluginhandler.h b/webserver/include/webserver/pluginhandler.h index 8d80ce543..84fd09686 100644 --- a/webserver/include/webserver/pluginhandler.h +++ b/webserver/include/webserver/pluginhandler.h @@ -44,7 +44,7 @@ class PluginHandler for (fs::directory_iterator dirIter(path_); dirIter != endIter; ++dirIter) { if (fs::is_regular_file(dirIter->status()) - && fs::extension(*dirIter) == util::DynamicLibrary::extension()) + && fs::path(*dirIter).extension() == util::DynamicLibrary::extension()) { _dynamicLibraries.emplace_back(util::DynamicLibraryPtr( new util::DynamicLibrary(dirIter->path().string())));