mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-29 00:22:00 +00:00
Split into seperate functions for easier invocation from python.
This commit is contained in:
parent
590e7acedf
commit
2c8c5c4ed3
@ -228,7 +228,7 @@ class ExtractionThread(Thread):
|
|||||||
job_semaphore.release()
|
job_semaphore.release()
|
||||||
|
|
||||||
|
|
||||||
def mkdoc(args, out_file=sys.stdout):
|
def extract_all(args):
|
||||||
parameters = []
|
parameters = []
|
||||||
filenames = []
|
filenames = []
|
||||||
if "-x" not in args:
|
if "-x" not in args:
|
||||||
@ -273,6 +273,19 @@ def mkdoc(args, out_file=sys.stdout):
|
|||||||
if len(filenames) == 0:
|
if len(filenames) == 0:
|
||||||
raise NoFilenamesError("args parameter did not contain any filenames")
|
raise NoFilenamesError("args parameter did not contain any filenames")
|
||||||
|
|
||||||
|
output = []
|
||||||
|
for filename in filenames:
|
||||||
|
thr = ExtractionThread(filename, parameters, output)
|
||||||
|
thr.start()
|
||||||
|
|
||||||
|
print('Waiting for jobs to finish ..', file=sys.stderr)
|
||||||
|
for i in range(job_count):
|
||||||
|
job_semaphore.acquire()
|
||||||
|
|
||||||
|
return output
|
||||||
|
|
||||||
|
|
||||||
|
def write_header(comments, out_file=sys.stdout):
|
||||||
print('''/*
|
print('''/*
|
||||||
This file contains docstrings for the Python bindings.
|
This file contains docstrings for the Python bindings.
|
||||||
Do not edit! These were automatically extracted by mkdoc.py
|
Do not edit! These were automatically extracted by mkdoc.py
|
||||||
@ -298,18 +311,10 @@ def mkdoc(args, out_file=sys.stdout):
|
|||||||
#endif
|
#endif
|
||||||
''', file=out_file)
|
''', file=out_file)
|
||||||
|
|
||||||
output = []
|
|
||||||
for filename in filenames:
|
|
||||||
thr = ExtractionThread(filename, parameters, output)
|
|
||||||
thr.start()
|
|
||||||
|
|
||||||
print('Waiting for jobs to finish ..', file=sys.stderr)
|
|
||||||
for i in range(job_count):
|
|
||||||
job_semaphore.acquire()
|
|
||||||
|
|
||||||
name_ctr = 1
|
name_ctr = 1
|
||||||
name_prev = None
|
name_prev = None
|
||||||
for name, _, comment in list(sorted(output, key=lambda x: (x[0], x[1]))):
|
for name, _, comment in list(sorted(comments, key=lambda x: (x[0], x[1]))):
|
||||||
if name == name_prev:
|
if name == name_prev:
|
||||||
name_ctr += 1
|
name_ctr += 1
|
||||||
name = name + "_%i" % name_ctr
|
name = name + "_%i" % name_ctr
|
||||||
@ -326,8 +331,8 @@ def mkdoc(args, out_file=sys.stdout):
|
|||||||
''', file=out_file)
|
''', file=out_file)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
def mkdoc(args):
|
||||||
args = sys.argv[1:]
|
args = list(args)
|
||||||
out_path = None
|
out_path = None
|
||||||
for idx, arg in enumerate(args):
|
for idx, arg in enumerate(args):
|
||||||
if arg.startswith("-o"):
|
if arg.startswith("-o"):
|
||||||
@ -338,21 +343,28 @@ if __name__ == '__main__':
|
|||||||
print("-o flag requires an argument")
|
print("-o flag requires an argument")
|
||||||
exit(-1)
|
exit(-1)
|
||||||
break
|
break
|
||||||
try:
|
|
||||||
if out_path:
|
comments = extract_all(args)
|
||||||
|
|
||||||
|
if out_path:
|
||||||
|
try:
|
||||||
|
with open(out_path, 'w') as out_file:
|
||||||
|
write_header(comments, out_file)
|
||||||
|
except:
|
||||||
|
# In the event of an error, don't leave a partially-written
|
||||||
|
# output file.
|
||||||
try:
|
try:
|
||||||
with open(out_path, 'w') as out_file:
|
os.unlink(out_path)
|
||||||
mkdoc(args, out_file)
|
|
||||||
except:
|
except:
|
||||||
# In the event of an error, don't leave a partially-written
|
pass
|
||||||
# output file.
|
raise
|
||||||
try:
|
else:
|
||||||
os.unlink(out_path)
|
write_header(comments)
|
||||||
except:
|
|
||||||
pass
|
|
||||||
raise
|
if __name__ == '__main__':
|
||||||
else:
|
try:
|
||||||
mkdoc(args)
|
mkdoc(sys.argv[1:])
|
||||||
except NoFilenamesError:
|
except NoFilenamesError:
|
||||||
print('Syntax: %s [.. a list of header files ..]' % sys.argv[0])
|
print('Syntax: %s [.. a list of header files ..]' % sys.argv[0])
|
||||||
exit(-1)
|
exit(-1)
|
||||||
|
Loading…
Reference in New Issue
Block a user