From: John Snow Date: Tue, 11 Mar 2025 03:42:39 +0000 (-0400) Subject: qapi/source: allow multi-line QAPISourceInfo advancing X-Git-Tag: v10.0.0-rc0~11^2~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=36e4182f4086edf3e7bbc5202bd692678d454793;p=thirdparty%2Fqemu.git qapi/source: allow multi-line QAPISourceInfo advancing This is for the sake of the new rST generator (the "transmogrifier") so we can advance multiple lines on occasion while keeping the generated<-->source mappings accurate. next_line now simply takes an optional n parameter which chooses the number of lines to advance. The next patch will use this when converting section syntax in free-form documentation to more traditional rST section header syntax, which does not always line up 1:1 for line counts. For example: ``` ## # = Section <-- Info is pointing here, "L1" # # Lorem Ipsum ## ``` would be transformed to rST as: ``` ======= <-- L1 Section <-- L1 ======= <-- L1 <-- L2 Lorem Ipsum <-- L3 ``` After consuming the single "Section" line from the source, we want to advance the source pointer to the next non-empty line which requires jumping by more than one line. Signed-off-by: John Snow Reviewed-by: Markus Armbruster Message-ID: <20250311034303.75779-42-jsnow@redhat.com> Signed-off-by: Markus Armbruster --- diff --git a/scripts/qapi/source.py b/scripts/qapi/source.py index 7b379fdc92..ffdc3f482a 100644 --- a/scripts/qapi/source.py +++ b/scripts/qapi/source.py @@ -47,9 +47,9 @@ class QAPISourceInfo: self.defn_meta = meta self.defn_name = name - def next_line(self: T) -> T: + def next_line(self: T, n: int = 1) -> T: info = copy.copy(self) - info.line += 1 + info.line += n return info def loc(self) -> str: