mirror of
https://github.com/raspberrypi/linux.git
synced 2026-01-04 18:27:36 +00:00
docs: kdoc: Some rewrite_struct_members() commenting
Add comments to rewrite_struct_members() describing what it is actually doing, and reformat/comment the main struct_members regex so that it is (more) comprehensible to humans. Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net> Link: https://lore.kernel.org/r/20250807211639.47286-10-corbet@lwn.net
This commit is contained in:
@@ -647,22 +647,28 @@ class KernelDoc:
|
|||||||
return (r.group(1), r.group(3), r.group(2))
|
return (r.group(1), r.group(3), r.group(2))
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
#
|
||||||
|
# Rewrite the members of a structure or union for easier formatting later on.
|
||||||
|
# Among other things, this function will turn a member like:
|
||||||
|
#
|
||||||
|
# struct { inner_members; } foo;
|
||||||
|
#
|
||||||
|
# into:
|
||||||
|
#
|
||||||
|
# struct foo; inner_members;
|
||||||
|
#
|
||||||
def rewrite_struct_members(self, members):
|
def rewrite_struct_members(self, members):
|
||||||
# Split nested struct/union elements
|
|
||||||
#
|
#
|
||||||
# This loop was simpler at the original kernel-doc perl version, as
|
# Process struct/union members from the most deeply nested outward. The
|
||||||
# while ($members =~ m/$struct_members/) { ... }
|
# trick is in the ^{ below - it prevents a match of an outer struct/union
|
||||||
# reads 'members' string on each interaction.
|
# until the inner one has been munged (removing the "{" in the process).
|
||||||
#
|
#
|
||||||
# Python behavior is different: it parses 'members' only once,
|
struct_members = KernRe(r'(struct|union)' # 0: declaration type
|
||||||
# creating a list of tuples from the first interaction.
|
r'([^\{\};]+)' # 1: possible name
|
||||||
#
|
r'(\{)'
|
||||||
# On other words, this won't get nested structs.
|
r'([^\{\}]*)' # 3: Contents of declaration
|
||||||
#
|
r'(\})'
|
||||||
# So, we need to have an extra loop on Python to override such
|
r'([^\{\};]*)(;)') # 5: Remaining stuff after declaration
|
||||||
# re limitation.
|
|
||||||
|
|
||||||
struct_members = KernRe(r'(struct|union)([^\{\};]+)(\{)([^\{\}]*)(\})([^\{\};]*)(;)')
|
|
||||||
tuples = struct_members.findall(members)
|
tuples = struct_members.findall(members)
|
||||||
while tuples:
|
while tuples:
|
||||||
for t in tuples:
|
for t in tuples:
|
||||||
|
|||||||
Reference in New Issue
Block a user