I spoke at the ACCU conference in April 2017 on the topic of Embracing Modern CMake. The talk was very well attended and received, but was unfortunately not recorded at the event. In September I ga…| Steveire's Blog
I’ve just made a new 5.3.1 release of Grantlee. The 5.3.0 release had some build issues with Qt 6 which should now be resolved with version 5.3.1. Unlike previous releases, this release will not appear on http://www.grantlee.org/downloads/. I’ll be turning off grantlee.org soon. All previous releases have already been uploaded to https://github.com/steveire/grantlee/releases. The continuation of […]| Steveire's Blog
I previously announced the end of new Qt5-based Grantlee releases. The Grantlee template system is to find new life as part of KDE Frameworks 6 in the form of KTextTemplate. The Grantlee textdocument library will probably become part of another KDE library with similar scope. Meanwhile, some changes have accumulated since the last Grantlee release, […]| Steveire's Blog
As of a few days ago, a new feature in clang-query allows introspecting the source locations for a given clang AST node. The feature is also available for experimentation in Compiler Explorer. I previously delivered a talk at EuroLLVM 2019 and blogged in 2018 about this feature and others to assist in discovery of AST […]| Steveire's Blog
The upcoming version of Clang 12 includes a new traversal mode which can be used for easier matching of AST nodes. I presented this mode at EuroLLVM and ACCU 2019, but at the time I was calling it “ignoring invisible” mode. The primary aim is to make AST Matchers easier to write by requiring less […]| Steveire's Blog
The Grantlee community is pleased to announce the release of Grantlee version 5.2.0. For the benefit of the uninitiated, Grantlee is a set of Qt based libraries including an advanced string template system in the style of the Django template system. {# This is a simple template #} {% for item in list %} {% […]| Steveire's Blog
I recently made a trip to LLVM in Brussels and ACCU in Bristol. It was a busy week. I gave a talk at both conferences on the topic of the future of AST Matchers-based refactoring. As usual, the ‘hallway track’ also proved useful at both conferences, leading to round-table discussions at the LLVM conference with […]| Steveire's Blog
Last week I flew to Brussels for EuroLLVM followed by Bristol for ACCU. At both conferences I presented the work I’ve been doing to make it easier for regular C++ programmers to perform ‘mechanical’ bespoke refactoring using the clang ASTMatchers tooling. Each talk was prepared specifically for the particular audience at that conference, but both […]| Steveire's Blog
I delivered a talk about writing a refactoring tool with Clang Tooling at code::dive in November. It was uploaded to YouTube today: The slides are available here and the code samples are here. This was a fun talk to deliver as I got to demo some features which had never been seen by anyone before. […]| Steveire's Blog
When creating clang-tidy checks, it is common to extract parts of AST Matcher expressions to local variables. I expanded on this in a previous blog. auto nonAwesomeFunction = functionDecl( unless(matchesName("^::awesome_")) ); Finder->addMatcher( nonAwesomeFunction.bind("addAwesomePrefix") , this); Finder->addMatcher( callExpr(callee(nonAwesomeFunction)).bind("addAwesomePrefix") , this); Use of such variables establishes an emergent extension API for re-use in the checks, or in […]| Steveire's Blog
Getting started – clang-tidy AST Matchers Over the last few weeks I published some blogs on the Visual C++ blog about Clang AST Matchers. The series can be found here: Extending clang-tidy Ex…| Steveire's Blog