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

I'd prefer a more robust solution that can handle attributes and alignment 
specifiers (maybe something based on clang-format infrastructure), but I don't 
insist, as the entire script seems to be regex-based.

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