================ @@ -6,17 +6,27 @@ import collections import re import os -from urllib.request import urlopen +CURRENT_DIR = os.path.dirname(__file__) -CLASS_INDEX_PAGE_URL = "https://clang.llvm.org/doxygen/classes.html" -try: - CLASS_INDEX_PAGE = urlopen(CLASS_INDEX_PAGE_URL).read().decode("utf-8") -except Exception as e: - CLASS_INDEX_PAGE = None - print("Unable to get %s: %s" % (CLASS_INDEX_PAGE_URL, e)) -CURRENT_DIR = os.path.dirname(__file__) +def _build_local_class_set(): + """Return the set of class names declared in clang/include/clang/AST/""" + classes = set() + ast_dir = os.path.join(CURRENT_DIR, "../../include/clang/AST") + for fname in os.listdir(ast_dir): + if not fname.endswith(".h"): + continue + try: + content = open(os.path.join(ast_dir, fname)).read() + except OSError: + continue + for m in re.finditer(r"\b(?:class|struct)\s+([A-Z][a-zA-Z0-9_]+)\b", content): ---------------- Endilll wrote:
Hmm, I suggested clang-format infra based on the fact that this script does not have all the necessary information from the build system to be able to semantically analyze the header like the compiler does, but maybe not that much is actually needed for libclang to parse it. https://github.com/llvm/llvm-project/pull/203784 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
