This document outlines a plan for extending the Language Server Protocol (LSP) to enable editors to obtain clang-query matcher strings for code at the cursor position. This feature will help developers generate matcher expressions that can be used as the basis for clang-tidy checks or standalone clang-query queries.
This document outlines a plan for creating a text input language to describe transformer library expressions (ASTEdits and associated components) that are passed to makeRule. This language would be analogous to clang-query's text input language for AST matchers, enabling declarative specification of code transformations.
- clang-query: Provides text-based matcher specification (e.g.,
match functionDecl())
This document outlines a comprehensive plan for implementing a configurable clang-tidy check that combines:
- AST Matching: Uses clang-query-style matcher expressions to select AST nodes
- Node Binding: Binds matched AST nodes to named identifiers
- Template Replacement: Uses Transformer's Stencil system for code generation
- Fix-it Generation: Generates suggested fix-its for matched code patterns
This check type enables users to define custom refactoring rules through configuration without writing C++ code.
The GitHub Actions Cache mechanism has been removed from vcpkg, so you can't use x-gha in VCPKG_BINARY_SOURCES
as a way to re-use built products from one build to the next anymore. I was using x-gha because the setup was
trivial for all platforms: just set a couple environment variables.
You can use NuGet packages to achieve the same purpose, although the setup is a little more complicated. Here's what I learned while setting this up for the first time for use with GitHub Actions.
The file vcpkg-configuration.json uses an existing vcpkg as the default registry;
this assumes vcpkg as a git submodule. The baseline value is the commit hash of
the vcpkg submodule. Update the hash as needed to reflect the actual version of the vcpkg
registry you've got checked out as a submodule.
Use a directory vcpkg-overlays to contain the overlay ports;
There are undocumented switches to the linker that will disassemble an object file:
link /dump /disasm /linenumbers /out:foo.asm foo.obj
Cribbed from an answer on this stackoverflow question
| { | |
| "version": 6, | |
| "cmakeMinimumRequired": { | |
| "major": 3, | |
| "minor": 23, | |
| "patch": 0 | |
| }, | |
| "configurePresets": [ | |
| { | |
| "name": "sibling-build-preset", |
| # run this script with sudo | |
| # From <https://askubuntu.com/questions/355565/how-do-i-install-the-latest-version-of-cmake-from-the-command-line> | |
| apt remove --purge --auto-remove cmake | |
| apt update | |
| apt install -y software-properties-common lsb-release && \ | |
| apt clean all | |
| wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null | |
| apt-add-repository "deb https://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | |
| apt update | |
| apt install kitware-archive-keyring |
This is a step-by-step guide for porting an application from MFC to wxWidgets based on my experience in porting Hippy.
- wxWidgets documentation for detailed class references.
- wxWidgets wiki for general wxWidgets programming guides
- Compiling using MS VC++
| comp.lang.c++ #1074341 (1) | |
| From: Andrey Tarasevich <[email protected]> | |
| [1] A counterintuitive breaking change related to new comparisons | |
| Date: Mon Jan 03 10:48:42 MST 2022 | |
| Lines: 42 | |
| A colleague discovered that switching from `-stc=c++17` to `-std=c++20` | |
| in their project resulted in a different behavior from some associative | |
| containers. A bit of research allowed to narrow down the culprit to what | |
| can be demonstrated by the following minimalist example |