NagyDonat wrote: I prototyped a "get the name of template argument as string" solution which is sufficient for our use cases (where the checker family is a non-templated class type) and works on all supported versions of all three compilers (GCC, clang, MSVC) that are supported for LLVM compilation: https://godbolt.org/z/8b9YGfvdG
```c++ #include <iostream> #include <string> class MyFancyCheckerFamily {}; template <class T> std::string getTypeName() { #ifndef _MSC_VER std::string res = __PRETTY_FUNCTION__; int start = res.find('='), end = res.find(';'); if (end == -1) end = res.find(']'); if (start == -1 || end == -1) return "unknown-checker-family"; // paranoia, should not happen return res.substr(start + 2, end - start - 2); #else std::string res = __FUNCSIG__; int start = res.find("<class "), end = res.find('>'); if (start == -1 || end == -1) return "unknown-checker-family"; // paranoia, should not happen return res.substr(start + 7, end - start - 7); #endif } int main() { std::cout << getTypeName<MyFancyCheckerFamily>() << std::endl; return 0; } ``` If I invoke this machinery from the registration functions of the checker families (where each checker type is available as a template argument), then it can "magically" ensure that `getTagDescription()` (i.e. the debug name) returns the class name of the checker family as a string (and there is nothing to do within the implementation of the checker family). This is a bit ugly, because there is no standard way to stringify a type, so I need to rely on the macros `__PRETTY_FUNCTION__` (GCC and clang with slightly different content) / `__FUNCSIG__` (MSVC), but I don't think that there is a cleaner solution that doesn't burden the classes derived from `CheckerFamily` with any boilerplate (like overriding `getTagDescription()`). @steakhal (or anybody else) What do you think about this? https://github.com/llvm/llvm-project/pull/139256 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits