[I'll slow down soon, honest - real work is piling up...] The kerneldoc parsing phase gathers all of the information about the declarations of interest, then passes it through to the output phase as a dict that is an unstructured blob of information; this organization has its origins in the Perl version of the program. It results in an interface that is difficult to reason about, dozen-parameter function calls, and other ills. Introduce a new class (KdocItem) to carry this information between the parser and the output modules, and, step by step, modify the system to use this class in a more structured way. This could be taken further by creating a subclass of KdocItem for each declaration type (function, struct, ...), but that is probably more structure than we need. As a final step, add some structure for the accumulation of the output text. The result is (I hope) clearer code, the removal of a bunch of boilerplate, and no changes to the generated output. Jonathan Corbet (12): docs: kdoc; Add a rudimentary class to represent output items docs: kdoc: simplify the output-item passing docs: kdoc: drop "sectionlist" docs: kdoc: Centralize handling of the item section list docs: kdoc: remove the "struct_actual" machinery docs: kdoc: use self.entry.parameterlist directly in check_sections() docs: kdoc: Coalesce parameter-list handling docs: kdoc: Regularize the use of the declaration name docs: kdoc: straighten up dump_declaration() docs: kdoc: directly access the always-there KdocItem fields docs: kdoc: clean up check_sections() docs: kdoc: Improve the output text accumulation scripts/lib/kdoc/kdoc_files.py | 4 +- scripts/lib/kdoc/kdoc_item.py | 39 ++++ scripts/lib/kdoc/kdoc_output.py | 331 ++++++++++++++------------------ scripts/lib/kdoc/kdoc_parser.py | 162 +++------------- 4 files changed, 218 insertions(+), 318 deletions(-) create mode 100644 scripts/lib/kdoc/kdoc_item.py -- 2.49.0