================
@@ -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

Reply via email to