mirror of
https://github.com/boostorg/openmethod.git
synced 2026-01-19 04:22:12 +00:00
39 lines
1.2 KiB
Python
Executable File
39 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import fileinput
|
|
import re
|
|
from subprocess import Popen, PIPE
|
|
import threading
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("-s", "--scope", help="do not simplify scopes")
|
|
parser.add_argument("-y", "--prefix", help="do not remove YOMM2 prefixes")
|
|
parser.add_argument("-p", "--policy", help="do not remove policy")
|
|
parser.add_argument("files", nargs="*", default=("-"))
|
|
args = parser.parse_args()
|
|
|
|
def process(fh):
|
|
while True:
|
|
line = fh.readline()
|
|
if not line:
|
|
return
|
|
if not args.prefix:
|
|
line = re.sub(r"\s*,\s*yorel::yomm2::policy::\w+", "", line)
|
|
if not args.scope:
|
|
line = re.sub(r"(\w+::)+", "", line)
|
|
if not args.prefix:
|
|
line = re.sub(r"YoMm2_S_", "", line)
|
|
print(line, end="")
|
|
|
|
i = 0
|
|
|
|
with Popen(
|
|
"/usr/bin/c++filt --types".split(), stdin=PIPE, stdout=PIPE, encoding="ascii"
|
|
) as cppfilt:
|
|
demangler = threading.Thread(target=process, args=[cppfilt.stdout])
|
|
demangler.start()
|
|
for line in fileinput.input(files=args.files):
|
|
print(line, file=cppfilt.stdin, end="")
|
|
cppfilt.stdin.close()
|
|
demangler.join() |