From fc85c7088cbf74544d15fb970672c987b103048d Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Mon, 6 Feb 2023 12:45:17 +1100 Subject: [PATCH] code_clean: add 'use_nullptr' edit operation Also correct doc-string for use_brief_types. --- utils_maintenance/code_clean.py | 38 ++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/utils_maintenance/code_clean.py b/utils_maintenance/code_clean.py index 8d08e74..2169c27 100755 --- a/utils_maintenance/code_clean.py +++ b/utils_maintenance/code_clean.py @@ -496,7 +496,7 @@ class edit_generators: class use_brief_types(EditGenerator): """ - Use zero before the float suffix. + Use less verbose unsigned types. Replace: unsigned int @@ -526,6 +526,42 @@ class edit_generators: return edits + class use_nullptr(EditGenerator): + """ + Use ``nullptr`` instead of ``NULL`` for C++ code. + + Replace: + NULL + With: + nullptr + """ + @staticmethod + def edit_list_from_file(source: str, data: str, _shared_edit_data: Any) -> List[Edit]: + edits = [] + + # The user might exclude C++, if they forget, it is better not to operate on C. + if not source.lower().endswith((".h", ".c")): + return edits + + # `NULL` -> `nullptr`. + for match in re.finditer(r"\bNULL\b", data): + edits.append(Edit( + span=match.span(), + content='nullptr', + content_fail='__ALWAYS_FAIL__', + )) + + # There may be some remaining uses of `unsigned` without any integer type afterwards. + # `unsigned` -> `uint`. + for match in re.finditer(r"\bunsigned\b", data): + edits.append(Edit( + span=match.span(), + content='uint', + content_fail='__ALWAYS_FAIL__', + )) + + return edits + class unused_arg_as_comment(EditGenerator): """ Replace `UNUSED(argument)` in C++ code. -- GitLab