================ @@ -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): ---------------- DeinAlptraum wrote:
+1 we have libclang for this If you want to go that way, you can see an example of how this can be used in the libclang tests themselves [here](https://github.com/llvm/llvm-project/blob/0aaec671473dd311fc82c0c3e24e4c663c79f2e8/clang/bindings/python/tests/cindex/test_enums.py#L69-L78) where we extract all enum variants defined in a given header file https://github.com/llvm/llvm-project/pull/203784 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
