Skip to content

Commit 1ab7d3c

Browse files
committed
improve documentation of generated code
1 parent 50b0493 commit 1ab7d3c

File tree

4 files changed

+54
-2388
lines changed

4 files changed

+54
-2388
lines changed

ctypes_generation/generate.py

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,53 @@ def generate_enums_for_file(self, file):
635635
self.emitline(" .. attribute:: {0}({1})".format(enum_name, enum_value))
636636
self.emitline("")
637637

638+
class WinFuncDocGenerator(NoTemplatedGenerator):
639+
def copy_template(self):
640+
self.emitline(".. module:: windows.generated_def.winfuncs")
641+
self.emitline("")
642+
self.emitline("Functions")
643+
self.emitline("----------")
644+
645+
646+
def generate(self):
647+
self.copy_template()
648+
for file in self.files:
649+
for function in file.data:
650+
self.generate_function_doc(function)
651+
652+
def generate_function_doc(self, function):
653+
param_list = ", ".join(name for t, name in function.params)
654+
self.emitline(".. function:: {0}({1})".format(function.name, param_list))
655+
self.emitline("")
656+
657+
658+
659+
class ComDocGenerator(NoTemplatedGenerator):
660+
def copy_template(self):
661+
self.emitline(".. module:: windows.generated_def.interfaces")
662+
self.emitline("")
663+
self.emitline("Interfaces")
664+
self.emitline("----------")
665+
666+
667+
def generate(self):
668+
self.copy_template()
669+
for file in self.files:
670+
interface = file.data
671+
self.generate_interface_doc(interface)
672+
673+
def generate_interface_doc(self, interface):
674+
self.emitline(".. class:: {0}".format(interface.name))
675+
self.emitline("")
676+
for method in interface.methods:
677+
self.emitline(" .. method:: {0}".format(method.name))
678+
self.emitline("")
679+
self.emitline("")
680+
681+
682+
683+
684+
638685
META_WALKER = """
639686
def generate_walker(namelist, target_module):
640687
def my_walker():
@@ -827,23 +874,25 @@ def modules_exports(self):
827874

828875
print("== Generating COM interfaces ==")
829876
# Generate COM interfaces
830-
com_module_generator = ModuleGenerator("interfaces", COMParsedFile, COMCtypesGenerator, None, from_here(r"definitions\com"))
877+
com_module_generator = ModuleGenerator("interfaces", COMParsedFile, COMCtypesGenerator, ComDocGenerator, from_here(r"definitions\com"))
831878
# Load the interface_to_iid file needed by the 'COMCtypesGenerator'
832879
com_module_generator.after_ctypes_generator_init = lambda cgen: cgen.parse_iid_file(from_here("definitions\\interface_to_iid.txt"))
833880
com_module_generator.parse_source_directory(recurse=True)
834881
com_module_generator.add_module_dependancy(structure_module_generator)
835882
com_module_generator.resolve_dependancies = com_module_generator.check_dependancies_without_flattening # No real flattening as we have circular dep in Interfaces VTBL
836883
com_module_generator.resolve_dep_and_generate([BasicTypeNodes()])
884+
com_module_generator.generate_doc(from_here(r"..\docs\source\interfaces_generated.rst"))
837885

838886
print("== Generating functions ==")
839887
# Generate function
840-
functions_module_generator = ModuleGenerator("winfuncs", FunctionParsedFile, FunctionCtypesGenerator, None, from_here(r"definitions\functions"))
888+
functions_module_generator = ModuleGenerator("winfuncs", FunctionParsedFile, FunctionCtypesGenerator, WinFuncDocGenerator, from_here(r"definitions\functions"))
841889
# no template file
842890
functions_module_generator.get_template_filename = lambda : None
843891
functions_module_generator.parse_source_directory()
844892
functions_module_generator.add_module_dependancy(structure_module_generator)
845893
functions_module_generator.add_module_dependancy(com_module_generator)
846894
functions_module_generator.resolve_dep_and_generate([BasicTypeNodes()])
895+
functions_module_generator.generate_doc(from_here(r"..\docs\source\winfuncs_generated.rst"))
847896

848897

849898
print("== Generating META file ==")

docs/source/generated.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ Here is every generated definition by type:
2222
windef_generated.rst
2323
ntstatus_generated.rst
2424
winstructs_generated.rst
25+
winfuncs_generated.rst
2526
winerror_generated.rst
27+
interfaces_generated.rst
2628

2729

2830

docs/source/winproxy.rst

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,4 @@ All errors raised by winproxy functions are instance of :class:`WinproxyError` (
102102

103103
.. attribute:: api_name
104104

105-
The name of the API that raised the exception
106-
107-
Functions in :mod:`windows.winproxy`
108-
""""""""""""""""""""""""""""""""""""
109-
110-
.. include:: winproxy_functions.rst
111-
105+
The name of the API that raised the exception

0 commit comments

Comments
 (0)