mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-07 02:19:54 +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 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):
|
||||
# Split nested struct/union elements
|
||||
#
|
||||
# This loop was simpler at the original kernel-doc perl version, as
|
||||
# while ($members =~ m/$struct_members/) { ... }
|
||||
# reads 'members' string on each interaction.
|
||||
# Process struct/union members from the most deeply nested outward. The
|
||||
# trick is in the ^{ below - it prevents a match of an outer struct/union
|
||||
# until the inner one has been munged (removing the "{" in the process).
|
||||
#
|
||||
# Python behavior is different: it parses 'members' only once,
|
||||
# creating a list of tuples from the first interaction.
|
||||
#
|
||||
# On other words, this won't get nested structs.
|
||||
#
|
||||
# So, we need to have an extra loop on Python to override such
|
||||
# re limitation.
|
||||
|
||||
struct_members = KernRe(r'(struct|union)([^\{\};]+)(\{)([^\{\}]*)(\})([^\{\};]*)(;)')
|
||||
struct_members = KernRe(r'(struct|union)' # 0: declaration type
|
||||
r'([^\{\};]+)' # 1: possible name
|
||||
r'(\{)'
|
||||
r'([^\{\}]*)' # 3: Contents of declaration
|
||||
r'(\})'
|
||||
r'([^\{\};]*)(;)') # 5: Remaining stuff after declaration
|
||||
tuples = struct_members.findall(members)
|
||||
while tuples:
|
||||
for t in tuples:
|
||||
|
||||
Reference in New Issue
Block a user